Cascade - CSS Fundamentals

Cascade - CSS Fundamentals

bottom up, the core of CSS

                        PHA+TGV04oCZcyBiZWdpbiB3aXRoIHRoZSBjYXNjYWRlLCB0aGUgPHN0cm9uZz48ZW0+QzwvZW0+PC9zdHJvbmc+IGluIENTUy4gSG93IGl0IHdvcmtzIGFuZCBob3cgdG8gd29yayB3aXRoIGl0IHByYWN0aWNhbGx5LjwvcD4KCjxoMiBpZD0idGhlLWNhc2NhZGUiPlRoZSBDYXNjYWRlPC9oMj4KCjxibG9ja3F1b3RlPgogIDxwPlRoZSA8c3Ryb25nPmNhc2NhZGU8L3N0cm9uZz4gaXMgYW4gYWxnb3JpdGhtIHRoYXQgZGVmaW5lcyBob3cgdG8gY29tYmluZSBwcm9wZXJ0eSB2YWx1ZXMgb3JpZ2luYXRpbmcgZnJvbSBkaWZmZXJlbnQgc291cmNlcy4gSXQgbGllcyBhdCB0aGUgY29yZSBvZiBDU1MsIGFzIGVtcGhhc2l6ZWQgYnkgdGhlIG5hbWU6IDxzdHJvbmc+Q2FzY2FkaW5nPC9zdHJvbmc+IFN0eWxlIFNoZWV0cy48L3A+CjwvYmxvY2txdW90ZT4KCjxwPkZ1bmRhbWVudGFsbHksIENTUyBpcyBhYm91dCBkZWNsYXJpbmcgc3R5bGUgcnVsZXMuIFRoZXJlIGFyZSBvZnRlbiBzZXZlcmFsIHdheXMgdG8gYWNjb21wbGlzaCB0aGUgc2FtZSB0aGluZyBpbiBDU1MuIERlcGVuZGluZyBvbiB3aGljaCBzb2x1dGlvbiB5b3UgdXNlLCB5b3UgbWF5IGdldCB3aWxkbHkgZGlmZmVyZW50IHJlc3VsdHMgd2hlbiB0aGUgc3RydWN0dXJlIG9mIHRoZSBIVE1MIGNoYW5nZXMsIG9yIHdoZW4gdGhlIHN0eWxlcyBhcmUgYXBwbGllZCB0byBkaWZmZXJlbnQgcGFnZXMuIEEga2V5IHBhcnQgb2YgQ1NTIGRldmVsb3BtZW50IGNvbWVzIGRvd24gdG8gd3JpdGluZyBydWxlcyBpbiBzdWNoIGEgd2F5IHRoYXQgdGhleeKAmXJlIHByZWRpY2F0YWJsZS4gV2hpbGUgcHJlZGljdGluZyBob3cgcnVsZXMgYmVoYXZlIHJlcXVpcmVzIGFuIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNhc2NhZGUuPC9wPgoKPHA+V2hlbiB0d28gb3IgbW9yZSBydWxlcyB0YXJnZXQgdGhlIHNhbWUgZWxlbWVudCBvbiB0aGUgcGFnZSwgdGhlIHJ1bGVzIG1heSBwcm92aWRlIGNvbmZsaWN0aW5nIGRlY2xhcmF0aW9ucy4gRm9yIGV4YW1wbGUgaW4gdGhlIGZvbGxvd2luZyBtYXJrdXBzOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLWh0bWwgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibnQiPiZsdDtoZWFkZXI8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYSI+Y2xhc3M9PC9zcGFuPjxzcGFuIGNsYXNzPSJzIj4icGFnZS1oZWFkZXIiPC9zcGFuPjxzcGFuIGNsYXNzPSJudCI+Jmd0Ozwvc3Bhbj4KICA8c3BhbiBjbGFzcz0ibnQiPiZsdDtoMTwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5hIj5pZD08L3NwYW4+PHNwYW4gY2xhc3M9InMiPiJwYWdlLXRpdGxlIjwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5hIj5jbGFzcz08L3NwYW4+PHNwYW4gY2xhc3M9InMiPiJ0aXRsZSI8L3NwYW4+PHNwYW4gY2xhc3M9Im50Ij4mZ3Q7PC9zcGFuPldvbWJhdCBDb2ZmZWUgUm9hc3RlcnM8c3BhbiBjbGFzcz0ibnQiPiZsdDsvaDEmZ3Q7PC9zcGFuPgo8c3BhbiBjbGFzcz0ibnQiPiZsdDsvaGVhZGVyJmd0Ozwvc3Bhbj4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+d2l0aCB0aGUgZm9sbG93aW5nIENTUyBydWxlczo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1jc3MgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibnQiPmgxPC9zcGFuPiA8c3BhbiBjbGFzcz0icCI+ezwvc3Bhbj4KICA8c3BhbiBjbGFzcz0ibmwiPmZvbnQtZmFtaWx5PC9zcGFuPjxzcGFuIGNsYXNzPSJwIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ibmIiPnNlcmlmPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPgo8c3BhbiBjbGFzcz0icCI+fTwvc3Bhbj4KPHNwYW4gY2xhc3M9Im5mIj4jcGFnZS10aXRsZTwvc3Bhbj4gPHNwYW4gY2xhc3M9InAiPns8L3NwYW4+CiAgPHNwYW4gY2xhc3M9Im5sIj5mb250LWZhbWlseTwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ojwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5iIj5zYW5zLXNlcmlmPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPgo8c3BhbiBjbGFzcz0icCI+fTwvc3Bhbj4KPHNwYW4gY2xhc3M9Im5jIj4udGl0bGU8L3NwYW4+IDxzcGFuIGNsYXNzPSJwIj57PC9zcGFuPgogIDxzcGFuIGNsYXNzPSJubCI+Zm9udC1mYW1pbHk8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiI+bW9ub3NwYWNlPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPgo8c3BhbiBjbGFzcz0icCI+fTwvc3Bhbj4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhlIHRpdGxlIGNhbuKAmXQgaGF2ZSB0aHJlZSBmb250cyBhdCBvbmUgdGltZS4gU28sIHdoaWNoIG9uZSB3aWxsIGl0IGJlPzwvcD4KCjxwPlRvIGRldGVybWluZSB0aGUgYW5zd2VyLCB5b3Ugc2hvdWxkIGtub3cgdGhhdCB0aGUgYnJvd3NlciBmb2xsb3dzIGEgc2V0IG9mIHJ1bGVzLCBzbyB0aGUgcmVzdWx0IGlzIHByZWRpY3RhYmxlLiBJbiB0aGlzIGNhc2UsIHRoZSBydWxlcyBkaWN0YXRlIHRoYXQgdGhlIHNlY29uZCBkZWNsYXJhdGlvbiwgd2hpY2ggaGFzIGFuIElEIHNlbGVjdG9yLCB3aW5zOyB0aGUgdGl0bGUgd2lsbCBoYXZlIGEgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5zYW5zLXNlcmlmPC9jb2RlPiBmb250LjwvcD4KCjxwPlRoZSA8ZW0+Y2FzY2FkZTwvZW0+IGlzIHRoZSBuYW1lIGZvciB0aGlzIHNldCBvZiBydWxlcy4gSXQgZGV0ZXJtaW5lcyBob3cgY29uZmxpY3RzIGFyZSByZXNvbHZlZCwgYW5kIGl04oCZcyBhIGZ1bmRhbWVudGFsIHBhcnQgb2YgaG93IHRoZSBsYW5ndWFnZSB3b3Jrcy4gV2hlbiBkZWNsYXJhdGlvbnMgY29uZmxpY3QsIHRoZSBjYXNjYWRlIGNvbnNpZGVycyB0aHJlZSB0aGluZ3MgdG8gcmVzb2x2ZSB0aGUgZGlmZmVyZW5jZTo8L3A+Cgo8dWw+CiAgPGxpPjxlbT5TdHlsZXNoZWV0IG9yaWdpbjwvZW0+IC0gd2hlcmUgdGhlIHN0eWxlcyBjb21lIGZyb20uIFlvdXIgc3R5bGVzIGFyZSBhcHBsaWVkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGJyb3dzZXLigJlzIGRlZmF1bHQgc3R5bGVzLjwvbGk+CiAgPGxpPjxlbT5TZWxlY3RvciBzcGVjaWZpY2l0eTwvZW0+IC0gd2hpY2ggc2VsZWN0b3JzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHdoaWNoLjwvbGk+CiAgPGxpPjxlbT5Tb3VyY2Ugb3JkZXI8L2VtPiAtIG9yZGVyIGluIHdoaWNoIHN0eWxlcyBhcmUgZGVjbGFyZWQgaW4gdGhlIHN0eWxlc2hlZXQuPC9saT4KPC91bD4KCjxwPjxpbWcgc3JjPSJodHRwczovL2kubG9saS5uZXQvMjAxOS8wNi8yMS81ZDBjOWVmODdhMTFiNjI3NzkucG5nIiBhbHQ9IkhpZ2gtbGV2ZWwgZmxvd2NoYXJ0IG9mIHRoZSBjYXNjYWRlIHNob3dpbmcgZGVjbGFyYXRpb24gcHJlY2VkZW5jZSAtIENTUyBpbiBEZXB0aCAoMjAxOCkiIC8+PC9wPgoKPHA+VGhlc2UgcnVsZXMgYWxsb3cgYnJvd3NlcnMgdG8gYmVoYXZlIHByZWRpY2F0YWJseSB3aGVuIHJlc29sdmluZyBhbnkgYW1iaWd1aXR5IGluIHRoZSBDU1MuPC9wPgoKPGJsb2NrcXVvdGU+CiAgPHA+Tm90ZSB0aGF0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9AaW1wb3J0Ij48Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPkBpbXBvcnQ8L2NvZGU+PC9hPiBhbmQgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0BjaGFyc2V0Ij48Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPkBjaGFyc2V0PC9jb2RlPjwvYT4gb2JleSBzcGVjaWZpYyBhbGdvcml0aG1zIGFuZCBhcmVu4oCZdCBhZmZlY3RlZCBieSB0aGUgY2FzY2FkZSBhbGdvcml0aG0uPC9wPgo8L2Jsb2NrcXVvdGU+Cgo8aDIgaWQ9InN0eWxlc2hlZXQtb3JpZ2luIj5TdHlsZXNoZWV0IE9yaWdpbjwvaDI+Cgo8cD5UaGVyZeKAmXJlIGRpZmZlcmVudCB0eXBlcywgb3Igb3JpZ2lucywgb2Ygc3R5bGVzaGVldHMuIFlvdXJzIGFyZSBjYWxsZWQgPGVtPmF1dGhvcjwvZW0+IHN0eWxlczsgdGhlcmUgYXJlIGFsc28gdXNlciBhZ2VudCBzdHlsZXMsIHdoaWNoIGFyZSB0aGUgYnJvd3NlcuKAmXMgZGVmYXVsdCBzdHlsZXMuIFVzZXIgYWdlbnQgc3R5bGVzIGhhdmUgbG93ZXIgcHJpb3JpdHkuPC9wPgoKPGJsb2NrcXVvdGU+CiAgPHA+U29tZSBicm93c2VycyBsZXQgdXNlcnMgZGVmaW5lIGEgPGVtPnVzZXIgc3R5bGVzaGVldDwvZW0+LiBUaGlzIGlzIGNvbnNpZGVyZWQgYSB0aGlyZCBvcmlnaW4sIHdpdGggYSBwcmlvcml0eSBiZXR3ZWVuIHVzZXIgYWdlbnQgYW5kIGF1dGhvciBzdHlsZXMuPC9wPgo8L2Jsb2NrcXVvdGU+Cgo8cD5UaGUgdXNlciBhZ2VudCBzdHlsZXMgc2V0IHRoaW5ncyB5b3UgdHlwaWNhbGx5IHdhbnQsIHNvIHRoZXkgZG9u4oCZdCBkbyBhbnl0aGluZyBlbnRpcmVseSB1bmV4cGVjdGVkLiBXaGVuIHlvdSBkb27igJl0IGxpa2Ugd2hhdCB0aGV5IGRvIHRvIGEgY2VydGFpbiBwcm9wZXJ0eSwganVzdCBzZXQgeW91ciBvd24gdmFsdWVzIGluIHlvdXIgc3R5bGVzaGVldC48L3A+Cgo8aDMgaWQ9ImltcG9ydGFudC1kZWNsYXJhdGlvbnMiPiFpbXBvcnRhbnQgRGVjbGFyYXRpb25zPC9oMz4KCjxwPkEgZGVjbGFyYXRpaW9uIGNhbiBiZSBtYXJrZWQgaW1wb3J0YW50IGJ5IGFkZGluZyA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPiFpbXBvcnRhbnQ8L2NvZGU+IHRvIHRoZSBlbmQgb2YgdGhlIGRlY2xhcmF0aW9uLCBiZWZvcmUgdGhlIHNlbWljb2xvbjo8L3A+Cgo8ZGl2IGNsYXNzPSJsYW5ndWFnZS1jc3MgaGlnaGxpZ2h0ZXItcm91Z2UiPjxkaXYgY2xhc3M9ImhpZ2hsaWdodCI+PHByZSBjbGFzcz0iaGlnaGxpZ2h0Ij48Y29kZT48c3BhbiBjbGFzcz0ibnQiPmNvbG9yPC9zcGFuPjxzcGFuIGNsYXNzPSJvIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ibnQiPnJlZDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im8iPiE8L3NwYW4+PHNwYW4gY2xhc3M9Im50Ij5pbXBvcnRhbnQ8L3NwYW4+PHNwYW4gY2xhc3M9Im8iPjs8L3NwYW4+CjwvY29kZT48L3ByZT48L2Rpdj48L2Rpdj4KCjxwPlRoZXNlIGRlY2xhcmF0aW9ucyBtYXJrZWQgd2l0aCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPiFpbXBvcnRhbnQ8L2NvZGU+IGFyZSB0cmVhdGVkIGFzIGEgaGlnaGVyLXByaW9yaXR5IG9yaWdpbiwgc28gdGhlIG92ZXJhbGwgb3JkZXIgb2YgcHJlZmVyZW5jZSwgaW4gZGVjcmVhc2luZyBvcmRlciwgaXMgdGhpczo8L3A+Cgo8b2w+CiAgPGxpPkF1dGhvciBpbXBvcnRhbnQ7PC9saT4KICA8bGk+QXV0aG9yOzwvbGk+CiAgPGxpPlVzZXIgYWdlbnQuPC9saT4KPC9vbD4KCjxwPlRoZSBjYXNjYWRlIGluZGVwZW5kZW50bHkgcmVzb2x2ZXMgY29uZmxpY3RzIGZvciBldmVyeSBwcm9wZXJ0eSBvZiBldmVyeSBlbGVtZW50cyBvbiB0aGUgcGFnZS48L3A+Cgo8aDMgaWQ9InNwZWNpZmljaXR5Ij5TcGVjaWZpY2l0eTwvaDM+Cgo8cD5JZiBjb25mbGljdGluZyBkZWNsYXJhdGlvbnMgY2Fu4oCZdCBiZSByZXNvbHZlZCBiYXNlZCBvbiB0aGVpciBvcmlnaW4sIHRoZSBicm93c2VyIG5leHQgdHJpZXMgdG8gcmVzb2x2ZSB0aGVtIGJ5IGxvb2tpbmcgYXQgdGhlaXIgPGVtPnNwZWNpZmljaXR5PC9lbT4uIFRoZSBicm93c2VycyBldmFsdWF0ZXMgc3BlY2lmaWNpdHkgaW4gdHdvIHBhcnRzOiBzdHlsZXMgYXBwbGllZCBpbmxpbmUgaW4gdGhlIEhUTUwgYW5kIHN0eWxlcyBhcHBsaWVkIHVzaW5nIGEgc2VsZWN0b3IuPC9wPgoKPGg0IGlkPSJpbmxpbmUtc3R5bGVzIj5JbmxpbmUgU3R5bGVzPC9oND4KCjxwPklmIHlvdSB1c2UgYW4gSFRNTCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPnN0eWxlPC9jb2RlPiBhdHRyaWJ1dGUgdG8gYXBwbHkgc3R5bGVzLCB0aGUgZGVjbGFyYXRpb25zIGFyZSBhcHBsaWVkIG9ubHkgdG8gdGhlIGVsZW1lbnQuIFRoZXNlIGFyZSwgaW4gZWZmZWN0LCDigJxzY29wZWTigJ0gZGVjbGFyYXRpb25zLCB3aGljaCBvdmVycmlkZSBhbnkgZGVjbGFyYXRpb25zIGFwcGxpZWQgZnJvbSB5b3VyIHN0eWxlc2hlZXQgb3IgYSA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPiZsdDtzdHlsZSZndDs8L2NvZGU+IHRhZy48L3A+Cgo8cD5UbyBvdmVycmlkZSBpbmxpbmUgZGVjbGFyYXRpb25zIGluIHlvdXIgc3R5bGVzaGVldCwgeW914oCZbGwgbmVlZCB0byBhZGQgYW4gPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj4haW1wb3J0YW50PC9jb2RlPiB0byB0aGUgZGVjbGFyYXRpb24sIHNoaWZ0aW5nIGl0IGludG8gYSBoaWdoZXItcHJpb3JpdHkgb3JpZ2luLiBJZiB0aGUgaW5saW5lIHN0eWxlcyBhcmUgbWFya2VkIGltcG9ydGFudCwgdGhlbiBub3RoaW5nIGNhbiBvdmVycmlkZSB0aGVtLjwvcD4KCjxoNCBpZD0ic2VsZWN0b3Itc3BlY2lmaWNpdHkiPlNlbGVjdG9yIFNwZWNpZmljaXR5PC9oND4KCjxwPlRoZSBzZWNvbmQgcGFydCBvZiBzcGVjaWZpY2l0eSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzZWxlY3RvcnMuIERpZmZlcmVudCB0eXBlcyBvZiBzZWxlY3RvcnMgaGF2ZSBkaWZmZXJlbnQgc3BlY2lmaWNpdGllcy4gQW4gSUQgc2VsZWN0b3IgaGFzIGEgaGlnaGVyIHNwZWNpZmljaXR5IHRoYW4gYSBjbGFzcyBzZWxlY3Rvci4gU2ltaWxhcmx5LCBhIGNsYXNzIHNlbGVjdG9yIGhhcyBhIGhpZ2hlciBzcGVjaWZpY2l0eSB0aGFuIGEgdGFnIHNlbGVjdG9yIChhbHNvIGNhbGxlZCBhIDxlbT50eXBlIHNlbGVjdG9yPC9lbT4pLjwvcD4KCjxwPlRoZSBleGFjdCBydWxlcyBvZiBzcGVjaWZpY2l0eSBhcmU6PC9wPgoKPG9sPgogIDxsaT5JZiBhIHNlbGVjdG9yIGhhcyBtb3JlIElEcywgaXQgd2lucyAodGhhdCBpcywgaXQgaXMgbW9yZSBzcGVjaWZpYykuPC9saT4KICA8bGk+SWYgdGhhdCByZXN1bHRzIGluIGEgdGllLCB0aGUgc2VsZWN0b3Igd2l0aCB0aGUgbW9zdCBjbGFzc2VzIHdpbnMuPC9saT4KICA8bGk+SWYgdGhhdCByZXN1bHRzIGluIGEgdGllLCB0aGUgc2VsZWN0b3Igd2l0aCB0aGUgbW9zdCB0YWcgbmFtZXMgd2lucy48L2xpPgo8L29sPgoKPHA+Rm9yIGV4YW1wbGU6PC9wPgoKPGRpdiBjbGFzcz0ibGFuZ3VhZ2UtY3NzIGhpZ2hsaWdodGVyLXJvdWdlIj48ZGl2IGNsYXNzPSJoaWdobGlnaHQiPjxwcmUgY2xhc3M9ImhpZ2hsaWdodCI+PGNvZGU+PHNwYW4gY2xhc3M9ImMiPi8qICgxKSBmb3VyIHRhZ3MgKi88L3NwYW4+CjxzcGFuIGNsYXNzPSJudCI+aHRtbDwvc3Bhbj4gPHNwYW4gY2xhc3M9Im50Ij5ib2R5PC9zcGFuPiA8c3BhbiBjbGFzcz0ibnQiPmhlYWRlcjwvc3Bhbj4gPHNwYW4gY2xhc3M9Im50Ij5oMTwvc3Bhbj4gPHNwYW4gY2xhc3M9InAiPns8L3NwYW4+CiAgPHNwYW4gY2xhc3M9Im5sIj5jb2xvcjwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ojwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5vIj5ibHVlPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPgo8c3BhbiBjbGFzcz0icCI+fTwvc3Bhbj4KCjxzcGFuIGNsYXNzPSJjIj4vKiAoMikgdGhyZWUgdGFncyBhbmQgb25lIGNsYXNzICovPC9zcGFuPgo8c3BhbiBjbGFzcz0ibnQiPmJvZHk8L3NwYW4+IDxzcGFuIGNsYXNzPSJudCI+aGVhZGVyPC9zcGFuPjxzcGFuIGNsYXNzPSJuYyI+LnBhZ2UtaGVhZGVyPC9zcGFuPiA8c3BhbiBjbGFzcz0ibnQiPmgxPC9zcGFuPiA8c3BhbiBjbGFzcz0icCI+ezwvc3Bhbj4KICA8c3BhbiBjbGFzcz0ibmwiPmNvbG9yPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ibm8iPm9yYW5nZTwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4KPHNwYW4gY2xhc3M9InAiPn08L3NwYW4+Cgo8c3BhbiBjbGFzcz0iYyI+LyogKDMpIHR3byBjbGFzc2VzICovPC9zcGFuPgo8c3BhbiBjbGFzcz0ibmMiPi5wYWdlLWhlYWRlcjwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5jIj4udGl0bGU8L3NwYW4+IDxzcGFuIGNsYXNzPSJwIj57PC9zcGFuPgogIDxzcGFuIGNsYXNzPSJubCI+Y29sb3I8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJubyI+Z3JlZW48L3NwYW4+PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+CjxzcGFuIGNsYXNzPSJwIj59PC9zcGFuPgoKPHNwYW4gY2xhc3M9ImMiPi8qICg0KSBvbmUgSUQgKi88L3NwYW4+CjxzcGFuIGNsYXNzPSJuZiI+I3BhZ2UtdGl0bGU8L3NwYW4+IDxzcGFuIGNsYXNzPSJwIj57PC9zcGFuPgogIDxzcGFuIGNsYXNzPSJubCI+Y29sb3I8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJubyI+cmVkPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPgo8c3BhbiBjbGFzcz0icCI+fTwvc3Bhbj4KPC9jb2RlPjwvcHJlPjwvZGl2PjwvZGl2PgoKPHA+VGhlIG1vc3Qgc3BlY2lmaWMgc2VsZWN0b3IgaGVyZSBpcyAoNCksIHdpdGggb25lIElELiBUaGUgbmV4dCBzcGVjaWZpYyBpcyAoMyksIHdpdGggdHdvIGNsYXNzIG5hbWVzLiBTZWxlY3RvciAoMykgaGFzIGEgaGlnaGVyIHNwZWNpZmljaXR5IHRoYW4gc2VsZWN0b3IgKDIpLCBkZXNwaXRlIGl0cyBsZW5ndGg6IHR3byBjbGFzc2VzIGFyZSBtb3JlIHNwZWNpZmljIHRoYW4gb25lIGNsYXNzLiBUaGUgbGVhc3Qgc3BlY2lmaWMgc2VsZWN0b3IgaXMgKDEpLCBldmVuIGl0IGhhcyBmb3VyIGVsZW1lbnQgdHlwZXMgKHRhZyBuYW1lcykuPC9wPgoKPGJsb2NrcXVvdGU+CiAgPHA+UHNldWRvLWNsYXNzIHNlbGVjdG9ycyAoPGVtPmUuZy48L2VtPiwgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj46aG92ZXI8L2NvZGU+KSBhbmQgYXR0cmlidXRlIHNlbGVjdG9ycyAoPGVtPmUuZy48L2VtPiwgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5bdHlwZT0iaW5wdXQiXTwvY29kZT4pIGVhY2ggaGF2ZSB0aGUgc2FtZSBzcGVjaWZpYyBhcyBhIGNsYXNzIHNlbGVjdG9yLiBUaGUgdW5pdmVyc2FsIHNlbGVjdG9yICg8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPio8L2NvZGU+KSBhbmQgY29tYmluYXRvcnMgKDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+Jmd0OzwvY29kZT4sIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+KzwvY29kZT4sIGFuZCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPn48L2NvZGU+KSBoYXZlIG5vIGVmZmVjdCBvbiBzcGVjaWZpY2l0eS48L3A+CjwvYmxvY2txdW90ZT4KCjxwPklmIHlvdSBhZGQgYSBkZWNsYXJhdGlvbiB0byB5b3VyIENTUyBhbmQgaXQgc2VlbXMgaGF2ZSBubyBlZmZlY3QsIG9mdGVuIGl04oCZcyBiZWNhdXNlIGEgbW9yZSBzcGVjaWZpYyBydWxlIGlzIG92ZXJyaWRpbmcgaXQuPC9wPgoKPGg0IGlkPSJhLW5vdGF0aW9uLWZvci1zcGVjaWZpY2l0eSI+QSBOb3RhdGlvbiBmb3IgU3BlY2lmaWNpdHk8L2g0PgoKPHA+QSBjb21tb24gd2F5IHRvIGluZGljYXRlIHNwZWNpZmljaXR5IGlzIGluIGEgbnVtYmVyIGZvcm0sIG9mdGVuIHdpdGggY29tbWFzIGJldHdlZW4gZWFjaCBudW1iZXIuIEZvciBleGFtcGxlLCDigJwxLDIsMuKAnSBpbmRpY2F0ZXMgYSBzcGVjaWZpY2l0eSBvZiBvbmUgSUQsIHR3byBjbGFzc2VzLCBhbmQgdHdvIHRhZ3MuIElEcyBoYXZpbmcgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgYXJlIGxpc3RlZCBmaXJzdCwgZm9sbG93ZWQgYnkgY2xhc3NlcywgdGhlbiB0YWdzLjwvcD4KCjxwPlRoZSBzZWxlY3RvciA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPiNwYWdlLWhlYWRlciAjcGFnZS10aXRsZTwvY29kZT4gaGFzIHR3byBJRHMsIG5vIGNsYXNzZXMsIGFuZCBubyB0YWdzLiBXZSBjYW4gc2F5IHRoaXMgc2VsZWN0b3IgaGFzIGEgc3BlY2lmaWNpdHkgb2Yg4oCcMiwwLDDigJ0uIFRoZSA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPnVsIGxpPC9jb2RlPiwgd2l0aCB0d28gdGFncyBidXQgbm8gSURzIG9yIGNsYXNzZXMsIGhhcyBhIHNwZWNpZmljaXR5IG9mIOKAnDAsMCwy4oCdLjwvcD4KCjxwPkl0IG5vdyBiZWNvbWVzIGEgbWF0dGVyIG9mIGNvbXBhcmluZyB0aGUgbnVtYmVycyB0byBkZXRlcm1pbmUgd2hpY2ggc2VsZWN0b3IgaXMgbW9yZSBzcGVjaWZpYy4gQSBzcGVjaWZpY2l0eSBvZiDigJwxLDAsMOKAnSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYSBzcGVjaWZpY2l0eSBvZiDigJwwLDIsMuKAnSBhbmQgZXZlciBvdmVyIOKAnDAsMTAsMOKAnS48L3A+Cgo8cD5PY2Nhc2lvbmFsbHksIHBlb3BsZSB1c2UgYSBmb3VyLW51bWJlciBub3RhdGlvbiB3aXRoIGEgMCBvciAxIGluIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IHRvIHJlcHJlc2VudCB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaXMgYXBwbGllZCB2aWEgaW5saW5lIHN0eWxlcy4gSW4gdGhpcyBjYXNlLCBhbiBpbmxpbmUgc3R5bGUgaGFzIGEgc3BlY2lmaWNpdHkgb2Yg4oCcMSwwLDAsMOKAnS4gVGhpcyB3b3VsZCBvdmVycmlkZSBzdHlsZXMgYXBwbGllZCB2aWEgc2VsZWN0b3JzLCB3aGljaCBjb3VsZCBiZSBpbmRpY2F0ZWQgYXMgaGF2aW5nIHNwZWNpZmljaXRpZXMgb2Yg4oCcMCwxLDIsMOKAnSBvciBzb21ldGhpbmcgc2ltaWxhci48L3A+Cgo8aDQgaWQ9InNwZWNpZmljaXR5LWNvbnNpZGVyYXRpb25zIj5TcGVjaWZpY2l0eSBDb25zaWRlcmF0aW9uczwvaDQ+Cgo8cD5UbyByYWlzZSB0aGUgc3BlY2lmaWNpdHksIHRoZSBxdWlja2VzdCBmaXggaXMgdG8gYWRkIGFuIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+IWltcG9ydGFudDwvY29kZT4gdG8gdGhlIGRlY2xhcmF0aW9uIHlvdSB3YW50IHRvIGZhdm9yLiBUaGlzIHdvcmtzIGJlY2F1c2UgdGhlIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+IWltcG9ydGFudDwvY29kZT4gYW5ub3RhdGlvbiByYWlzZXMgdGhlIGRlY2xhcmF0aW9uIHRvIGEgaGlnaGVyIHByaW9yaXR5IG9yaWdpbi4gU3VyZSwgaXTigJlzIGVhc3ksIGJ1dCBpdOKAmXMgYWxzbyBhIG5haXZlIGZpeCBhbmQgbm90IHJlY29tbWVuZGVkLjwvcD4KCjxwPkluc3RlYWQgb2YgPGVtPnJhaXNpbmc8L2VtPiB0aGUgc3BlY2lmaWNpdHkgb2YgdGhlIHNlbGVjdG9yLCB3ZSBjYW4gYWxzbyA8ZW0+bG93ZXI8L2VtPiB0aGUgc3BlY2lmaWNpdHkgb2YgdGhlIHNlbGVjdG9yIHRvIGdldCB0aGUgc2FtZSByZXN1bHQuIEl0IGlzIGdlbmVyYWxseSBiZXN0IHRvIGtlZXAgc3BlY2lmaWNpdHkgbG93IHdoZW4geW91IGNhbiwgc28gd2hlbiB5b3UgbmVlZCB0byBvdmVycmlkZSBzb21ldGhpbmcsIHlvdXIgb3B0aW9ucyBhcmUgb3Blbi48L3A+Cgo8aDMgaWQ9InNvdXJjZS1vcmRlci1vZi1zdHlsZXNoZWV0Ij5Tb3VyY2UgT3JkZXIgb2YgU3R5bGVzaGVldDwvaDM+Cgo8cD5UaGUgdGhpcmQgYW5kIGZpbmFsIHN0ZXAgdG8gcmVzb2x2aW5nIHRoZSBjYXNjYWRlIGlzIHNvdXJjZSBvcmRlci4gSWYgdGhlIG9yaWdpbiBhbmQgdGhlIHNwZWNpZmljaXR5IGFyZSB0aGUgc2FtZSwgdGhlbiB0aGUgZGVjbGFyYXRpb24gdGhhdCBhcHBlYXJzIGxhdGVyIGluIHRoZSBzdHlsZXNoZWV0LCBvciBhcHBlYXJzIGluIGEgc3R5bGVzaGVldCBpbmNsdWRlZCBsYXRlciBvbiB0aGUgcGFnZSwgdGFrZXMgcHJlY2VkZW5jZS4gVGhpcyBtZWFucyB5b3UgY2FuIG1hbmlwdWxhdGUgdGhlIHNvdXJjZSBvcmRlciB0byBzdHlsZSB5b3VyIGZlYXR1cmVkIGxpbmsuIElmIHlvdSBtYWtlIHRoZSB0d28gY29uZmxpY3Rpbmcgc2VsZWN0b3JzIGVxdWFsIGluIHNwZWNpZmljaXR5LCB0aGVuIHdoaWNoZXZlciBhcHBlYXJzIGxhc3Qgd2lucy48L3A+Cgo8aDQgaWQ9Imxpbmstc3R5bGVzLWFuZC1zb3VyY2Utb3JkZXIiPkxpbmsgU3R5bGVzIGFuZCBTb3VyY2UgT3JkZXI8L2g0PgoKPHA+Rm9yIHN0eWxpbmcgbGlua3MgKDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+Jmx0O2EmZ3Q7PC9jb2RlPiB0YWdzKSwgaXQgc2hvdWxkIGdvIGluIGEgY2VydGFpbiBvcmRlci4gVGhhdOKAmXMgYmVjYXVzZSBzb3VyY2Ugb3JkZXIgYWZmZWN0cyB0aGUgY2FzY2FkZS4gVGhpcyBsaXN0aW5nIHNob3dzIHN0eWxlcyBmb3IgbGlua3Mgb24gYSBwYWdlIGluIHRoZSDigJxjb3JyZXTigJ0gb3JkZXIsIHRoZSBzby1jYWxsZWQg4oCcPHN0cm9uZz5MPC9zdHJvbmc+bzxzdHJvbmc+Vjwvc3Ryb25nPmUvPHN0cm9uZz5IQTwvc3Ryb25nPnRl4oCdIG9yZGVyOjwvcD4KCjxkaXYgY2xhc3M9Imxhbmd1YWdlLWNzcyBoaWdobGlnaHRlci1yb3VnZSI+PGRpdiBjbGFzcz0iaGlnaGxpZ2h0Ij48cHJlIGNsYXNzPSJoaWdobGlnaHQiPjxjb2RlPjxzcGFuIGNsYXNzPSJudCI+YTwvc3Bhbj48c3BhbiBjbGFzcz0ibmQiPjpsaW5rPC9zcGFuPiA8c3BhbiBjbGFzcz0icCI+ezwvc3Bhbj4KICA8c3BhbiBjbGFzcz0ibmwiPmNvbG9yPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ibm8iPmJsdWU8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+CiAgPHNwYW4gY2xhc3M9Im5sIj50ZXh0LWRlY29yYXRpb248L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiI+bm9uZTwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4KPHNwYW4gY2xhc3M9InAiPn08L3NwYW4+CjxzcGFuIGNsYXNzPSJudCI+YTwvc3Bhbj48c3BhbiBjbGFzcz0ibmQiPjp2aXNpdGVkPC9zcGFuPiA8c3BhbiBjbGFzcz0icCI+ezwvc3Bhbj4KICA8c3BhbiBjbGFzcz0ibmwiPmNvbG9yPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj46PC9zcGFuPiA8c3BhbiBjbGFzcz0ibm8iPnB1cnBsZTwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ozwvc3Bhbj4KPHNwYW4gY2xhc3M9InAiPn08L3NwYW4+CjxzcGFuIGNsYXNzPSJudCI+YTwvc3Bhbj48c3BhbiBjbGFzcz0ibmQiPjpob3Zlcjwvc3Bhbj4gPHNwYW4gY2xhc3M9InAiPns8L3NwYW4+CiAgPHNwYW4gY2xhc3M9Im5sIj50ZXh0LWRlY29yYXRpb248L3NwYW4+PHNwYW4gY2xhc3M9InAiPjo8L3NwYW4+IDxzcGFuIGNsYXNzPSJuYiI+dW5kZXJsaW5lPC9zcGFuPjxzcGFuIGNsYXNzPSJwIj47PC9zcGFuPgo8c3BhbiBjbGFzcz0icCI+fTwvc3Bhbj4KPHNwYW4gY2xhc3M9Im50Ij5hPC9zcGFuPjxzcGFuIGNsYXNzPSJuZCI+OmFjdGl2ZTwvc3Bhbj4gPHNwYW4gY2xhc3M9InAiPns8L3NwYW4+CiAgPHNwYW4gY2xhc3M9Im5sIj5jb2xvcjwvc3Bhbj48c3BhbiBjbGFzcz0icCI+Ojwvc3Bhbj4gPHNwYW4gY2xhc3M9Im5vIj5yZWQ8L3NwYW4+PHNwYW4gY2xhc3M9InAiPjs8L3NwYW4+CjxzcGFuIGNsYXNzPSJwIj59PC9zcGFuPgo8L2NvZGU+PC9wcmU+PC9kaXY+PC9kaXY+Cgo8cD5UaGUgY2FzY2FkZSBpcyB0aGUgcmVhc29uIHRoaXMgb3JkZXIgbWF0dGVyczogZ2l2ZW4gdGhlIHNhbWUgc3BlY2lmaWNpdHksIGxhdGVyIHN0eWxlcyBvdmVycmlkZSBlYXJsaWVyIHN0eWxlcy4gSWYgdHdvIG9yIG1vcmUgb2YgdGhlc2Ugc3RhdGVzIGFyZSB0cnVlIG9mIG9uZSBlbGVtZW50IGF0IHRoZSBzYW1lIHRpbWUsIHRoZSBsYXN0IG9uZSBvdmVycmlkZSB0aGUgb3RoZXJzLiBJZiB0aGUgdXNlciBob3ZlcnMgb3ZlciBhIHZpc2l0ZWQgbGluaywgdGhlIGhvdmVyIHN0eWxlcyB0YWtlIHByZWNlZGVuY2UuIElmIHRoZSB1c2VyIGFjdGl2YXRlcyB0aGUgbGluayAoPGVtPmkuZS48L2VtPiwgY2xpY2tzIGl0KSB3aGlsZSBob3ZlcmluZyBvdmVyIGl0LCB0aGUgYWN0aXZlIHN0eWxlcyB0YWtlIHByZWNlZGVuY2UuPC9wPgoKPGg0IGlkPSJjYXNjYWRlZC12YWx1ZXMiPkNhc2NhZGVkIFZhbHVlczwvaDQ+Cgo8cD5UaGUgYnJvd3NlciBmb2xsb3dzIHRoZXNlIHRocmVlIHN0ZXBzIOKAlCBvcmlnaW4sIHNwZWNpZmljaXR5LCBhbmQgc291cmNlIG9yZGVyIHRvIHJlc29sdmUgZXZlcnkgcHJvcGVydHkgZm9yIGV2ZXJ5IGVsZW1lbnQgb24gdGhlIHBhZ2UuIEEgZGVjbGFyYXRpb24gdGhhdCDigJx3aW5z4oCdIHRoZSBjYXNjYWRlIGlzIGNhbGxlZCBhIDxlbT5jYXNjYWRlZCB2YWx1ZTwvZW0+LiBUaGVyZeKAmXMgYXQgbW9zdCBvbmUgY2FzY2FkZWQgdmFsdWUgcGVyIHByb3BlcnR5IHBlciBlbGVtZW50LjwvcD4KCjxoMiBpZD0iaW5oZXJpdGFuY2UiPkluaGVyaXRhbmNlPC9oMj4KCjxwPklmIGFuIGVsZW1lbnQgaGFzIG5vIGNhc2NhZGVkIHZhbHVlIGZvciBhIGdpdmVuIHByb3BlcnR5LCBpdCBtYXkgaW5oZXJpdCBvbmUgZnJvbSBhbiBhbmNlc3RvciBlbGVtZW50LiBJdOKAmXMgY29tbW9uIHRvIGFwcGx5IGEgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5mb250LWZhbWlseTwvY29kZT4gdG8gdGhlIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+Jmx0O2JvZHkmZ3Q7PC9jb2RlPiBlbGVtZW50LiBBbGwgdGhlIGFuY2VzdG9yIGVsZW1lbnRzIHdpdGhpbiB3aWxsIHRoZW4gaW5oZXJpdCB0aGlzIGZvbnQuPC9wPgoKPHA+Tm90ZSB0aGF0IDxzdHJvbmc+Tk9UPC9zdHJvbmc+IGFsbCBwcm9wZXJ0aWVzIGFyZSBpbmhlcml0ZWQsIGhvd2V2ZXIuIEJ5IGRlZmF1bHQsIG9ubHkgY2VydGFpbiBvbmVzIGFyZS4gSW4gZ2VuZXJhbCwgdGhlc2UgYXJlIHRoZSBwcm9wZXJ0aWVzIHlvdeKAmWxsIDxlbT53YW50PC9lbT4gdG8gYmUgaW5oZXJpdGVkLiBUaGV5IGFyZSBwcmltYXJpbHkgcHJvcGVydGllcyBwZXJ0YWluaW5nIHRvIHRleHQ6IDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+Y29sb3I8L2NvZGU+LCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmZvbnQ8L2NvZGU+LCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmZvbnQtZmFtaWx5PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5mb250LXNpemU8L2NvZGU+LCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmZvbnQtd2VpZ2h0PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5mb250LXZhcmlhbnQ8L2NvZGU+LCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmZvbnQtc3R5bGU8L2NvZGU+LCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmxpbmUtaGVpZ2h0PC9jb2RlPiwgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5sZXR0ZXItc3BhY2luZzwvY29kZT4sIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+dGV4dC1hbGlnbjwvY29kZT4sIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+dGV4dC1pbmRlbnQ8L2NvZGU+LCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPnRleHQtdHJhbnNmb3JtPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj53aGl0ZS1zcGFjZTwvY29kZT4sIGFuZCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPndvcmQtc3BhY2luZzwvY29kZT4uPC9wPgoKPHA+QSBmZXcgb3RoZXJzIGluaGVyaXQgYXMgd2VsbCwgc3VjaCBhcyB0aGUgbGlzdCBwcm9wZXJ0aWVzOiA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmxpc3Qtc3R5bGU8L2NvZGU+LCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmxpc3Qtc3R5bGUtdHlwZTwvY29kZT4sIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+bGlzdC1zdHlsZS1wb3NpdGlvbjwvY29kZT4sIGFuZCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmxpc3Qtc3R5bGUtaW1hZ2U8L2NvZGU+LiBUaGUgdGFibGUgYm9yZGVyIHByb3BlcnRpZXMsIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+Ym9yZGVyLWNvbGxhcHNlPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5ib3JkZXItc3BhY2luZzwvY29kZT4sIGFyZSBhbHNvIGluaGVyaXRlZC48L3A+Cgo8cD5BYm92ZSBpcyBub3QgcXVpdGUgYSBjb21wcmVoZW5zaXZlIGxpc3QsIGJ1dCB2ZXJ5IG5lYXJseS48L3A+Cgo8aDIgaWQ9InNwZWNpYWwtdmFsdWVzIj5TcGVjaWFsIFZhbHVlczwvaDI+Cgo8cD5UaGVyZSBhcmUgdHdvIHNwZWNpYWwgdmFsdWVzIHRoYXQgeW91IGNhbiBhcHBseSB0byBhbnkgcHJvcGVydHkgdG8gaGVscCBtYW5pcHVsYXRlIHRoZSBjYXNjYWRlOiA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmluaGVyaXQ8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmluaXRpYWw8L2NvZGU+LjwvcD4KCjxwPlVzaW5nIHRoZSA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmluaGVyaXQ8L2NvZGU+IGtleXdvcmQsIHlvdSBjYW4gb3ZlcnJpZGUgYW5vdGhlciB2YWx1ZSB3aXRoIHRoaXMsIGFuZCBpdCB3aWxsIGNhdXNlIHRoZSBlbGVtZW50IHRvIGluaGVyaXQgdGhhdCB2YWx1ZSBmcm9tIGl0cyBwYXJlbnQuPC9wPgoKPHA+U29tZXRpbWVzIHlvdeKAmWxsIGZpbmQgeW91IGhhdmUgc3R5bGVzIGFwcGxpZWQgdG8gYW4gZWxlbWVudCB0aGF0IHlvdSB3YW50IHRvIHVuZG8uIFlvdSBjYW4gZG8gdGhpcyBieSBzcGVjaWZ5aW5nIHRoZSBrZXl3b3JkIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+aW5pdGlhbDwvY29kZT4uIEV2ZXJ5IENTUyBwcm9wZXJ0eSBoYXMgYW4gaW5pdGlhbCwgb3IgZGVmYXVsdCwgdmFsdWUuIElmIHlvdSBhc3NpZ24gdGhlIHZhbHVlIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+aW5pdGlhbDwvY29kZT4gdG8gdGhhdCBwcm9wZXJ0eSwgdGhlbiBpdCBlZmZlY3RpdmVseSByZXNldHMgdG8gaXRzIGRlZmF1bHQgdmFsdWUuIFRoZSBiZW5lZml0IG9mIHRoaXMgaXMgeW91IGRvbuKAmXQgaGF2ZSB0byB0aGluayBhYm91dCBpdCBhcyBtdWNoLiBJZiB5b3Ugd2FudCB0byByZW1vdmUgYSBib3JkZXIgZnJvbSBhbiBlbGVtZW50LCBzZXQgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5ib3JkZXI6IGluaXRpYWw8L2NvZGU+LiBJZiB5b3Ugd2FudCB0byByZXN0b3JlIGFuIGVsZW1lbnQgdG8gaXRzIGRlZmF1bHQgd2lkdGgsIHNldCA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPndpZHRoOiBpbml0aWFsPC9jb2RlPi48L3A+Cgo8YmxvY2txdW90ZT4KICA8cD5EZWNsYXJpbmcgPGNvZGUgY2xhc3M9ImhpZ2hsaWdodGVyLXJvdWdlIj5kaXNwbGF5OiBpbml0aWFsPC9jb2RlPiBpcyBlcXVpdmFsZW50IHRvIDxjb2RlIGNsYXNzPSJoaWdobGlnaHRlci1yb3VnZSI+ZGlzcGxheTogaW5saW5lPC9jb2RlPi4gSXQgd29u4oCZdCBldmFsdWF0ZSB0byA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmRpc3BsYXk6IGJsb2NrPC9jb2RlPiByZWdhcmRsZXNzIG9mIHdoYXQgdHlwZSBvZiBlbGVtZW50IHlvdSBhcHBseSBpdCB0by4gVGhhdOKAmXMgYmVjYXVzZSA8Y29kZSBjbGFzcz0iaGlnaGxpZ2h0ZXItcm91Z2UiPmluaXRpYWw8L2NvZGU+IHJlc2V0cyB0byB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5LCBub3QgdGhlIGVsZW1lbnQuPC9wPgo8L2Jsb2NrcXVvdGU+Cgo=
                        

林宏

Frank Lin

Hey, there! This is Frank Lin (@flinhong), one of the 1.4 billion 🇨🇳. This 'inDev. Journal' site holds the exploration of my quirky thoughts and random adventures through life. Hope you enjoy reading and perusing my posts.

YOU MAY ALSO LIKE

Using Liquid in Jekyll - Live with Demos

Web Notes

2016.08.20

Using Liquid in Jekyll - Live with Demos

Liquid is a simple templating language that Jekyll uses to process pages on your site. With Liquid you can output an modify variables, have logic statements inside your pages and loop over content.

Practising closures in JavaScript

JavaScript Notes

2018.12.17

Practising closures in JavaScript

JavaScript is a very function-oriented language. As we know, functions are first class objects and can be easily assigned to variables, passed as arguments, returned from another function invocation, or stored into data structures. A function can access variable outside of it. But what happens when an outer variable changes? Does a function get the most recent value or the one that existed when the function was created? Also, what happens when a function invoked in another place - does it get access to the outer variables of the new place?