# Name: smd_gallery v0.46 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InNtZF9nYWxsZXJ5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjQ2IjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6MjkwOTA6ImZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXI7DQoNCgkvLyAqKiBMT09LVVAgVEFCTEUNCgkvLyBIb2xkcyBkYXRh YmFzZSBmaWVsZCBhcyBrZXkgaW5kZXggYW5kIHBsdWdpbiBvcHRpb24gbmFtZXMgYXMgdmFs dWUuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQg cmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkk ZmllbGRNYXAgPSBhcnJheSgNCgkJInR4cF9pbWFnZS5uYW1lIiA9PiAibmFtZSIsDQoJCSJ0 eHBfaW1hZ2UuaWQiID0+ICJpZCIsDQoJCSJ0eHBfaW1hZ2UuYWx0IiA9PiAiYWx0IiwNCgkJ InR4cF9pbWFnZS5jYXB0aW9uIiA9PiAiY2FwdGlvbiIsDQoJCSJ0eHBfaW1hZ2UuY2F0ZWdv cnkiID0+ICJjYXRlZ29yeSIsDQoJCSJ0eHBfaW1hZ2UuYXV0aG9yIiA9PiAiYXV0aG9yIiwN CgkJInR4cF9pbWFnZS5kYXRlIiA9PiAiZGF0ZSIsDQoJCSJ0eHBfaW1hZ2UuZXh0IiA9PiAi ZXh0IiwNCgkJInR4cF9pbWFnZS53IiA9PiAid2lkdGgiLA0KCQkidHhwX2ltYWdlLmgiID0+ ICJoZWlnaHQiLA0KCQkidHhwX2ltYWdlLnRodW1ibmFpbCIgPT4gImhhc3RodW1iIiwNCgkp Ow0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlw ZScgPT4gJ2ltYWdlJywNCgkJJ2RlbGltJyA9PiAnLCcsDQoJCSdwYXJhbWRlbGltJyA9PiAn OicsDQoJCSdjb2xsYXRlZGVsaW0nID0+ICcsJywNCgkJJ2Zvcm0nID0+ICcnLA0KCQknaWQn ID0+ICcnLA0KCQknY2F0ZWdvcnknID0+ICcnLA0KCQknZGlyZWN0b3J5JyA9PiAnJywNCgkJ J21hdGNoJyA9PiAnJywNCgkJJ3N1YmxldmVsJyA9PiAnMCcsDQoJCSdzb3J0JyA9PiAnY2F0 ZWdvcnknLA0KCQknb2Zmc2V0JyA9PiAnMCcsDQoJCSdsaW1pdCcgPT4gJzAnLA0KCQknbWF4 bGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVtYmxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1 bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1iJyA9PiAnMDoxJywNCgkJJ3RodW1ic2l6ZScg PT4gJycsDQoJCSd0aHVtYmNoYW5nZScgPT4gJycsIC8vIERFUFJFQ0FURUQNCgkJJ3RodW1i Y2hhbmdld3JhcHRhZycgPT4gJycsIC8vIERFUFJFQ0FURUQNCgkJJ3RodW1iY2hhbmdlY2xh c3MnID0+ICcnLCAvLyBERVBSRUNBVEVEDQoJCSdvbmNoYW5nZScgPT4gJ2NhdGVnb3J5JywN CgkJJ29uY2hhbmdld3JhcHRhZycgPT4gJycsDQoJCSdvbmNoYW5nZWNsYXNzJyA9PiAnJywN CgkJJ2dyb3VwdGFnJyA9PiAnJywNCgkJJ2dyb3VwY2xhc3MnID0+ICcnLA0KCQkndGV4dCcg PT4gJycsDQoJCSdjb2xsYXRlJyA9PiAnJywNCgkJJ2NvbWJvJyA9PiAnJywNCgkJJ3BhZ2lu ZycgPT4gJzAnLA0KCQkncGFnZWZvcm0nID0+ICcnLA0KCQkncGFnZXBvcycgPT4gJ2JlbG93 JywNCgkJJ25hdndyYXB0YWcnID0+ICd1bCcsDQoJCSduYXZicmVhaycgPT4gJ2xpJywNCgkJ J25hdmNsYXNzJyA9PiAnc21kX2dhbGxlcnlfbmF2JywNCgkJJ2VtcHR5Y2xhc3MnID0+ICdl bXB0eScsDQoJCSdnYWxsZXJ5aWQnID0+ICc/NDo2JywNCgkJJ3dyYXB0YWcnID0+ICcnLA0K CQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywN CgkpLCAkYXR0cykpOw0KDQoJLy8gQ2F0ZWdvcnkgcmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFz IGJlZW4gc3BlY2lmaWVkIG9yIG5vdC4NCgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBoYW5k bGUgdGhpcyBsb2dpYyBzbyBpdCBoYXMgdG8gYmUgZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0 TWF0Y2ggPSAoZW1wdHkoJGNhdGVnb3J5KSAmJiBlbXB0eSgkaWQpKSA/IGZhbHNlIDogdHJ1 ZTsNCgkkY2F0ZWdvcnkgPSBpc3NldCgkY2F0ZWdvcnkpID8gZG9TbGFzaCgkY2F0ZWdvcnkp IDogKCgkaWQ9PScnKSA/ICRwcmV0ZXh0WydjJ106ICcnKTsNCg0KCS8vIEhhbmRsZSBmb3Jt cyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAo ZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9 IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDpp bWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6ICR0aGluZzsNCg0KCS8vIFBhZ2luZyBpbml0DQoJ JHBhZ2VQb3NBbGxvd2VkID0gYXJyYXkoImJlbG93IiwgImFib3ZlIik7DQoJJHBhZ2VvdXQg PSBhcnJheSgpOw0KCWlmICgkcGFnZWZvcm0pIHsNCgkJJHBhZ2luZyA9IDE7DQoJCSRwYWdl Zm9ybSA9IGZldGNoX2Zvcm0oJHBhZ2Vmb3JtKTsNCgkJJHBhZ2Vwb3MgPSBkb19saXN0KCRw YWdlcG9zLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkcGFnZXBvcyBhcyAkcGFnZWl0ZW0pIHsN CgkJCSRwYWdlb3V0W10gPSAoaW5fYXJyYXkoJHBhZ2VpdGVtLCAkcGFnZVBvc0FsbG93ZWQp KSA/ICRwYWdlaXRlbSA6ICRwYWdlUG9zQWxsb3dlZFswXTsNCgkJfQ0KCX0NCg0KCS8vIFRl bXBvcmFyeSByZWRpcmVjdCBmb3IgZGVwcmVjYXRlZCBvcHRpb25zDQoJJG9uY2hhbmdlID0g KCRvbmNoYW5nZSkgPyAkb25jaGFuZ2UgOiAkdGh1bWJjaGFuZ2U7DQoJJG9uY2hhbmdld3Jh cHRhZyA9ICgkb25jaGFuZ2V3cmFwdGFnKSA/ICRvbmNoYW5nZXdyYXB0YWcgOiAkdGh1bWJj aGFuZ2V3cmFwdGFnOw0KCSRvbmNoYW5nZWNsYXNzID0gKCRvbmNoYW5nZWNsYXNzKSA/ICRv bmNoYW5nZWNsYXNzIDogJHRodW1iY2hhbmdlY2xhc3M7DQoNCgkvLyBvbmNoYW5nZSB2ZXJp ZmljYXRpb24NCgkkb25jaGFuZ2UgPSBkb19saXN0KCRvbmNoYW5nZSwgJGRlbGltKTsNCgkk b25jaGFuZ2UgPSAoJG9uY2hhbmdlWzBdID09ICIiKSA/IGFycmF5KCkgOiAkb25jaGFuZ2U7 DQoJJHJlc2V0T3B0cyA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJG9uY2hhbmdlIGFzICRyZXNl dE9wdCkgew0KCQkkcmVzZXRPcHRzWyRyZXNldE9wdF0gPSAiIjsNCgl9DQoNCgkvLyBUaGUg Z2FsbGVyeSBpZGVudGlmaWVyIGlzIHVzZWQgZm9yIGtlZXBpbmcgdHJhY2sgb2YgbmV4dC9w cmV2IHRodW1ibmFpbCBwYWdlIGxpbmtzDQoJJGdhbGxJRCA9ICcnOw0KCWlmICgkZ2FsbGVy eWlkID09ICcnIHx8IHN1YnN0cigkZ2FsbGVyeWlkLDAsMSkgPT0gIj8iKSB7DQoJCS8vIEdl bmVyYXRlIGEgKGZhaXJseSBsaWtlbHkpIHVuaXF1ZSBJRCBmb3IgdGhpcyBnYWxsZXJ5IGlu c3RhbmNlDQoJCSRnYWxsVG1wID0gbWQ1KCRjYXRlZ29yeS4kaWQuJGRpcmVjdG9yeS4kbWF0 Y2guJHN1YmxldmVsLiRzb3J0LiRsaW1pdC4kbWF4bGltaXQpOw0KCQlsaXN0KCRnYWxsTGVu LCAkZ2FsbFNraXApID0gZXhwbG9kZSgiOiIsIHN1YnN0cigkZ2FsbGVyeWlkLDEpKTsNCgkJ JGdhbGxMZW4gPSAgKGVtcHR5KCRnYWxsTGVuKSkgPyAiNCIgOiAkZ2FsbExlbjsNCgkJJGdh bGxTa2lwID0gIChlbXB0eSgkZ2FsbFNraXApKSA/ICIxIiA6ICRnYWxsU2tpcDsNCgkJZm9y ICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQgPCAkZ2FsbExlbjsgJGNudCsrLCAkaWR4ID0g KCgkaWR4KyRnYWxsU2tpcCkgJSBzdHJsZW4oJGdhbGxUbXApKSkgew0KCQkJJGdhbGxJRCAu PSAkZ2FsbFRtcFskaWR4XTsNCgkJfQ0KCX0gZWxzZSB7DQoJCSRnYWxsSUQgPSAkZ2FsbGVy eWlkOw0KCX0NCgkkZ2FsbElEID0gInNtZF9nbHJ5XyIuJGdhbGxJRDsgLy8gQXZvaWQgKGFs cmVhZHkgaW5jcmVkaWJseSB1bmxpa2VseSkgbmFtZXNwYWNlIGNsYXNoZXMNCg0KCS8vIFNl dCB1cCB0aGUgdmFyaWFibGVzIGZyb20gdGhlIHRodW1iIG9wdGlvbi4NCgkvLyBEb24ndCB1 c2UgcGFyYW1kZWxpbSBoZXJlIG9yIHRoZSBkZWZhdWx0IG9wdGlvbiBicmVha3MNCgkkdGh1 bWJPcHRzID0gZG9fbGlzdCgkdGh1bWIsICI6Iik7DQoJaWYgKGNvdW50KCR0aHVtYk9wdHMp ID09IDEpIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIi Ow0KCQkkdGh1bWJtb2QgPSAidCI7DQoJfSBlbHNlIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1i T3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAoJHRodW1iT3B0c1sx XSA9PSAxKSA/ICJ0IiA6ICIiOw0KCX0NCg0KCS8vIFRoZSBtYW5uZXIgb2Ygb2J0YWluaW5n IGZpbGVzIGRpZmZlcnMgaWYgdXNpbmcgZGlyZWN0b3J5IHZzIGNhdGVnb3J5L2lkDQoJJHJz ID0gYXJyYXkoKTsNCglpZiAoJGRpcmVjdG9yeSkgew0KCQkkcnMgPSBzbWRfZG9EaXJlY3Rv cnkoJGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSk7DQoJCWxpc3Qo JGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBh Z2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGlt aXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9 IGFycmF5KCk7DQoJCSRmaXhlZE9yZGVyID0gMDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJ fSBlbHNlIHsNCgkJLy8gUHJvY2VzcyBjYXRlZ29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUg Y3J1eCBvZiB0aGUgd2hlcmUgY2xhdXNlLg0KCQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1Ig Y2F0cyBBTkQgIWNhdHMgQU5EICFJRHMNCgkJJGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1 c2VPUiA9IGFycmF5KCk7DQoNCgkJLy8gU3Vycm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQg bGlzdCB3aXRoIHF1b3RlcyBhbmQgbWFrZSBhbiBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZv ID0gKCRzdWJsZXZlbCkgPyAiaW1hZ2U6Ii4kc3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRp bmMsICRpZGV4YykgPSBzbWRfZG9MaXN0KCRpZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSk7 DQoJCWxpc3QoJGNhdGluYywgJGNhdGV4YykgPSBzbWRfZG9MaXN0KCRjYXRlZ29yeSwgZmFs c2UsICRzdWJpbmZvLCB0cnVlLCAkZGVsaW0pOw0KCQlpZiAoJGlkaW5jKSB7DQoJCQkkY2xh dXNlT1JbXSA9ICd0eHBfaW1hZ2UuaWQgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGluYykuJykn Ow0KCQl9DQoJCWlmICgkY2F0aW5jKSB7DQoJCQkkY2xhdXNlT1JbXSA9ICd0eHBfaW1hZ2Uu Y2F0ZWdvcnkgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRpbmMpLicpJzsNCgkJfQ0KCQlpZiAo IWVtcHR5KCRjbGF1c2VPUikpIHsNCgkJCSRjbGF1c2VbXSA9ICcgKCcuaW1wbG9kZSgiIE9S ICIsICRjbGF1c2VPUikuJykgJzsNCgkJfQ0KDQoJCSRjbGF1c2UgPSBpbXBsb2RlKCIgQU5E ICIsICRjbGF1c2UpOw0KCQkkY2xhdXNlIC49ICgkY2F0ZXhjKSA/ICcgQU5EIHR4cF9pbWFn ZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRleGMpLicpJyA6ICcnOw0K CQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgdHhwX2ltYWdlLmlkIE5PVCBJTiAoJy5p bXBsb2RlKCIsIiwgJGlkZXhjKS4nKScgOiAnJzsNCg0KCQkvLyBJZiBhIGNhdGVnb3J5L2lk IG9wdGlvbiB3YXMgY2hvc2VuIGFuZCB0aGV5IG1hdGNoZWQgbm90aGluZywgdXNlIGEgYm9n dXMgY2F0ZWdvcnkgdGhhdCBzaG91bGQgbm90IGV4aXN0Lg0KCQkvLyBUaGlzIGVuc3VyZXMg dGhhdCB0aGUgcGx1Z2luIGRvZXMgdGhlIGV4cGVjdGVkIHRoaW5nIG9mIG1hdGNoaW5nIG5v dGhpbmcgaW4gdGhlIGV2ZW50IGl0IGZpbmRzIG5vdGhpbmcuDQoJCWlmICgkY2xhdXNlID09 ICIxPTEiICYmICRhdHRlbXB0TWF0Y2gpIHsNCgkgIAkJJGNsYXVzZSA9ICd0eHBfaW1hZ2Uu Y2F0ZWdvcnkgPSAic21kXycgLm10X3JhbmQoKS4gJyInOw0KCQl9DQoNCgkJaWYgKCRkZWJ1 ZyA+IDEpIHsNCgkJCWVjaG8gIisrIElOQ0xVREVEL0VYQ0xVREVEIElEcyBBTkQgQ0FUcyAr KyI7DQoJCQlkbXAoJGlkaW5jKTsNCgkJCWRtcCgkaWRleGMpOw0KCQkJZG1wKCRjYXRpbmMp Ow0KCQkJZG1wKCRjYXRleGMpOw0KCQl9DQoNCgkJLy8gQ29udmVydCB0aGUgc29ydCBpbnRv IGEgdmFsaWQgc29ydGluZyBoaWVyYXJjaHkuDQoJCS8vIE5vdGUgdGhhdCByYW5kb20gaXMg YSBzcGVjaWFsIGNhc2UgYW5kIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6DQoJCS8vICAx KSBBbnl0aGluZyBhcHBlYXJpbmcgYmVmb3JlIHJhbmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRh dGFiYXNlIHF1ZXJ5IGZvciBvcmRlcmluZw0KCQkvLyAgMikgQXMgc29vbiBhcyByYW5kb20g aXMgZW5jb3VudGVyZWQsIHRoZSByZXN0IG9mIHRoZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVk Lg0KCQkvLyAgICAgVGhlIHJlc3VsdHNldCB3aWxsIGJlIHNvcnRlZCByYW5kb21seSBpbnN0 ZWFkDQoJCS8vICAzKSBJZiByYW5kb20gYXBwZWFycyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhl IGRhdGEgaXMgcmV0cmlldmVkIHJhbmRvbWx5IHRoZW4gdGhlDQoJCS8vICAgICByZW1haW5p bmcgb3B0aW9ucyBzb3J0IHRoZSByZXN1bHRzZXQNCgkJJGNsYXVzZVNvcnQgPSBhcnJheSgp Ow0KCQkkcG9zdE9yZGVyID0gYXJyYXkoKTsNCgkJJHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQ cmVmaXggPSAiU09SVF8iOw0KCQkkZml4ZWRPcmRlciA9ICRyYW5kc29ydCA9IGZhbHNlOw0K CQkkc29ydCA9IGRvX2xpc3QoJHNvcnQsICRkZWxpbSk7DQoJCWZvciAoJGlkeCA9IDA7ICRp ZHggPCBjb3VudCgkc29ydCk7ICRpZHgrKykgew0KCQkJJHNvcnRfZGlyID0gZXhwbG9kZSgn ICcsICRzb3J0WyRpZHhdKTsNCgkJCSRkaXJlY3Rpb24gPSAkY29sUmVmID0gJyc7DQoJCQlp ZiAoY291bnQoJHNvcnRfZGlyKSA8PSAxKSB7DQoJCQkJJHNvcnRfZGlyWzFdID0gImFzYyI7 DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0gInNxbCIpIHsNCgkJCQkkZGlyZWN0aW9uID0gKCRz b3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJyBkZXNjJyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7 DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICRwb3N0UHJl Zml4LidERVNDJyA6ICRwb3N0UHJlZml4LidBU0MnOw0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRz b3J0X2RpclswXSkgew0KCQkJCWNhc2UgJ3JhbmRvbSc6DQoJCQkJCSRydWxlID0gInBvc3Qi Ow0KCQkJCQlpZiAoJGlkeCA9PSAwKSB7DQoJCQkJCQkkY2xhdXNlU29ydFtdID0gJ3JhbmQo KSc7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkcmFuZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJ CQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2ZpeGVkJzoNCgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdv cmtzIG9uIGlkcyBvciBjYXRlZ29yaWVzDQoJCQkJCSRmaXhlZE9yZGVyID0gKCRpZCA9PSAn JyAmJiAkY2F0ZWdvcnkgPT0gJycpID8gZmFsc2UgOiB0cnVlOw0KCQkJCQlicmVhazsNCgkJ CQlkZWZhdWx0Og0KCQkJCQkkY29sUmVmID0gYXJyYXlfc2VhcmNoKCRzb3J0X2RpclswXSwg JGZpZWxkTWFwKTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0gInNxbCIp IHsNCgkJCQlpZiAoJGNvbFJlZiAhPSAnJykgew0KCQkJCQkkY2xhdXNlU29ydFtdID0gJGNv bFJlZi4kZGlyZWN0aW9uOw0KCQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJaWYgKCEkcmFuZHNv cnQpIHsNCgkJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJCSRwb3N0T3JkZXJbXSA9 IGFycmF5KCJjb2wiID0+ICRjb2xSZWYsICJzb3J0IiA9PiAkZGlyZWN0aW9uKTsNCgkJCQkJ fQ0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJCWlmIChjb3VudCgkY2xhdXNlU29ydCkgPiAwKSB7 DQoJCQkkY2xhdXNlIC49ICcgT1JERVIgQlkgJyAuIGltcGxvZGUoIiwiLCRjbGF1c2VTb3J0 KTsNCgkJfQ0KCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJZWNobyAiKysgV0hFUkUgQ0xBVVNF ICsrIjsNCgkJCWRtcCgkY2xhdXNlKTsNCgkJfQ0KCQkvLyBUaGUgZGF0YWJhc2UgZmllbGRz IHJlcXVpcmVkDQoJCSRmaWVsZHMgPSBpbXBsb2RlKCIsIiwgYXJyYXlfa2V5cygkZmllbGRN YXApKTsNCg0KCQkvLyBUaW1lIHRvIGdyYWIgdGhlIG1hdGNoaW5nIHJvd3MgZnJvbSB0aGUg ZGF0YWJhc2UNCi8vCQkkcnMgPSBzYWZlX3Jvd3MoJGZpZWxkcy4nLCB0eHBfY2F0ZWdvcnku dGl0bGUgQVMgY2F0ZWdvcnlfdGl0bGUnLCAndHhwX2ltYWdlLCB0eHBfY2F0ZWdvcnknLCAo KCRjYXRlZ29yeSkgPyAndHhwX2NhdGVnb3J5Lm5hbWUgPSB0eHBfaW1hZ2UuY2F0ZWdvcnkg QU5EICcgOiAnJykuICd0eHBfY2F0ZWdvcnkudHlwZT0iaW1hZ2UiIEFORCAnIC4kY2xhdXNl IC4nIExJTUlUIDAsJy4gJG1heGxpbWl0LCAkZGVidWcpOw0KCQkkcnMgPSBzYWZlX3Jvd3Mo IkRJU1RJTkNUICIuJGZpZWxkcy4gKCgkY2F0ZWdvcnkpID8gJywgdHhwX2NhdGVnb3J5LnRp dGxlIEFTIGNhdGVnb3J5X3RpdGxlJzogJycpLCAndHhwX2ltYWdlLCB0eHBfY2F0ZWdvcnkn LCAoKCRjYXRlZ29yeSkgPyAndHhwX2NhdGVnb3J5Lm5hbWUgPSB0eHBfaW1hZ2UuY2F0ZWdv cnkgQU5EICcgOiAnJykuICd0eHBfY2F0ZWdvcnkudHlwZT0iaW1hZ2UiIEFORCAnIC4kY2xh dXNlIC4nIExJTUlUIDAsJy4gJG1heGxpbWl0LCAkZGVidWcpOw0KCQlsaXN0KCRhbGxJbWFn ZXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywg JGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKTsNCgl9DQoNCgkvLyBJcyBwb3N0 LW9yZGVyaW5nIHJlcXVpcmVkPyBEbyBpdA0KCWlmICgkcmFuZHNvcnQpIHsNCgkJc2h1ZmZs ZSgkcnMpOw0KCX0gZWxzZSBpZiAoY291bnQoJHBvc3RPcmRlcikgPiAwKSB7DQoJCS8vIFRy YW5zbGF0ZSB0aGUgcm93cyBpbnRvIGNvbHVtbnMgdGhhdCBjYW4gYmUgc29ydGVkDQoJCWZv cmVhY2goJHJzIGFzICRrZXkgPT4gJHJvdykgew0KCQkJJGNvbF9pZFska2V5XSA9ICRyb3db J2lkJ107DQoJCQkkY29sX25hbWVbJGtleV0gPSAkcm93WyduYW1lJ107DQoJCQkkY29sX2Nh cHRpb25bJGtleV0gPSAkcm93WydjYXB0aW9uJ107DQoJCQkkY29sX2FsdFska2V5XSA9ICRy b3dbJ2FsdCddOw0KCQkJJGNvbF9jYXRlZ29yeVska2V5XSA9ICRyb3dbJ2NhdGVnb3J5J107 DQoJCQkkY29sX2RhdGVbJGtleV0gPSAkcm93WydkYXRlJ107DQoJCQkkY29sX2V4dFska2V5 XSA9ICRyb3dbJ2V4dCddOw0KCQkJJGNvbF9hdXRob3JbJGtleV0gPSAkcm93WydhdXRob3In XTsNCgkJCSRjb2xfd1ska2V5XSA9ICRyb3dbJ3cnXTsNCgkJCSRjb2xfaFska2V5XSA9ICRy b3dbJ2gnXTsNCgkJCSRjb2xfdGh1bWJuYWlsWyRrZXldID0gJHJvd1sndGh1bWJuYWlsJ107 DQoJCX0NCgkJLy8gTWFrZSB1cCBhbiBhcnJheV9tdWx0aXNvcnQgYXJnIGxpc3QgYW5kIGV4 ZWN1dGUgaXQNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRwb3N0T3JkZXIpOyAk aWR4KyspIHsNCgkJCSRzb3J0YXJnc1tdID0gJyRjb2xfJy4kcG9zdE9yZGVyWyRpZHhdWydj b2wnXTsNCgkJCSRzb3J0YXJnc1tdID0gJHBvc3RPcmRlclskaWR4XVsnc29ydCddOw0KCQl9 DQoJCSRzb3J0aXQgPSAnYXJyYXlfbXVsdGlzb3J0KCcuaW1wbG9kZSgiLCAiLCRzb3J0YXJn cykuJywgJHJzKTsnOw0KCQlldmFsKCRzb3J0aXQpOw0KCX0NCg0KCS8vIElzIGZpeGVkLW9y ZGVyIG91dHB1dCBkZXNpcmVkPyBJZiBzbywgcmUtb3JkZXIgdGhlICRycw0KCWlmICgkZml4 ZWRPcmRlcikgew0KCQkkb3JkZXJlZFJTID0gQXJyYXkoKTsNCgkJJGlnbm9yZUxpc3QgPSBB cnJheSgpOw0KCQkkcmVtYWluaW5nUlMgPSBBcnJheSgpOw0KCQkvLyBTdWNrIG91dCB0aGUg Zml4ZWQgaXRlbXMgZmlyc3QuIElEcyB0aGVuIGNhdGVnb3JpZXMNCgkJZm9yICgkaWR4ID0g MDsgJGlkeCA8IGNvdW50KCRpZGluYyk7ICRpZHgrKykgew0KCQkJZm9yZWFjaCgkcnMgYXMg JHJvdykgew0KCQkJCWlmICgkaWQgJiYgZG9RdW90ZSgkcm93WydpZCddKSA9PSAkaWRpbmNb JGlkeF0pIHsNCgkJCQkJJG9yZGVyZWRSU1tdID0gJHJvdzsNCgkJCQkJJGlnbm9yZUxpc3Rb XSA9ICRyb3dbJ2lkJ107DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlmb3Ig KCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGNhdGluYyk7ICRpZHgrKykgew0KCQkJZm9yZWFj aCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgkY2F0ZWdvcnkgJiYgZG9RdW90ZSgkcm93Wydj YXRlZ29yeSddKSA9PSAkY2F0aW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRy b3c7DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCX0NCgkJCX0NCgkJ fQ0KCQkvLyBUYWNrIG9uIHRoZSByZW1haW5pbmcgcm93cw0KCQlmb3JlYWNoKCRycyBhcyAk cm93KSB7DQoJCQlpZiAoIWluX2FycmF5KCRyb3dbJ2lkJ10sICRpZ25vcmVMaXN0KSkgew0K CQkJCSRyZW1haW5pbmdSU1tdID0gJHJvdzsNCgkJCX0NCgkJfQ0KCQkkcnMgPSBhcnJheV9t ZXJnZSgkb3JkZXJlZFJTLCAkcmVtYWluaW5nUlMpOw0KCX0NCg0KCS8vIEdyYWIgdGhlIHBv cnRpb24gb2YgdGhlIHJlY29yZCBzZXQgYWN0dWFsbHkgcmVxdWlyZWQgdG8gaXRlcmF0ZSBv dmVyDQoJJHJzID0gYXJyYXlfc2xpY2UoJHJzLCAkb2Zmc2V0LCAoKCRkaXJlY3RvcnkpID8g JGRpcmxpbWl0IDogKCgkbGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0KSkpOw0KDQoJ Ly8gSGFuZGxlIHRodW1ic2l6ZSAtIG9mIGxpbWl0ZWQgdXNlIG5vdyBidXQgc3RpbGwgYXZh aWxhYmxlDQoJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSAnJzsNCgkkdGh1bWJXVW5p dHMgPSAkdGh1bWJIVW5pdHMgPSAnJzsNCglpZiAoJHRodW1ic2l6ZSkgew0KCQkkdGh1bWJT aXplcyA9IGRvX2xpc3QoJHRodW1ic2l6ZSwgJGRlbGltKTsNCgkJaWYgKGNvdW50KCR0aHVt YlNpemVzKSA9PSAxKSB7DQoJCQkkdGh1bWJXaWR0aCA9ICR0aHVtYkhlaWdodCA9IGVyZWdf cmVwbGFjZSgiW14wLTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR1bml0cyA9IGVy ZWdfcmVwbGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iV1Vu aXRzID0gJHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJykgPyAkdGh1bWJXVW5pdHMgOiAk dW5pdHM7DQoJCX0gZWxzZSB7DQoJCQkkdGh1bWJXaWR0aCA9IGVyZWdfcmVwbGFjZSgiW14w LTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYkhlaWdodCA9IGVyZWdfcmVw bGFjZSgiW14wLTldIiwgJycsICR0aHVtYlNpemVzWzFdKTsNCgkJCSR1bml0cyA9IGVyZWdf cmVwbGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJJHRodW1iV1VuaXRz ID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJXaWR0aCAhPSAnJykgPyAkdGh1bWJXVW5pdHMg OiAkdW5pdHM7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2UoIlswLTldIiwgJycsICR0aHVt YlNpemVzWzFdKTsNCgkJCSR0aHVtYkhVbml0cyA9ICgkdW5pdHMgPT0gJycgJiYgJHRodW1i SGVpZ2h0ICE9ICcnKSA/ICR0aHVtYkhVbml0cyA6ICR1bml0czsNCgkJfQ0KCX0NCg0KCS8v IENvbGxhdGlvbiBkZWZlcnMgcGFyc2luZyB0aGUgZm9ybSBmb3IgZWFjaCByZXR1cm5lZCBp dGVtLg0KCS8vIEluc3RlYWQgaXQgb3V0cHV0cyB0aGUgZGF0YSBhcyBhIGxpc3QgYXQgdGhl IGVuZCAoaXRlbXMgbWF5IGJlIGluZGl2aWR1YWxseSBxdW90ZWQgb3IgZXh0cmFjdGVkIGlm IHJlcXVpcmVkKQ0KCS8vVE9ETyA6IEFkZCBBTFdBWVMgc3dpdGNoIGFzIGEgc2hvcnRjdXQg dG8gc3BlY2lmeSB0aGF0IGFsbCBtYXRjaGluZyBpdGVtcyAocmVnYXJkbGVzcyBvZiAjMSwg IzIsICMzIGV0YykgYXJlIHRvIGJlIHF1b3RlZA0KCWlmICgkY29sbGF0ZSkgew0KCQkkZGJs UXVvdGUgPSAkc2dsUXVvdGUgPSBhcnJheSgnU01ETk9ORScpOw0KCQkkY29sbGF0ZU9wdHMg PSBkb19saXN0KCRjb2xsYXRlLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29sbGF0ZU9wdHMg YXMgJG9wdGlvbikgew0KCQkJJGluZGV4ZXMgPSBkb19saXN0KCRvcHRpb24sICRwYXJhbWRl bGltKTsNCgkJCSRjb2xUeXBlID0gYXJyYXlfc2hpZnQoJGluZGV4ZXMpOw0KCQkJLy8gU3Vw cGx5aW5nICdxdW90ZScgb24gaXRzIG93biB3aWxsIGVtcHR5IHRoZSByZWxldmFudCBhcnJh eSwgaW1wbHlpbmcgIkFMTCIgZmllbGRzIGFyZSB0byBiZSBxdW90ZWQNCgkJCXN3aXRjaCAo JGNvbFR5cGUpIHsNCgkJCQljYXNlICJzZ2xxdW90ZSI6DQoJCQkJCSRzZ2xRdW90ZSA9ICRp bmRleGVzOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICJkYmxxdW90ZSI6DQoJCQkJY2FzZSAi cXVvdGUiOg0KCQkJCQkkZGJsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQl9 DQoJCX0NCgl9DQoNCgkvLyBDb21ib3MgYXJlIHVzZXItZGVmaW5lZCBjb21iaW5hdGlvbnMg b2YgcmVwbGFjZW1lbnQgbW9kaWZpZXJzIChlLmcuIGlkZXh0OiB7aWR9e2V4dH0sIC4uLg0K CSRjb21ib3MgPSBhcnJheSgpOw0KCWlmICgkY29tYm8pIHsNCgkJJGNvbWJvID0gZG9fbGlz dCgkY29tYm8sICRkZWxpbSk7DQoJCWZvcmVhY2ggKCRjb21ibyBhcyAkbmV3RGVmKSB7DQoJ CQlsaXN0KCRkZWZQYXJ0cywgJHVud2FudGVkKSA9IHNtZF9kb0xpc3QoJG5ld0RlZiwgZmFs c2UsICcnLCBmYWxzZSwgJHBhcmFtZGVsaW0pOw0KCQkJJGRlZk5hbWUgPSAieyIuYXJyYXlf c2hpZnQoJGRlZlBhcnRzKS4ifSI7DQoJCQkkY29tYm9zWyRkZWZOYW1lXSA9ICRkZWZQYXJ0 c1swXTsNCgkJfQ0KCX0NCglpZiAoJGRlYnVnID4gMSkgew0KCQllY2hvICIrKyBDT01CT3Mg KysiOw0KCQlkbXAoJGNvbWJvcyk7DQoJfQ0KCS8vIENvbnN0cnVjdCB0aGUgb3V0cHV0DQoJ JHRodW1ib3V0ID0gYXJyYXkoKTsNCgkkZ3JvdXBvdXQgPSBhcnJheSgpOw0KCSRuYXZvdXQg PSBhcnJheSgpOw0KCSRvdXQgPSBhcnJheSgpOw0KCSRjb2xsYXRpb25zID0gYXJyYXkoKTsN CgkkY2hJZGVudGlmaWVyID0gKCR0aHVtYmNoYW5nZSkgPyAiY2hhbmdlZCIgOiAib25jaGFu Z2UiOyAvLyBUT0RPOiBGaXggd2hlbiAkdGh1bWJjaGFuZ2UgaXMgcmVtb3ZlZA0KDQoJaWYg KCRkZWJ1ZyA+IDIpIHsNCgkJZWNobyAiKysgUkVDT1JEIFNFVCArKyI7DQoJCWRtcCgkcnMp Ow0KCX0NCglpZiAoJGRlYnVnID4gMykgew0KCQllY2hvICIrKyBBVkFJTEFCTEUgJz8nIFZB UlMgKysiOw0KCQlkbXAoJHByZXRleHQpOw0KCQlkbXAoJHRoaXNhcnRpY2xlKTsNCgl9DQoN CglpZigkcnMpIHsNCgkJJGlkeCA9IDA7DQoJCSRjdHIgPSAxOw0KCQkkdGh1bWJJZHggPSAw Ow0KCQkkdGh1bWJDdHIgPSAxOw0KCQkkbnVtSW1hZ2VzID0gY291bnQoJHJzKTsNCgkJJHJl cGFnZW1lbnRzID0gYXJyYXkoKTsNCg0KCQkvLyBTZXQgdXAgdGhlIHBhZ2luZyBmZWF0dXJl cyBpZiByZXF1aXJlZA0KCQlpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJCSRu ZXh0ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlICE9ICRudW1QYWdlcyk7DQoJCQkk cHJldiA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSA+IDEpOw0KDQoJCQkvLyBSZXBs YWNlIGFueSBwYWdpbmcgaW5mbyBpbiB0aGUgcXVlcnkgc3RyaW5nDQoJCQkkcHJldlBhZ2Ug PSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICR0aHVt UGFnZS0xKTsNCgkJCSRuZXh0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVz dF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlKzEpOw0KCQkJJHRoaXNQYWdlID0gc21kX2Fk ZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UpOw0K CQkJJGZpcnN0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwg JGdhbGxJRCwgMSk7DQoJCQkkbGFzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3Jl cXVlc3RfdXJpJ10sICRnYWxsSUQsICRudW1QYWdlcyk7DQoNCgkJCS8vIExhYmVscyBjYW4g YmUgc3BlY2lmaWVkIGluIHRoZSByZXBsYWNlbWVudCB0YWcgYWZ0ZXIgYSBwYXJhbWRlbGlt Lg0KCQkJLy8gJ2VhcmxpZXInIGFuZCAnbGF0ZXInIGRvbid0IGhhdmUgbGFiZWxzLiBBbnl0 aGluZyBzcGVjaWZpZWQgYWZ0ZXIgcGFyYW1kZWxpbSBpcyB0aGUgbWF4IG51bWJlciBvZiBw YWdlcyB0byBzaG93OyBlbXB0eSA9IGFsbCBwYWdlcw0KCQkJJGxhYmVsID0gYXJyYXkoDQoJ CQkJCSd7bmF2Zmlyc3R9JyA9PiAnRmlyc3QnLA0KCQkJCQkne25hdnByZXZ9JyA9PiAnJmxh cXVvOycsDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICcnLA0KCQkJCQkne25hdnRoaXN9JyA9 PiAkdGh1bVBhZ2UsDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+ICR0aHVtUGFnZSwNCgkJCQkJ J3tuYXZsYXRlcn0nID0+ICcnLA0KCQkJCQkne25hdm5leHR9JyA9PiAnJnJhcXVvOycsDQoJ CQkJCSd7bmF2bGFzdH0nID0+ICdMYXN0JywNCgkJCQkpOw0KDQoJCQkkbGFiZWxSRSA9ICcv XHsobmF2W2Etel0rKScuJHBhcmFtZGVsaW0uJyguKz8pXH0vJzsNCgkJCSRudW1MYWJlbHMg PSBwcmVnX21hdGNoX2FsbCgkbGFiZWxSRSwgJHBhZ2Vmb3JtLCAkbGFiZWxzKTsNCg0KCQkJ Zm9yICgkbGFiZWxDdHIgPSAwOyAkbGFiZWxDdHIgPCAkbnVtTGFiZWxzOyAkbGFiZWxDdHIr Kykgew0KCQkJCSRmaWVsZG5hbWUgPSAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJdLid9JzsN CgkJCQkkbGFiZWxbJGZpZWxkbmFtZV0gPSAkbGFiZWxzWzJdWyRsYWJlbEN0cl07DQoJCQkJ JHBhZ2Vmb3JtID0gc3RyX3JlcGxhY2UoJGxhYmVsc1swXVskbGFiZWxDdHJdLCAneycuJGxh YmVsc1sxXVskbGFiZWxDdHJdLid9JywgJHBhZ2Vmb3JtKTsNCgkJCX0NCg0KCQkJaWYgKCRk ZWJ1ZyA+IDEpIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgTEFCRUxTICsrIjsNCgkJCQlkbXAo JGxhYmVsKTsNCgkJCX0NCg0KCQkJLy8gR2VuZXJhdGUgJ2VhcmxpZXInIGFuZCAnbGF0ZXIn IGxpc3RzDQoJCQkkbnVtRWFybGllciA9IGludHZhbCgkbGFiZWxbJ3tuYXZlYXJsaWVyfSdd KTsNCgkJCSRudW1MYXRlciA9IGludHZhbCgkbGFiZWxbJ3tuYXZsYXRlcn0nXSk7DQoJCQkk bnVtRWFybGllciA9ICgkbnVtRWFybGllciAmJiAoJHRodW1QYWdlLSRudW1FYXJsaWVyID4g MSkpID8gJG51bUVhcmxpZXIgOiAkdGh1bVBhZ2UtMTsNCgkJCSRudW1MYXRlciA9ICgkbnVt TGF0ZXIgJiYgKCR0aHVtUGFnZSskbnVtTGF0ZXIgPCAkbnVtUGFnZXMpKSA/ICRudW1MYXRl ciA6ICRudW1QYWdlcy0kdGh1bVBhZ2U7DQoJCQkkbmF2RWFybGllciA9ICRuYXZMYXRlciA9 IGFycmF5KCk7DQoJCQlmb3IgKCRjb2QgPSAkdGh1bVBhZ2UtJG51bUVhcmxpZXI7ICRjb2Qg PCAkdGh1bVBhZ2U7ICRjb2QrKykgew0KCQkJCSRuYXZFYXJsaWVyW10gPSAnPGEgaHJlZj0i Jy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICRjb2Qp LiciPicuJGNvZC4nPC9hPic7DQoJCQl9DQoJCQlmb3IgKCRjb2QgPSAkdGh1bVBhZ2UrMTsg JGNvZCA8PSAkdGh1bVBhZ2UrJG51bUxhdGVyOyAkY29kKyspIHsNCgkJCQkkbmF2TGF0ZXJb XSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwg JGdhbGxJRCwgJGNvZCkuJyI+Jy4kY29kLic8L2E+JzsNCgkJCX0NCgkJCSRuYXZFYXJsaWVy ID0gZG9XcmFwKCRuYXZFYXJsaWVyLCAnJywgJG5hdmJyZWFrLCAnJyk7DQoJCQkkbmF2TGF0 ZXIgPSBkb1dyYXAoJG5hdkxhdGVyLCAnJywgJG5hdmJyZWFrLCAnJyk7DQoNCgkJCS8vIE1h a2UgdXAgdGhlIHJlcGFnZW1lbnRzIGFycmF5IGZvciBwYWdlZm9ybQ0KCQkJJHJlcGFnZW1l bnRzID0gYXJyYXkoDQoJCQkJCSd7bmF2Zmlyc3R9JyA9PiAoKCRwcmV2KSA/IGRvVGFnKCc8 YSBocmVmPSInLiRmaXJzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZmaXJzdH0nXS4nPC9hPics ICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZmaXJzdH0nXSwgJG5hdmJyZWFrLCAk ZW1wdHljbGFzcykpLA0KCQkJCQkne25hdnByZXZ9JyA9PiAoKCRwcmV2KSA/IGRvVGFnKCc8 YSBocmVmPSInLiRwcmV2UGFnZS4nIj4nLiRsYWJlbFsne25hdnByZXZ9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2cHJldn0nXSwgJG5hdmJyZWFrLCAkZW1w dHljbGFzcykpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAkbmF2RWFybGllciwNCgkJCQkJ J3tuYXZ0aGlzfScgPT4gZG9UYWcoJGxhYmVsWyd7bmF2dGhpc30nXSwgJG5hdmJyZWFrLCAn Y3VycmVudCAnLiRlbXB0eWNsYXNzKSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScgPT4gZG9UYWco JzxhIGhyZWY9IicuJHRoaXNQYWdlLiciPicuJGxhYmVsWyd7bmF2dGhpc3VybH0nXS4nPC9h PicsICRuYXZicmVhaywgJ2N1cnJlbnQnKSwNCgkJCQkJJ3tuYXZsYXRlcn0nID0+ICRuYXZM YXRlciwNCgkJCQkJJ3tuYXZuZXh0fScgPT4gKCgkbmV4dCkgPyBkb1RhZygnPGEgaHJlZj0i Jy4kbmV4dFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZuZXh0fSddLic8L2E+JywgJG5hdmJyZWFr KSA6IGRvVGFnKCRsYWJlbFsne25hdm5leHR9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3Mp KSwNCgkJCQkJJ3tuYXZsYXN0fScgPT4gKCgkbmV4dCkgPyBkb1RhZygnPGEgaHJlZj0iJy4k bGFzdFBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZsYXN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6 IGRvVGFnKCRsYWJlbFsne25hdmxhc3R9J10sICRuYXZicmVhaywgJGVtcHR5Y2xhc3MpKSwN CgkJCQkJJ3tuYXZ0aGlzcGFnZXVybH0nID0+ICR0aGlzUGFnZSwNCgkJCQkJJ3tuYXZuZXh0 cGFnZXVybH0nID0+ICgoJG5leHQpID8gJG5leHRQYWdlIDogJycpLA0KCQkJCQkne25hdnBy ZXZwYWdldXJsfScgPT4gKCgkcHJldikgPyAkcHJldlBhZ2UgOiAnJyksDQoJCQkJCSd7bmF2 Zmlyc3RwYWdldXJsfScgPT4gJGZpcnN0UGFnZSwNCg0KCQkJCQkne25hdmxhc3RwYWdldXJs fScgPT4gJGxhc3RQYWdlLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywN CgkJCQkJJ3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2VzLA0KCQkJCQkne21heGltYWdlc30n ID0+ICRhbGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJCS8vIFBlcmZvcm0gdGhlIHN1YnN0aXR1 dGlvbnMNCgkJCQkkbmF2b3V0W10gPSBwYXJzZShzdHJ0cigkcGFnZWZvcm0sICRyZXBhZ2Vt ZW50cykpOw0KCQl9DQoNCgkJLy8gRm9yIGV2ZXJ5IGltYWdlIGluIHRoZSBnYWxsZXJ5Li4u DQoJCWZvcmVhY2goJHJzIGFzICRrZXkgPT4gJHJvdykgew0KCQkJaWYgKCRkaXJlY3Rvcnkp IHsNCgkJCQkkdXJsUGF0aCA9ICRyb3dbJ3BhdGgnXS4nLyc7DQoJCQl9IGVsc2Ugew0KCQkJ CSR1cmxQYXRoID0gaHUuJGltZ19kaXIuJy8nOw0KCQkJfQ0KCQkJJHRoZVRodW1iID0gJHVy bFBhdGggLiAkcm93WydpZCddIC4gJHRodW1ibW9kIC4gJHJvd1snZXh0J107DQoJCQkkZnVs bFNpemUgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAkZnVsbG1vZCAuJHJvd1snZXh0J107 DQoNCgkJCS8vIERvIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRodW1iIGNvdW50ZXIgdGhpcyB0 aW1lPw0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFs KSB7DQoJCQkJaWYgKCRyb3dbJHJlc2V0T3B0XSAhPSAkcmVzZXRWYWwpIHsNCgkJCQkJJHRo dW1iSWR4ID0gMDsNCgkJCQkJJHRodW1iQ3RyID0gMTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0K CQkJfQ0KDQoJCQkvLyBJcyBhIHRodW1iL3RleHQgb2JqZWN0IHJlcXVpcmVkIHRoaXMgdGlt ZT8NCgkJCSRvYmplY3QgPSAnJzsNCgkJCWlmICgkdGh1bWJJZHggPj0gJHRodW1ib2Zmc2V0 ICYmICR0aHVtYklkeCA8ICR0aHVtYm9mZnNldCskdGh1bWJsaW1pdCkgew0KCQkJCXN3aXRj aCAoJHR5cGUpIHsNCgkJCQkJY2FzZSAnaW1hZ2UnOg0KCQkJCQkJJG9iamVjdCA9ICgkdGV4 dCkgPyAkdGV4dCA6ICc8aW1nIHNyYz0iJy4kdGhlVGh1bWIuJyInIC4oKCRyb3dbJ2FsdCdd KSA/ICcgYWx0PSInLiRyb3dbJ2FsdCddLiciJyA6ICcnKSAuKCgkdGh1bWJXaWR0aCkgPyAn IHdpZHRoPSInLiR0aHVtYldpZHRoLiR0aHVtYldVbml0cy4nIicgOiAnJykgLigoJHRodW1i SGVpZ2h0KSA/ICcgaGVpZ2h0PSInLiR0aHVtYkhlaWdodC4kdGh1bWJIVW5pdHMuJyInIDog JycpIC4nIC8+JzsNCgkJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gQ29uc3Ry dWN0IHRoZSByZXBsYWNlbWVudCBhcnJheQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0K CQkJCQkne2lkfScgPT4gJHJvd1snaWQnXSwNCgkJCQkJJ3tuYW1lfScgPT4gJHJvd1snbmFt ZSddLA0KCQkJCQkne2V4dH0nID0+ICRyb3dbJ2V4dCddLA0KCQkJCQkne2NhdGVnb3J5fScg PT4gJHJvd1snY2F0ZWdvcnknXSwNCgkJCQkJJ3tjYXRlZ29yeV90aXRsZX0nID0+ICgoaXNz ZXQoJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSkpID8gJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSA6 ICcnKSwNCgkJCQkJJ3thdXRob3J9JyA9PiAkcm93WydhdXRob3InXSwNCgkJCQkJJ3toYXN0 aHVtYn0nID0+ICRyb3dbJ3RodW1ibmFpbCddLA0KCQkJCQkne3VybH0nID0+ICRmdWxsU2l6 ZSwNCgkJCQkJJ3t0aHVtYnVybH0nID0+ICR0aGVUaHVtYiwNCgkJCQkJJ3tpbWFnZXBhdGh9 JyA9PiAkdXJsUGF0aCwNCgkJCQkJJ3tpbWFnZWRlZn0nID0+IGJhc2VuYW1lKCRmdWxsU2l6 ZSksDQoJCQkJCSd7dGh1bWJkZWZ9JyA9PiBiYXNlbmFtZSgkdGhlVGh1bWIpLA0KCQkJCQkn e2FsdH0nID0+ICRyb3dbJ2FsdCddLA0KCQkJCQkne3RpdGxlfScgPT4gJHJvd1snY2FwdGlv biddLA0KCQkJCQkne3RodW1id2lkdGh9JyA9PiAkdGh1bWJXaWR0aCwNCgkJCQkJJ3t0aHVt YmhlaWdodH0nID0+ICR0aHVtYkhlaWdodCwNCgkJCQkJJ3t0aHVtYnd1bml0c30nID0+ICR0 aHVtYldVbml0cywNCgkJCQkJJ3t0aHVtYmh1bml0c30nID0+ICR0aHVtYkhVbml0cywNCgkJ CQkJJ3t3aWR0aH0nID0+ICRyb3dbJ3cnXSwNCgkJCQkJJ3toZWlnaHR9JyA9PiAkcm93Wydo J10sDQoJCQkJCSd7ZGF0ZX0nID0+ICRyb3dbJ2RhdGUnXSwNCgkJCQkJJ3tvYmplY3R9JyA9 PiAkb2JqZWN0LA0KCQkJCQkne2dhbGxlcnlpZH0nID0+ICRnYWxsSUQsDQoJCQkJCSd7aW5k ZXh9JyA9PiAkaWR4LA0KCQkJCQkne2NvdW50ZXJ9JyA9PiAkY3RyLA0KCQkJCQkne3RodW1i aW5kZXh9JyA9PiAkdGh1bWJJZHgsDQoJCQkJCSd7dGh1bWJjb3VudGVyfScgPT4gJHRodW1i Q3RyLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3ttYXhp bWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJCS8vIEFwcGVuZCBhbnkgY2hh bmdlZCBpdGVtcyB0aGF0IGFyZSByZXF1aXJlZA0KCQkJJGVuZHRhZyA9IGZhbHNlOw0KCQkJ Zm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJ JHJlcGxhY2VtZW50c1sneycuJGNoSWRlbnRpZmllci4kcGFyYW1kZWxpbS4kcmVzZXRPcHQu J30nXSA9ICgkdGh1bWJJZHggPT0gMCkgPyBkb1RhZygkcm93WyRyZXNldE9wdF0sICRvbmNo YW5nZXdyYXB0YWcsICRvbmNoYW5nZWNsYXNzKSA6ICcnOw0KCQkJCS8vIERvIGEgc25lYWt5 ICh5dWspIGxvb2thaGVhZA0KCQkJCWlmIChpc3NldCgkcnNbJGtleSsxXSkpIHsNCgkJCQkJ aWYoJHJzWyRrZXkrMV1bJHJlc2V0T3B0XSAhPSAkcm93WyRyZXNldE9wdF0pIHsNCgkJCQkJ CSRlbmR0YWcgPSB0cnVlOw0KCQkJCQl9DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGVuZHRhZyA9 IHRydWU7IC8vIExhc3QgaW1hZ2UNCgkJCQl9DQoJCQl9DQoNCgkJCSRyZXBsYWNlbWVudHNb J3tncm91cHRhZ2VuZH0nXSA9ICgkZ3JvdXB0YWcgJiYgJGVuZHRhZykgPyAnPC8nIC4gJGdy b3VwdGFnIC4gJz4nIDogJyc7DQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdzdGFydH0n XSA9ICgkZ3JvdXB0YWcgJiYgJHRodW1iSWR4ID09IDApID8gJzwnIC4gJGdyb3VwdGFnIC4g KCgkZ3JvdXBjbGFzcykgPyAnIGNsYXNzPSInLiRncm91cGNsYXNzLiciJyA6ICcnKSAuICc+ JyA6ICcnOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNvbWJvcw0KCQkJZm9yZWFjaCAoJGNvbWJv cyBhcyAkZGVmTmFtZSA9PiAkbmV3RGVmKSB7DQoJCQkJaWYgKCFhcnJheV9rZXlfZXhpc3Rz KCRkZWZOYW1lLCAkcmVwbGFjZW1lbnRzKSkgew0KCQkJCQkkcmVwbGFjZW1lbnRzWyRkZWZO YW1lXSA9IHN0cnRyKCRuZXdEZWYsICRyZXBsYWNlbWVudHMpOw0KCQkJCX0NCgkJCX0NCg0K CQkJLy8gU29sb3MgYXJlIGl0ZW1zIGluIHRoZSBvdXRwdXQgZm9ybSB0aGF0IHJlcXVpcmUg ZGV0YWlscyBmcm9tIGEgc3BlY2lmaWMgcm93LiBVc2VmdWwgb25seSBpbiBjb2xsYXRpb24N CgkJCS8vIG1vZGUsIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSByZXBsYWNlbWVudHMgYXJyYXkg b24gYW4gYXMtbmVlZGVkIGJhc2lzIHRvIHNhdmUgc3BhY2UvdGltZQ0KCQkJJHNvbG9SRSA9 ICcvXHsoW2EtejAtOV0rKSMnLiRjdHIuJ1x9Lyc7DQoJCQkkbnVtU29sb3MgPSBwcmVnX21h dGNoX2FsbCgkc29sb1JFLCAkdGhpbmcsICRzb2xvcyk7DQoJCQlmb3IgKCRzb2xvQ3RyID0g MDsgJHNvbG9DdHIgPCAkbnVtU29sb3M7ICRzb2xvQ3RyKyspIHsNCgkJCQkkZmllbGRuYW1l ID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJyMnLiRjdHIuJ30nOw0KCQkJCSRncmFiZmll bGQgPSAneycuJHNvbG9zWzFdWyRzb2xvQ3RyXS4nfSc7DQoJCQkJJHJlcGxhY2VtZW50c1sk ZmllbGRuYW1lXSA9ICRyZXBsYWNlbWVudHNbJGdyYWJmaWVsZF07DQoJCQl9DQoNCgkJCS8v IEFkZCB0aGUgbmF2aWdhdGlvbiBpdGVtcyBpZiB0aGV5J3JlIGRlZmluZWQNCgkJCWlmIChj b3VudCgkcmVwYWdlbWVudHMpID4gMCkgew0KCQkJCSRyZXBsYWNlbWVudHMgPSBhcnJheV9t ZXJnZSgkcmVwYWdlbWVudHMsICRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJCQlpZiAoJGRl YnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyA6IElNQUdFICIuJGN0ci4i ICsrIjsNCgkJCQlkbXAoJHJlcGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJCS8vIEluIGNvbGxh dGUgbW9kZSB0aGUgZm9ybSBpcyBvbmx5IHBhcnNlZCBhdCB0aGUgZW5kOiBidWlsZCBhIGNv bGxvc2FsIG11bHRpLWRpbWVuc2lvbiBhcnJheSBvZiBhbGwgaXRlbXMgaGVyZQ0KCQkJaWYg KCRjb2xsYXRlKSB7DQoJCQkJZm9yZWFjaCAoJHJlcGxhY2VtZW50cyBhcyAkZGVmTmFtZSA9 PiAkZGVmVmFsKSB7DQoJCQkJCSRjb2xsYXRpb25zWyRkZWZOYW1lXVtdID0gJGRlZlZhbDsN CgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSR0aHVtYm91dFtdID0gcGFyc2Uoc3RydHIoJHRo aW5nLCAkcmVwbGFjZW1lbnRzKSk7DQoJCQl9DQoNCgkJCS8vIEtlZXAgdHJhY2sgb2YgdGhl IGN1cnJlbnQgdmFsdWVzIHNvIHdlIGtub3cgaWYgdGhleSBjaGFuZ2UgbmV4dCB0aW1lDQoJ CQlmb3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJ CQkkcmVzZXRPcHRzWyRyZXNldE9wdF0gPSAkcm93WyRyZXNldE9wdF07DQoJCQl9DQoJCQkk dGh1bWJJZHgrKzsNCgkJCSR0aHVtYkN0cisrOw0KCQkJJGlkeCsrOw0KCQkJJGN0cisrOw0K CQl9DQoJCWlmICgkY29sbGF0ZSkgew0KCQkJZm9yZWFjaCAoJGNvbGxhdGlvbnMgYXMgJGl0 ZW0gPT4gJGxpc3QpIHsNCgkJCQkvLyBRdW90ZSB0aGUgbGlzdHMgaWYgcmVxdWlyZWQNCgkJ CQkkbGlzdCA9IChlbXB0eSgkZGJsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkZGJsUXVv dGUpKSA/IGRvQXJyYXkoJGxpc3QsICdzbWRfZG9EYmxRdW90ZScpIDogJGxpc3Q7DQoJCQkJ JGxpc3QgPSAoZW1wdHkoJHNnbFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJHNnbFF1b3Rl KSkgPyBkb0FycmF5KCRsaXN0LCAnZG9RdW90ZScpIDogJGxpc3Q7DQoJCQkJJGNvbGxhdGlv bnNbJGl0ZW1dID0gaW1wbG9kZSgkY29sbGF0ZWRlbGltLCAkbGlzdCk7DQoJCQl9DQoJCQlp ZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIENPTExBVElPTlMgKysiOw0KCQkJCWRt cCgkY29sbGF0aW9ucyk7DQoJCQl9DQoJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0 aGluZywgJGNvbGxhdGlvbnMpKTsNCgkJfQ0KDQoJCS8vIFRhY2sgb24gdGhlIHBhZ2luZyBm cm9tIGVhcmxpZXIgaWYgaXQncyB0byBnbyBhZnRlcndhcmRzDQoJCWlmICgoJGxpbWl0ID4g MCkgJiYgJHBhZ2luZykgew0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBQ QUdJTkcgUkVQTEFDRU1FTlRTICsrIjsNCgkJCQlkbXAoJHJlcGFnZW1lbnRzKTsNCgkJCX0N CgkJfQ0KCX0NCg0KCS8vIEFkZCB0aGUgcGFnaW5nIHRvIHRoZSBvdXRwdXQgaWYgaXQncyB0 byBnbyBhYm92ZSB0aGUgdGh1bWJzDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7 DQoJCWlmIChpbl9hcnJheSgiYWJvdmUiLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRv V3JhcCgkbmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoN Cgkkb3V0W10gPSBkb1dyYXAoJHRodW1ib3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3Mp Ow0KDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9hcnJheSgi YmVsb3ciLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAkbmF2 d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCglpZiAoJGRlYnVnID4gMikg ew0KCQllY2hvICIrKyBGSU5BTCBPVVRQVVQgKysiOw0KCQlkbXAoJG91dCk7DQoJfQ0KDQoJ cmV0dXJuIGpvaW4oIiAiLCAkb3V0KTsNCn0NCg0KLy8gUmV0dXJuIGFuIGV4cGFuZGVkIGxp c3Qgb2YgaXRlbXM6DQovLyAxKSBBbnl0aGluZyBjb250YWluaW5nICc/JyBvciAnIScgaXMg Y2hlY2tlZCBmb3IgYSBtYXRjaCB3aXRoIGEgVFhQIGZpZWxkDQovLyAyKSBBbnkgcmFuZ2Vz IG9mIGl0ZW1zIGFyZSBleHBhbmRlZCAoZS5nLiA0LTcgPSA0LDUsNiw3KQ0KLy8gMykgVFhQ IGZpZWxkcyBtYXkgdGhlbXNlbHZlcyBiZSBsaXN0cyBvciByYW5nZXMNCi8vIDQpIEFueXRo aW5nIHRoYXQgaXMgbm90IGEgVFhQIGZpZWxkIGlzIHVzZWQgdmVyYmF0aW0NCi8vIDUpIFRo ZSBpdGVtcyBhcmUgcmV0dXJuZWQgYXMgMiBsaXN0czsgaW5jbHVzaW9uIGFuZCBleGNsdXNp b24NCi8vIEFyZ3M6DQovLyAgbHN0ID0gdGhlIGxpc3QgYXMgYSBkZWxpbWl0ZWQgc3RyaW5n DQovLyAgcm5nID0gd2hldGhlciB0byBhbGxvdyByYW5nZXMgb3Igbm90IChib29sKQ0KLy8g IHN1YiA9IHRoZSB0eXBlIG9mIHN1YmNhdGVnb3J5IHRvIHRyYXZlcnNlIChpbWFnZSwgZmls ZSwgbGluaywgYXJ0aWNsZSwgbm9uZT0iIikgYW5kIGhvdyBtYW55IGxldmVscyB0byBnbyBk b3duIChlLmcuIGltYWdlOjIpDQovLyAgcXRlID0gd2hldGhlciB0byBxdW90ZSBlYWNoIGl0 ZW0gaW4gdGhlIGFycmF5IG9yIG5vdCAoYm9vbCkNCi8vICBkbG0gPSB0aGUgZGVsaW1pdGVy IChzdHJpbmcpDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2RvTGlzdCIpKSB7DQpmdW5j dGlvbiBzbWRfZG9MaXN0KCRsc3QsICRybmc9dHJ1ZSwgJHN1Yj0iIiwgJHF0ZT10cnVlLCAk ZGxtPSIsIikgew0KCWdsb2JhbCAkdGhpc2FydGljbGUsICRwcmV0ZXh0Ow0KDQoJJGluYyA9 ICRleGMgPSBhcnJheSgpOw0KCSRsc3QgPSBkb19saXN0KCRsc3QsICRkbG0pOw0KCSRtb2RS RSA9ICcvKFw/fFwhKShbQS1aYS16MC05X1wtIF0rKS8nOw0KCWZvcmVhY2ggKCRsc3QgYXMg JGl0ZW0pIHsNCgkJJG1vZCA9IDA7IC8vIDAgPSBpbmNsdWRlLCAxID0gZXhjbHVkZQ0KCQkk bnVtTW9kcyA9IHByZWdfbWF0Y2hfYWxsKCRtb2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCQlm b3IgKCRtb2RDdHIgPSAwOyAkbW9kQ3RyIDwgJG51bU1vZHM7ICRtb2RDdHIrKykgew0KCQkJ Ly8gbW9kICJ0eXBlIiBpcyBnb3Zlcm5lZCBieSB0aGUgZmlyc3Qgb25lIGZvdW5kIG9ubHku IGkuZS4gaWYgImFydGljbGUtP2MhcyIgd2FzIHVzZWQgaW4gb25lIGZpZWxkDQoJCQkvLyBp dCB3b3VsZCBiZSBhbiAiaW5jbHVkZSIgb2YgdGhlIHdvcmQgImFydGljbGUtIiBwbHVzIHRo ZSBjYXRlZ29yeSBhbmQgc2VjdGlvbiBjb25jYXRlbmF0ZWQNCgkJCSRtb2QgPSAoJG1vZHNb MV1bMF0gPT09ICIhIikgPyAxIDogMDsNCgkJCSRtb2RDaGFyID0gJG1vZHNbMV1bJG1vZEN0 cl07DQoJCQkkbW9kSXRlbSA9IHRyaW0oJG1vZHNbMl1bJG1vZEN0cl0pOw0KCQkJJGxvd2l0 ZW0gPSBzdHJ0b2xvd2VyKCRtb2RJdGVtKTsNCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRs b3dpdGVtLCAkcHJldGV4dCkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFy LiRtb2RJdGVtLCAkcHJldGV4dFskbG93aXRlbV0sICRpdGVtKTsNCgkJCX0gZWxzZSBpZiAo aXNzZXQoJHRoaXNhcnRpY2xlWyRsb3dpdGVtXSkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBs YWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhpc2FydGljbGVbJGxvd2l0ZW1dLCAkaXRlbSk7 DQoJCQl9IGVsc2Ugew0KCQkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0 ZW0sICRtb2RJdGVtLCAkaXRlbSk7DQoJCQl9DQoJCX0NCg0KCQkvLyBIYW5kbGUgcmFuZ2Vz IG9mIHZhbHVlcw0KCQlpZiAoJHJuZyAmJiBwcmVnX21hdGNoKCcvXihcZCspXC0oXGQrKSQv JywgJGl0ZW0pKSB7DQoJCQlsaXN0KCRsbywgJGhpKSA9IGV4cGxvZGUoIi0iLCAkaXRlbSwg Mik7DQoJCQkkaXRlbSA9IGltcGxvZGUoJGRsbSwgcmFuZ2UoJGxvLCAkaGkpKTsNCgkJfQ0K DQoJCS8vIEl0ZW0gbWF5IGJlIGVtcHR5OyBpZ25vcmUgaXQgaWYgc28NCgkJaWYgKCRpdGVt KSB7DQoJCQkkaXRlbSA9IGRvX2xpc3QoJGl0ZW0sICRkbG0pOw0KCQkJLy8gSGFuZGxlIHN1 Yi1jYXRlZ29yaWVzDQoJCQlpZiAoJHN1Yikgew0KCQkJCWxpc3QoJHN1YnR5cGUsICRsZXZl bCkgPSBleHBsb2RlKCI6IiwgJHN1Yik7DQoJCQkJJGxldmVsID0gKGVtcHR5KCRsZXZlbCkp ID8gMCA6ICRsZXZlbDsNCgkJCQkkbGV2ZWwgPSAoc3RydG9sb3dlcigkbGV2ZWwpPT0iYWxs IikgPyA5OTk5OSA6ICRsZXZlbDsNCgkJCQlmb3JlYWNoICgkaXRlbSBhcyAkY2F0KSB7DQoJ CQkJCSRjYXRzID0gZ2V0VHJlZShkb3NsYXNoKCRjYXQpLCAkc3VidHlwZSk7DQoJCQkJCWZv cmVhY2ggKCRjYXRzIGFzICRqZHggPT4gJHZhbCkgew0KCQkJCQkJaWYgKCRjYXRzWyRqZHhd WydsZXZlbCddIDw9ICRsZXZlbCkgew0KCQkJCQkJCSRpdGVtW10gPSAkY2F0c1skamR4XVsn bmFtZSddOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBRdW90ZSBp ZiBhc2tlZA0KCQkJJGl0ZW0gPSAoJHF0ZSkgPyBkb0FycmF5KCRpdGVtLCAnZG9RdW90ZScp IDogJGl0ZW07DQoJCQlpZiAoJG1vZCA9PT0gMCkgew0KCQkJCSRpbmMgPSBhcnJheV91bmlx dWUoYXJyYXlfbWVyZ2UoJGluYywgJGl0ZW0pKTsNCgkJCX0gZWxzZSB7DQoJCQkJJGV4YyA9 IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgkZXhjLCAkaXRlbSkpOw0KCQkJfQ0KCQl9DQoJ fQ0KCXJldHVybiBhcnJheSgkaW5jLCAkZXhjKTsNCn0NCn0NCg0KLy8gQWx0ZXJuYXRpdmUg dG8gdGhlIGNvcmUncyBkb1F1b3RlKCkuIFRoaXMgb25lIGRibC1xdW90ZXMgaW5zdGVhZCBv ZiBzZ2wtcXVvdGVzDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2RvRGJsUXVvdGUiKSkg ew0KZnVuY3Rpb24gc21kX2RvRGJsUXVvdGUoJHZhbCkgew0KCXJldHVybiAnIicuJHZhbC4n Iic7DQp9DQp9DQoNCi8vIFdvcmsgb3V0IHdoaWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9u IGFuZCByZXR1cm4gdGhlIHJlbGV2YW50IGluZm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRy cywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKSB7DQoJJG51bVRodW1zID0g Y291bnQoJHJzKTsNCglpZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVBh Z2VzID0gKCRudW1UaHVtcyA+IDApID8gY2VpbCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJ CSR0aHVtUGFnZSA9ICghZ3BzKCRnYWxsSUQpKSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRv ZmZzZXQgPSAoJHRodW1QYWdlIC0gMSkgKiAkbGltaXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8g cGFnaW5nIHJlcXVpcmVkDQoJCSRudW1QYWdlcyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJ fQ0KCXJldHVybiBhcnJheSgkbnVtVGh1bXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zm c2V0KTsNCn0NCg0KLy8gUmVhZCB0aGUgZ2l2ZW4gZGVsaW1pdGVkIGRpcmVjdG9yaWVzIGFu ZCBnZXQgYWxsIGZpbGVzIHRoYXQgbWF0Y2guDQovLyBHbyBkb3duIGFzIG1hbnkgc3ViZGly IGxldmVscyBhcyBnaXZlbiBpbiB0aGUgJHN1YiBwYXJhbWV0ZXINCmZ1bmN0aW9uIHNtZF9k b0RpcmVjdG9yeSgkbHN0LCAkbHZsPTAsICRzdWI9MCwgJG1hdGNoPSIiLCAkZGxtPSIsIiwg JGN0cj0wKSB7DQoJbGlzdCgkZGlyaW5jLCAkZGlyZXhjKSA9IHNtZF9kb0xpc3QoJGxzdCwg ZmFsc2UsICRzdWIsIGZhbHNlLCAkZGxtKTsNCglsaXN0KCRtYXRjaGluYywgJG1hdGNoZXhj KSA9IHNtZF9kb0xpc3QoJG1hdGNoLCBmYWxzZSwgJycsIGZhbHNlLCAkZGxtKTsNCgkkbWF0 Y2hpbmMgPSAiLioiIC4oKCRtYXRjaGluYykgPyAiKCIgLmltcGxvZGUoInwiLCRtYXRjaGlu YykuIikrLioiIDogIiIpOw0KCSRtYXRjaGV4YyA9ICgkbWF0Y2hleGMpID8gIi4qKCIgLmlt cGxvZGUoInwiLCRtYXRjaGV4YykuIikrLioiIDogInNtZF9nbHJ5XyIubXRfcmFuZCgpOw0K DQoJJHN1YiA9IChlbXB0eSgkc3ViKSkgPyAwIDogJHN1YjsNCgkkc3ViID0gKHN0cnRvbG93 ZXIoJHN1Yik9PSJhbGwiKSA/IDk5OTk5IDogJHN1YjsNCgkkZmlsZUxpc3QgPSBhcnJheSgp Ow0KCWZvcmVhY2ggKCRkaXJpbmMgYXMgJGRpcikgew0KCQlpZiAoJGhhbmRsZSA9IEBvcGVu ZGlyKCRkaXIpKSB7DQoJCQl3aGlsZSAoKCRmaWxlID0gQHJlYWRkaXIoJGhhbmRsZSkpICE9 PSBmYWxzZSkgew0KCQkJCSRmdWxscGF0aCA9ICRkaXIuRFMuJGZpbGU7DQoJCQkJaWYgKHBy ZWdfbWF0Y2goIi8iLiRtYXRjaGluYy4iLyIsICRmdWxscGF0aCkgJiYgIXByZWdfbWF0Y2go Ii8iLiRtYXRjaGV4Yy4iLyIsICRmdWxscGF0aCkpIHsNCgkJCQkJaWYgKGlzX2RpcigkZnVs bHBhdGgpKSB7DQoJCQkJCQlpZiAoKCRmaWxlID09ICIuIikgfHwgKCRmaWxlPT0gIi4uIikg fHwgKGluX2FycmF5KCRmaWxlLCAkZGlyZXhjKSkgfHwgKCRsdmwgPj0gJHN1YikpIHsNCgkJ CQkJCQljb250aW51ZTsNCgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJLy8gUmVjdXJzZSB0aGUg c3ViZGlyLiBOb3RlIHRoYXQgdGhlICchJyBpcyB0ZW1wb3JhcmlseSBhZGRlZCBiYWNrIHRv IGVhY2ggZGlyZXhjIGl0ZW0NCgkJCQkJCQkkdG1wID0gJGRpcmV4YzsgLy8gRG9uJ3Qgb3Zl cndyaXRlIHRoZSBvcmlnaW5hbCBhcnJheQ0KCQkJCQkJCWFycmF5X3Vuc2hpZnQoJHRtcCwg JGZ1bGxwYXRoKTsNCgkJCQkJCQkkc3ViRmlsZXMgPSBzbWRfZG9EaXJlY3RvcnkoaW1wbG9k ZSgkZGxtLiIhIiwgJHRtcCksICRsdmwrMSwgJHN1YiwgJG1hdGNoLCAkZGxtLCAkY3RyKTsN CgkJCQkJCQkkZmlsZUxpc3QgPSBhcnJheV9tZXJnZSgkZmlsZUxpc3QsICRzdWJGaWxlcyk7 DQoJCQkJCQkJJGN0ciArPSBjb3VudCgkc3ViRmlsZXMpOw0KCQkJCQkJCWNvbnRpbnVlOw0K CQkJCQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJGZpbGVzdGF0ID0gc3RhdCgkZnVsbHBh dGgpOw0KCQkJCQkJJGltZ3NpemUgPSBnZXRpbWFnZXNpemUoJGZ1bGxwYXRoKTsNCgkJCQkJ CSRmaWxlTGlzdFskY3RyXVsncGF0aCddID0gJGRpcjsNCgkJCQkJCSRmaWxlTGlzdFskY3Ry XVsnbmFtZSddID0gYmFzZW5hbWUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3Ry XVsnaWQnXSA9IHByZWdfcmVwbGFjZSgnL1wuLiskLycsICcnLCAkZmlsZSk7DQoJCQkJCQkk ZmlsZUxpc3RbJGN0cl1bJ2FsdCddID0gJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2Nh cHRpb24nXSA9ICcnOw0KCQkJCQkJJHBhcnRzID0gZXhwbG9kZShEUywgJGRpcik7DQoJCQkJ CQkkZmlsZUxpc3RbJGN0cl1bJ2NhdGVnb3J5J10gPSAoY291bnQoJHBhcnRzKSA+IDEpID8g ZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYXV0aG9yJ10gPSBz dHJ2YWwoJGZpbGVzdGF0Wyd1aWQnXSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2RhdGUn XSA9IHN0cmZ0aW1lKCIlWS0lbS0lZCAlSDolTTolUyIsICRmaWxlc3RhdFsnY3RpbWUnXSk7 DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKCIuIiwgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0 WyRjdHJdWydleHQnXSA9IChjb3VudCgkcGFydHMpID4gMSkgPyAiLiIuZW5kKCRwYXJ0cykg OiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsndyddID0gKGlzX2FycmF5KCRpbWdzaXpl KSkgPyBzdHJ2YWwoJGltZ3NpemVbMF0pIDogJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1b J2gnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkpID8gc3RydmFsKCRpbWdzaXplWzFdKSA6ICcn Ow0KCQkJCQl9DQoJCQkJCSRjdHIrKzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRoYW5k bGUpIHsNCgkJCUBjbG9zZWRpcigkaGFuZGxlKTsNCgkJfQ0KCX0NCglyZXR1cm4gJGZpbGVM aXN0Ow0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX3JlbW92ZVFTVmFyIikpIHsN CmZ1bmN0aW9uIHNtZF9yZW1vdmVRU1ZhcigkdXJsLCAka2V5KSB7DQoJJHVybCA9IHByZWdf cmVwbGFjZSgnLyguKikoXD98JiknIC4gJGtleSAuICc9W14mXSs/KCYpKC4qKS9pJywgJyQx JDIkNCcsICR1cmwgLiAnJicpOw0KCSR1cmwgPSBzdWJzdHIoJHVybCwgMCwgLTEpOw0KCXJl dHVybiAoJHVybCk7DQp9DQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfYWRkUVNW YXIiKSkgew0KZnVuY3Rpb24gc21kX2FkZFFTVmFyKCR1cmwsICRrZXksICR2YWx1ZSkgew0K CSR1cmwgPSBzbWRfcmVtb3ZlUVNWYXIoJHVybCwgJGtleSk7DQoJaWYgKHN0cnBvcygkdXJs LCAnPycpID09PSBmYWxzZSkgew0KCQlyZXR1cm4gKCR1cmwgLiAnPycgLiAka2V5IC4gJz0n IC4gJHZhbHVlKTsNCgl9IGVsc2Ugew0KCQlyZXR1cm4gKCR1cmwgLiAnJicgLiAka2V5IC4g Jz0nIC4gJHZhbHVlKTsNCgl9DQp9DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxw IjtzOjQxOTIxOiIJPHA+PGRpdiBpZD0ic21kX2hlbHAiPjwvcD4KCgk8aDEgaWQ9InRvcCI+ c21kX2dhbGxlcnk8L2gxPgoKCTxoMiBpZD0iY29udGVudHMiPkNvbnRlbnRzPC9oMj4KCgk8 dWw+CgkJPGxpPjxhIGhyZWY9IiNmZWF0dXJlcyI+RmVhdHVyZXM8L2E+PC9saT4KCQk8bGk+ PGEgaHJlZj0iI2F1dGhvciI+QXV0aG9yPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpbnN0 YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvYT48L2xpPgoJCTxsaT48YSBo cmVmPSIjdXNhZ2UiPlRhZyB1c2FnZTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3NtZF9n YWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjZ2FsbGVyeV9m b3JtIj5HYWxsZXJ5IGZvcm08L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNyZXBfZ2FsbGVy eSI+UmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVm PSIjcGFnaW5nX2Zvcm0iPlBhZ2luZyBmb3JtPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIj cmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxs aT48YSBocmVmPSIjY29tYm9zIj5Db21ib3M8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2Nv bGxhdGVfbW9kZSI+Q29sbGF0ZSBtb2RlPC9hPjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxh IGhyZWY9IiNleGFtcGxlcyI+RXhhbXBsZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2No YW5nZWxvZyI+Q2hhbmdlbG9nPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjcmVkaXRzIj5D cmVkaXRzPC9hPjwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9o Mj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRzIGFsbCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1 dHVyZSBnYWxsZXJ5IHNjcmlwdHMgaW5jbHVkaW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9v bHRpcCwgbGlnaHRib3gsIGxpdGVib3gsIHNsaW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBz bGlkZXNob3csIGZhbmN5em9vbSwgZXRjPC9saT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2UgKG9yIG9wdGlvbmFs bHkgYSBsaXN0IG9mIGRpcmVjdG9yaWVzKSB0aGF0IG1hdGNoIGNhdGVnb3JpZXMgb3IgSURz PC9saT4KCQk8bGk+VXNlIGFydGljbGUgZmllbGRzIHRvIGhvbGQgbGlzdHMgb2YgaW1hZ2Ug Y2F0ZWdvcmllcy9JRHMgZm9yIGFydGljbGUtc3BlY2lmaWMgZ2FsbGVyaWVzPC9saT4KCQk8 bGk+TXVsdGktbGV2ZWwgc3ViLWNhdGVnb3J5IHN1cHBvcnQ8L2xpPgoJCTxsaT5HYWxsZXJ5 IGxheW91dCBpcyBkZWZpbmVkIGluIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g Zm9ybTwvbGk+CgkJPGxpPkRpcmVjdC1hY2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQg YW5kIHRoZSBsYXlvdXQgb2YgcGFnaW5nIGZlYXR1cmVzIGlzIGNvbnRyb2xsZWQgYnkgYSBz ZWNvbmQgZm9ybTwvbGk+CgkJPGxpPlVzZXMgYSB0YWctcmVwbGFjZW1lbnQgc3lzdGVtIGxp a2UgdGhlIHdldF9mb3JfZWFjaF9pbWFnZSBwbHVnaW48L2xpPgoJPC91bD4KCgk8aDIgaWQ9 ImF1dGhvciI+QXV0aG9yPC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5j b20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29uPC9hPi4gRm9yIG90aGVyIHNvZnR3YXJlIGJ5 IG1lLCBvciB0byBtYWtlIGEgZG9uYXRpb24sIHNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3N0 ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0 YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQg dGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3Jn L3BsdWdpbnMvOTU3L3NtZF9nYWxsZXJ5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUg c29mdHdhcmUgcGFnZSBhYm92ZSwgcGFzdGUgdGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxs IGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1 bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0yNjQ4MiI+Zm9ydW0gdGhyZWFk PC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhl cndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNp bXBseSBkZWxldGUgaXQgZnJvbSB0aGUgQWRtaW4tJmd0O1BsdWdpbnMgdGFiLjwvcD4KCgk8 aDIgaWQ9InVzYWdlIj5Vc2FnZTwvaDI+CgoJPHA+Rm9yIHNvbWUgaWRlYXMgb24gdXNhZ2Ug c2NlbmFyaW9zLCBzZWUgdGhlIDxhIGhyZWY9IiNleGFtcGxlcyI+ZXhhbXBsZXM8L2E+Ljwv cD4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlzIHRoYXQgdGhpcyBwbHVnaW4gYWN0cyBhcyBh IGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90aGluZyBtb3JlLiBUaGUgcGx1Z2luIG9wdGlv bnMgZ292ZXJuIHdoYXQgaW1hZ2VzIGFyZSBwdWxsZWQgb3V0IG9mIHRoZSBkYXRhYmFzZSBh bmQgdGhleSBhcmUgc29ydGVkIGludG8gd2hhdGV2ZXIgb3JkZXIgeW91IGxpa2UuPC9wPgoK CTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1hZ2UgJiM4MjEyOyBvbmUgYnkgb25lICYjODIxMjsg aGFzIGFsbCBpdHMgYXR0cmlidXRlcyBwYXNzZWQgdG8gdGhlIDxjb2RlPmZvcm08L2NvZGU+ IG9mIHlvdXIgY2hvaWNlOyB5b3Ugc2ltcGx5IGNob29zZSB0byBkaXNwbGF5IHdoaWNoZXZl ciBpbWFnZSBhdHRyaWJ1dGVzIHlvdSBsaWtlIGluIHRoaXMgZm9ybS4gVGhpcyBtZWFucyBh bnkgaW1hZ2UgYXR0cmlidXRlcyBjYW4gYmUgJiM4MjIwO2luamVjdGVkJiM4MjIxOyBkaXJl Y3RseSBpbnRvIGFueSBtYXJrdXA7IGl0IGNvdWxkIGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IHRhZ3MsIGl0IGNvdWxkIGJlIGNvbnRlbnQsIGl0IGNvdWxkIGJlIGphdmFz Y3JpcHQsIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+OyBhbnl0aGluZy4gUGFn aW5hdGlvbiB3b3JrcyB0aGUgc2FtZSB3YXksIGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5IGhv dyB1c2VycyBjYW4gc3RlcCB0aHJvdWdoIHlvdXIgaW1hZ2UgZ2FsbGVyaWVzLjwvcD4KCgk8 cD5UaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCBtb2RlIGNhbGxlZCAmIzgyMjA7Y29sbGF0ZSYj ODIyMTsgdGhhdCBhbGxvd3MgeW91IHRvIGNvbGxlY3QgYWxsIGltYWdlIGF0dHJpYnV0ZXMg dG9nZXRoZXIgaW50byBhIHNlcmllcyBvZiBiaWcgbG9uZyBsaXN0cyA8ZW0+d2l0aG91dDwv ZW0+IGNhbGxpbmcgdGhlIGZvcm0gZXZlcnkgdGltZS4gVGhlIGZvcm0gaXMgdGhlbiBvbmx5 IHByb2Nlc3NlZCBvbmNlIGF0IHRoZSBlbmQuPC9wPgoKCTxwPkJldHdlZW4gdGhlc2UgdHdv IG1vZGVzIHlvdSA8ZW0+c2hvdWxkPC9lbT4gYmUgYWJsZSB0byByZWFsaXNlIGFueSBnYWxs ZXJ5aW5nIHNvbHV0aW9uOyBub3cgYW5kIGluIGZ1dHVyZS48L3A+CgoJPGgzIGNsYXNzPSJ0 YWcgIiBpZD0ic21kX2dhbGxlcnkiPnNtZF9nYWxsZXJ5PC9oMz4KCgk8cCBjbGFzcz0idGFn LXN1bW1hcnkiPlBsYWNlIG9uZSBvciBtb3JlIHNtZF9nYWxsZXJ5IHRhZ3MgaW4gYW55IGFy dGljbGUsIHBhZ2Ugb3IgZm9ybSwgc3VwcGx5IGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlv bnMgdG8gY29uZmlndXJlIGl0IGFuZCB1c2UgYSBmb3JtIHRvIGRlZmluZSBob3cgdGhlIGdh bGxlcnkgaXMgZGlzcGxheWVkLjwvcD4KCgk8aDQgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0 ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IGxp c3Qgb2YgaW1hZ2UgSURzIHRvIGRpc3BsYXkuIE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMs IGZvciBleGFtcGxlIDxjb2RlPmlkPSZxdW90OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3 b3VsZCBncmFiIGltYWdlcyA1LCA4LCA5LCAxMCwgMTEgYW5kIDQyLiBVc2UgYW4gZXhjbGFt YXRpb24gbWFyayBpbiBmcm9udCBvZiBhIG51bWJlciBvciByYW5nZSB0byBleGNsdWRlIHRo b3NlIGltYWdlcy4gVXNlIGEgcXVlc3Rpb24gbWFyayBhbmQgdGhlIG5hbWUgb2YgYSA8c3Bh biBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCB0byByZWFkIHRoZSBsaXN0IG9mIGlt YWdlIElEcyBmcm9tIHRoYXQgZmllbGQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Y2F0ZWdvcnk8L3NwYW4+IDogbGlzdCBvZiBpbWFnZSBjYXRlZ29yaWVzIHRvIGRpc3BsYXku IFlvdSBtYXkgc3BlY2lmeSBmaXhlZC1uYW1lIGNhdGVnb3JpZXMgKGUuZy4gJiM4MjIwO2Fu aW1hbHMmIzgyMjE7KSBvciBhIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQgYnkgYW4gYXJ0aWNs ZSBmaWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FuaW1hbHMsIGFydC0/ aWQmcXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIgYWxsIGltYWdlcyBmcm9tIGNhdGVnb3J5ICYj ODIyMDthbmltYWxzJiM4MjIxOyBhbmQgY2F0ZWdvcnkgJiM4MjIwO2FydC00MiYjODIyMTsg KGFzc3VtaW5nIHRoZSBjdXJyZW50IGFydGljbGUgaGFzIGFuIGlkIG9mIDQyKS48ZGl2IGNs YXNzPSJicmVhayI+VXNlIGFuIGV4Y2xhbWF0aW9uIG1hcmsgdG8gZXhjbHVkZSB0aGUgZ2l2 ZW4gY2F0ZWdvcnkgb3IgZmllbGQuIEZpZWxkcyBtYXkgdGhlbXNlbHZlcyBjb250YWluIGxp c3RzIG9mIGNhdGVnb3JpZXMuIFRoZSA8Y29kZT4/PC9jb2RlPiBmaWVsZCBuYW1lcyBtYXkg YmUgY29tYmluZWQgKGUuZy4gP3MtP2FydGljbGVfaW1hZ2UpIGJ1dCBiZSBhd2FyZSB0aGF0 IGN1c3RvbSBmaWVsZCBuYW1lcyBtYXkgY29udGFpbiBzcGFjZXM8L2Rpdj48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+c3VibGV2ZWw8L3NwYW4+IDogYW4gaW50ZWdlciB0aGF0 IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7bGV2ZWxzJiM4MjE3OyBkb3duIHRvIHRyYXZl cnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnkuIHN1YmxldmVsPSYjODIyMDswJiM4MjIxOyAo dGhlIGRlZmF1bHQpIGlzIG9ubHkgdGhlIHRvcC1sZXZlbDsgMSA9IHRvcC1sZXZlbCBwbHVz IHRoZSAxc3Qgc3ViLWNhdDsgMiA9IHRvcC1sZXZlbCBwbHVzIHRoZSBuZXh0IDIgc3ViLWNh dHMsIGFuZCBzbyBvbi4gc3VibGV2ZWw9JiM4MjIwO2FsbCYjODIyMTsgaXMgYWxsIHN1Yi1j YXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3NwYW4+IDogcmUtb3Jk ZXIgdGhlIGltYWdlcyBieSA8Y29kZT5jYXRlZ29yeTwvY29kZT4gKHRoZSBkZWZhdWx0KSwg PGNvZGU+bmFtZTwvY29kZT4sIDxjb2RlPmRhdGU8L2NvZGU+LCA8Y29kZT5pZDwvY29kZT4s IGZpbGUgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiwgPGNvZGU+YWx0PC9jb2RlPiwgPGNvZGU+ Y2FwdGlvbjwvY29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2Rl PiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNvZGU+aGFzdGh1bWI8L2NvZGU+IGluIGVpdGhl ciA8Y29kZT5hc2M8L2NvZGU+ZW5kaW5nIG9yIDxjb2RlPmRlc2M8L2NvZGU+ZW5kaW5nIG9y ZGVyLiBUd28gc3BlY2lhbCBjYXNlcyBleGlzdDogPGNvZGU+Zml4ZWQ8L2NvZGU+IG1haW50 YWlucyB0aGUgb3JkZXIgeW91IHNwZWNpZmllZCBpbiB0aGUgaWQgYW5kL29yIGNhdGVnb3J5 IGF0dHJpYnV0ZSwgd2hpbGUgPGNvZGU+cmFuZG9tPC9jb2RlPiBzaHVmZmxlcyB0aGUgb3Jk ZXIuPGRpdiBjbGFzcz0iYnJlYWsiPk5vdGUgdGhhdCBpZiA8Y29kZT5yYW5kb208L2NvZGU+ IGFwcGVhcnMgYXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGxpc3QsIHJhbmRvbSBpbWFnZXMg d2lsbCBiZSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHRoZXkgd2lsbCB0aGVuIGJl IHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyIGxpc3RlZCBhZnRlciBpdC4gSWYgPGNv ZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFueXdoZXJlIGVsc2UgaW4gdGhlIGxpc3QsIGFu eSBzb3J0IGl0ZW1zIGJlZm9yZSBpdCB3aWxsIGRldGVybWluZSB0aGUgb3JkZXIgb2YgZGF0 YSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2UsIGFuZCB0aGUgcmVzdWx0cyB3aWxsIHRoZW4g YmUgb3JkZXJlZCByYW5kb21seSAoaW4gdGhhdCBjYXNlLCBhbnkgaXRlbXMgbGlzdGVkIGFm dGVyIHJhbmRvbSB3aWxsIGJlIGlnbm9yZWQuIDxjb2RlPmZpeGVkPC9jb2RlPiBpcywgaG93 ZXZlciwgc3RpbGwgaG9ub3VyZWQpPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgdG8gc2hv dyA8ZW0+cGVyIHBhZ2U8L2VtPi4gMCBvciBvbWl0dGVkID0gdW5saW1pdGVkPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1heGxpbWl0PC9zcGFuPiA6IHRoZSBhYnNvbHV0ZSBt YXhpbXVtIG51bWJlciBvZiBpbWFnZSB0byBwdWxsIGZyb20gdGhlIGRhdGFiYXNlLiAwIG9y IG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zm c2V0PC9zcGFuPiA6IHNraXAgdGhpcyBtYW55IGltYWdlcyBhbmQgc3RhcnQgY291bnRpbmcg dGhlcmVhZnRlcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYmxpbWl0PC9z cGFuPiA6IHRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHVtYm5haWxzIHRvIHNob3cuIDAgb3Ig b21pdHRlZCA9IGFsbCB0aHVtYnMuIE5vdGUgdGhhdCB0aGlzIGRpZmZlcnMgZnJvbSBsaW1p dDsgeW91IGNhbiBsYXVuY2ggYSAyMC1pbWFnZSBnYWxsZXJ5IGJ1dCBvbmx5IHNob3cgMSB0 aHVtYm5haWwgb24gdGhlIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1 bWJvZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgdGh1bWJzIGJlZm9yZSBkaXNwbGF5 aW5nIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IHRodW1ibmFpbHM8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+b25jaGFuZ2U8L3NwYW4+IDogYSBsaXN0IG9mIGF0dHJpYnV0ZXMg dG8gJiM4MjIwO3dhdGNoJiM4MjIxOy4gSXQgdGVsbHMgdGhlIHBsdWdpbiB0aGF0IHlvdSB3 YW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gaXRlbXMgaW4gdGhpcyBsaXN0IGNoYW5nZSBjb21w YXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2UuIFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2Vz IHRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHlvdXIgPGNvZGU+c29ydDwvY29kZT4gcGFy YW1ldGVyIG9yIHlvdSBtYXkgZ2V0IHNvbWUgZnJlYWt5IHJlc3VsdHMhIEl0IGRlZmF1bHRz IHRvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPi48ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBpcyB2 ZXJ5IHVzZWZ1bCBmb3Igc3BsaXR0aW5nIGdhbGxlcmllcyBhdCBldmVyeSBjaGFuZ2UgaW4g Y2F0ZWdvcnkgYW5kIGRpc3BsYXlpbmcgdGhlIGNhdGVnb3J5IHRpdGxlIGFib3ZlIGVhY2gg Z3JvdXAuIEl0ZW1zIHlvdSB3YXRjaCBhcmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgcmVwbGFj ZW1lbnQgdGFncyBhbmQgYXJlIGF2YWlsYWJsZSBieSBwdXR0aW5nICYjODIyMDtvbmNoYW5n ZTomIzgyMjE7IGluIGZyb250IG9mIHRoZWlyIG5hbWUgKGUuZy4gPGNvZGU+e29uY2hhbmdl OmNhdGVnb3J5fTwvY29kZT4gJiM4MjEyOyBzZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2 PC9hPiBmb3IgbW9yZSkuIFRoZSBjb2xvbiBkZWxpbWl0ZXIgY2FuIGJlIGNoYW5nZWQgd2l0 aCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5vbmNoYW5nZXdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1 cnJvdW5kIGFueSA8Y29kZT5vbmNoYW5nZTwvY29kZT4gZWxlbWVudHMgeW91IGFyZSB3YXRj aGluZywgZS5nLiA8Y29kZT5vbmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVvdDs8L2NvZGU+ LiBEZWZhdWx0IGlzIHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hh bmdlY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNs YXNzIG5hbWUgb2YgYW55IG9uY2hhbmdlIGVsZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmcuIERl ZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z3JvdXB0YWc8 L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIG1ha2UgYXZhaWxhYmxlIGFzIGEgcmVwbGFj ZW1lbnQgc28geW91IGNhbiB3cmFwIGdyb3VwcyBvZiBlbGVtZW50cyBhdCBlYWNoIDxjb2Rl Pm9uY2hhbmdlPC9jb2RlPi4gRGVmYXVsdCBpcyB1bnNldC4gU2VlIDxjb2RlPmdyb3VwdGFn c3RhcnQ8L2NvZGU+IC8gPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+IDxhIGhyZWY9IiNyZXBf Z2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Z3JvdXBjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwv c3Bhbj4gY2xhc3MgbmFtZSBvZiBhbnkgPGNvZGU+Z3JvdXB0YWc8L2NvZGU+LiBEZWZhdWx0 IGlzIHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRleHQ8L3NwYW4+IDog ZGlzcGxheSB0aGUgZ2l2ZW4gdGV4dCBpbnN0ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0ZXh0 IGNhbiBjb250YWluIDxjb2RlPj88L2NvZGU+IGFydGljbGUgZmllbGRzPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1iPC9zcGFuPiA6IGlmIHlvdSB3aXNoIHRoZSBmdWxs c2l6ZSBpbWFnZXMgZGlzcGxheWVkIGFzIHRodW1ibmFpbHMsIG9yIGlmIHlvdSB3YW50IHRo ZSB0aHVtYm5haWwgZ2FsbGVyeSB0byB1c2UgdGhlIGZ1bGxzaXplIGltYWdlcywgc3BlY2lm eSBpdCB3aXRoIHRoaXMgYXR0cmlidXRlLiBVc2UgPGNvZGU+dGh1bWI9JnF1b3Q7MSZxdW90 OzwvY29kZT4gdG8gc3BlY2lmeSB0aGF0IGJvdGggZnVsbHNpemUgaW1hZ2UgYW5kIHRodW1i bmFpbCBkaXNwbGF5IHRoZSAmIzgyMTY7dCYjODIxNzsgKHRodW1ibmFpbCkgaW1hZ2UuIFVz ZSA8Y29kZT50aHVtYj0mcXVvdDswJnF1b3Q7PC9jb2RlPiB0byBzcGVjaWZ5IHRoYXQgYm90 aCBmdWxsc2l6ZSBhbmQgdGh1bWJuYWlscyB1c2UgdGhlIGZ1bGwgc2l6ZSBpbWFnZXMuIFlv dSBjYW4gYWxzbyBjaG9vc2Ugb25lIG9yIHRoZSBvdGhlciBieSBnaXZpbmcgdGhpcyBhdHRy aWJ1dGUgdHdvIG51bWJlcnMgc2VwYXJhdGVkIGJ5IGEgY29sb24uPGRpdiBjbGFzcz0iYnJl YWsiPkZvciAmIzgyMTY7bm9ybWFsJiM4MjE3OyBvcGVyYXRpb24gJiM4MjEyOyBpLmUuIGZ1 bGxzaXplIGltYWdlIGlzIGZ1bGwgc2l6ZSwgdGh1bWJuYWlsIGlzICB0aHVtYiBzaXplZCAm IzgyMTI7IHNwZWNpZnkgPGNvZGU+dGh1bWI9JnF1b3Q7MDoxJnF1b3Q7PC9jb2RlPi4gVG8g cmV2ZXJzZSB0aGlzLCB1c2UgPGNvZGU+dGh1bWI9JnF1b3Q7MTowJnF1b3Q7PC9jb2RlPi4g Tm90ZSB0aGF0IDxjb2RlPjE6MTwvY29kZT4gYW5kIDxjb2RlPjA6MDwvY29kZT4gYWxzbyB3 b3JrIHRvIHNldCBib3RoIGltYWdlcyB0byB0aGUgc2FtZSBzaXplIGlmIHlvdSBwcmVmZXIg dGhhdCBzeW50YXg8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJz aXplPC9zcGFuPiA6IHRha2VzIG9uZSBvciB0d28gY29tbWEtc2VwYXJhdGVkIG51bWJlcnMg dG8gc3BlY2lmeSB3aWR0aCBhbmQvb3IgaGVpZ2h0IG9mIGFsbCB5b3VyIGdhbGxlcnkgdGh1 bWJuYWlscy4gVGhlIGRlZmF1bHQgaXMgaW4gcGl4ZWxzIGlmIHlvdSBkb24mIzgyMTc7dCBz cGVjaWZ5IHVuaXRzLiBNaXNzaW5nIG91dCBvbmUgb3IgdGhlIG90aGVyIHBhcmFtZXRlciAo aS5lLiBoYXZpbmcgYW4gJiM4MjIwO2VtcHR5JiM4MjIxOyBwYXJhbWV0ZXIgYmVmb3JlIG9y IGFmdGVyIHRoZSBjb21tYSkgd2lsbCBvbmx5IHNldCBvbmUgb2YgdGhlIGRpbWVuc2lvbnMu IFVzZSBhIHNpbmdsZSB2YWx1ZSB0byBtYWtlIHNxdWFyZSB0aHVtYnM8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIGxheW91dCB5b3VyIG1hdGNoaW5nIGltYWdlcy4g V2l0aG91dCB0aGlzIGF0dHJpYnV0ZSB0aGUgcGx1Z2luIGFjdHMgYXMgYSBjb250YWluZXIg dGFnPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0 aGUgbGF5b3V0IG9mIHlvdXIgcGFnaW5nIG5hdmlnYXRpb248L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+cGFnaW5nPC9zcGFuPiA6IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBo YXZpbmcgdG8gc3BlY2lmeSBhIHBhZ2Vmb3JtLiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxh IGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdlIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBh dmFpbGFibGUgaW4gdGhlIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNl bWVudCB0YWdzPC9hPiBhcyB3ZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBh Z2Vwb3M8L3NwYW4+IDogdGhlIHBvc2l0aW9uIG9mIHRoZSBwYWdpbmcgYmxvY2suIE9wdGlv bnMgYXJlIDxjb2RlPmJlbG93PC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5hYm92ZTwv Y29kZT4sIG9yIGJvdGggb2YgdGhlbSBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdhbGxlcnlpZDwvc3Bhbj4gOiB1bmRl ciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdGhpcy4gRWFj aCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElEIGJhc2VkIG9uIHRoZSBzdXBwbGll ZCBhdHRyaWJ1dGVzLiBJbiB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCB0d28gaWRlbnRpY2Fs IElEcyBhcmUgZ2VuZXJhdGVkIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIElEIGZvciBhIGdhbGxl cnkgd2l0aCB0aGlzIGF0dHJpYnV0ZS48ZGl2IGNsYXNzPSJicmVhayI+SW50ZXJuYWxseSB0 aGUgcGx1Z2luIGdlbmVyYXRlcyBhIDMyLWNoYXJhY3RlciBoYXNoIHN0cmluZyBmb3IgZWFj aCB0YWcsIHRoZW4gcGlja3MgYSA0LWNoYXIgY29kZSBmcm9tIHRoaXMgc3RyaW5nIChpdCB0 YWtlcyBldmVyeSA2dGggY2hhcmFjdGVyIGJ5IGRlZmF1bHQpLiBZb3UgY2FuIHN1cHBseSBh IHVuaXF1ZSBmaXhlZCBzdHJpbmcgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90O015R2Fs JnF1b3Q7PC9jb2RlPikgb3IgZ2l2ZSBpdCBhIHF1ZXN0aW9uIG1hcmsgYW5kIDIgbnVtYmVy cyBzZXBhcmF0ZWQgYnkgYSBjb2xvbiAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzU6 NCZxdW90OzwvY29kZT4pLiBUaGUgZmlyc3QgbnVtYmVyIGlzIHRoZSBsZW5ndGggb2YgdGhl IGZpbmFsIHN0cmluZyB0byBnZW5lcmF0ZSwgdGhlIHNlY29uZCBudW1iZXIgaXMgaG93IG1h bnkgY2hhcmFjdGVycyB0byBza2lwIGluIHRoZSAzMi1jaGFyIHN0cmluZyBlYWNoIHRpbWUg aXQgcGlja3Mgb25lLjwvZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5JbiB0aGlzIGNhc2UgaXQg Z2VuZXJhdGVzIGEgNS1jaGFyYWN0ZXIgc3RyaW5nIGZyb20gdGhlIGNoYXJhY3RlcnMgaXQg ZmluZHMgYXQgcG9zaXRpb25zIDEsNSw5LDEzLCBhbmQgMTcuIElmIHlvdSBvbWl0IHRoZSAy bmQgbnVtYmVyIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/NiZxdW90OzwvY29kZT4p IGl0IHdpbGwgYXNzdW1lIGl0JiM4MjE3O3MgYW4gaW5jcmVtZW50IG9mIDE8L2Rpdj48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRN TCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBnYWxsZXJ5LCBlLmcuIDxjb2RlPndyYXB0 YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyB1bnNldDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8g c3Vycm91bmQgZWFjaCB0aHVtYm5haWwuIERlZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2YgdGhlIGVudGlyZSBnYWxsZXJ5LiBEZWZhdWx0 IGlzIHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdndyYXB0YWc8L3Nw YW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgPGNvZGU+cGFn ZWZvcm08L2NvZGU+LCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2Rl Pi4gRGVmYXVsdCBpcyAmIzgyMjA7dWwmIzgyMjE7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPm5hdmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBl YWNoIGl0ZW0gd2l0aGluIHRoZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4uIERlZmF1bHQgaXMg JiM4MjIwO2xpJiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZjbGFz czwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFt ZSBvZiB0aGUgbmF2aWdhdGlvbiB3cmFwdGFnLiBEZWZhdWx0IGlzICYjODIyMDtzbWRfZ2Fs bGVyeV9uYXYmIzgyMjE7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVtcHR5Y2xh c3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5h bWUgb2YgdGhlIG5hdmlnYXRpb24gaXRlbXMgdGhhdCBhcmUgPGVtPm5vdDwvZW0+IGxpbmtz LiBEZWZhdWx0IGlzICYjODIyMDtlbXB0eSYjODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+ZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNp ZnlpbmcgYXR0cmlidXRlIGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5wYXJhbWRlbGltPC9zcGFuPiA6IGNoYW5nZSB0aGUgZGVs aW1pdGVyIGZvciBzcGVjaWZ5aW5nIGludGVyLXBhcmFtZXRlciBhdHRyaWJ1dGVzLiBEZWZh dWx0IGlzIGNvbG9uICg6KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xsYXRl PC9zcGFuPiA6IHN3aXRjaCB0aGUgcGx1Z2luIGludG8gPGEgaHJlZj0iI2NvbGxhdGVfbW9k ZSI+Y29sbGF0ZSBtb2RlPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xs YXRlZGVsaW08L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBlYWNoIGNv bGxhdGVkIGl0ZW0uIERlZmF1bHQgaXMgY29tbWEgKCwpPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmNvbWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24gPGEgaHJlZj0iI3Jl cF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5kaXJlY3Rvcnk8L3NwYW4+IDogcmVhZCBpbWFnZXMgZnJvbSBhIGxpc3Qgb2Yg ZGlyZWN0b3JpZXMgKG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cykgaW5zdGVh ZCBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2UgKDxzdHJv bmc+ZXhwaXJpbWVudGFsPC9zdHJvbmc+KTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5tYXRjaDwvc3Bhbj4gOiBsaW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9z ZW4gaW4gPGNvZGU+ZGlyZWN0b3J5PC9jb2RlPiBtb2RlLiBHaXZlIGEgbGlzdCBvZiB3b3Jk cyB0byBpbmNsdWRlIG9yICFleGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGly ZWN0b3JpZXMgd2lsbCBiZSBjaG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUg bWF0Y2ggdGVybXMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2ls ZCYjODIyMTsgc28gYW55IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmln Z2VyIHRoZSBtYXRjaDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bh bj4gOiB0dXJuIG9uIGRpYWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkg ZnJvbSAwIChub25lKSB0byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImdhbGxl cnlfZm9ybSI+R2FsbGVyeSBmb3JtPC9oMz4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4g aXMgd2hlcmUgeW91IGRlc2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlr ZSBvbiB0aGUgc2NyZWVuLiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIG1hcmt1cCBvciB0 YWdzIGFzIG5vcm1hbC4gSW4ga2V5IHBsYWNlcyB3aGVyZSB5b3Ugd2FudCwgc2F5LCBhbiBp bWFnZSBJRCAvIGFsdCB0YWcgLyBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5ZWQsIHlvdSBz cGVjaWZ5IHNwZWNpYWwgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdz PC9hPi4gVGhlc2UgYXJlIHJlcGxhY2VkIGZvciBlYWNoIGltYWdlIGluIHR1cm4sIHRodXMg YnVpbGRpbmcgdXAgdGhlIGdhbGxlcnkuPC9wPgoKCTxwPkluIGNvbGxhdGUgbW9kZSwgdGhl IGltYWdlIGRldGFpbHMgYXJlIGluc3RlYWQgbWFkZSBpbnRvIGxpc3RzLiBUaGUgZm9ybSBp cyBvbmx5IHByb2Nlc3NlZCBvbmNlIGFuZCB0aGUgcmVwbGFjZW1lbnQgdGFncyBvdXRwdXQg dGhlIGVudGlyZSBsaXN0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dHMgIiBpZD0icmVwX2dhbGxl cnkiPlJlcGxhY2VtZW50IHRhZ3M6IGdhbGxlcnk8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntpZH08L3NwYW4+IDogaW1hZ2UgSUQgKG9yLCBpbiBkaXJlY3Rvcnkg bW9kZSwgdGhlIGZpbGVuYW1lIHdpdGhvdXQgaXRzIGV4dGVuc2lvbik8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e25hbWV9PC9zcGFuPiA6IGZ1bGwgaW1hZ2UgZmlsZW5hbWUg YXMgZGVmaW5lZCBpbiB0aGUgZGF0YWJhc2UsIHVzdWFsbHkgaW5jbHVkaW5nIGV4dGVuc2lv bjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57ZXh0fTwvc3Bhbj4gOiBmaWxlIGV4 dGVuc2lvbiwgaW5jbHVkaW5nIGRvdDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 Y2F0ZWdvcnl9PC9zcGFuPiA6IGltYWdlIGNhdGVnb3J5IG5hbWU8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e2NhdGVnb3J5X3RpdGxlfTwvc3Bhbj4gOiBpbWFnZSBjYXRlZ29y eSB0aXRsZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57YXV0aG9yfTwvc3Bhbj4g OiB3aG8gdXBsb2FkZWQgdGhlIGltYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i Pnt1cmx9PC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSBm dWxsc2l6ZSBpbWFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJ1cmx9 PC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IG9mIHRoZSB0aHVtYm5h aWw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2ltYWdlcGF0aH08L3NwYW4+IDog ZGlyZWN0b3J5IHRoZSBpbWFnZSBpcyBpbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57aW1hZ2VkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSBp bWFnZSAoZS5nLiA1LmpwZyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1i ZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUgdGh1bWJuYWls IChlLmcuIDV0LmpwZyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2FsdH08L3Nw YW4+IDogYWx0IHRleHQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RpdGxlfTwv c3Bhbj4gOiBjYXB0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntkYXRlfTwv c3Bhbj4gOiBpbWFnZSB1cGxvYWQgZGF0ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57d2lkdGh9PC9zcGFuPiA6IGltYWdlIHdpZHRoPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntoZWlnaHR9PC9zcGFuPiA6IGltYWdlIGhlaWdodDwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57dGh1bWJ3aWR0aH08L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIChp ZiBkZWZpbmVkOiBzZWUgPGNvZGU+dGh1bWJzaXplPC9jb2RlPik8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e3RodW1oZWlnaHR9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWlnaHQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1id3VuaXRzfTwvc3Bhbj4gOiB0 aHVtYm5haWwgd2lkdGggdW5pdHMgKGUuZy4gcHgsICUsIGVtIGV0Yyk8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaHVuaXRzfTwvc3Bhbj4gOiB0aHVtYm5haWwgaGVp Z2h0IHVuaXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntoYXN0aHVtYn08L3Nw YW4+IDogaWYgdGhlIGltYWdlIGhhcyBhbiBhc3NvY2lhdGVkIHRodW1ibmFpbCBvciBub3Q8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2dhbGxlcnlpZH08L3NwYW4+IDogZ2Fs bGVyeSBpZCB5b3Ugb3IgdGhlIHBsdWdpbiBhc3NpZ25lZDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57b2JqZWN0fTwvc3Bhbj4gOiBhIHNwZWNpYWwgaXRlbSBjb250YWluaW5n IGVpdGhlciB0aGUgPGNvZGU+dGV4dDwvY29kZT4gT1IgdGhlIGltYWdlIHRhZyBvZiB0aGUg Y29ycmVzcG9uZGluZyB0aHVtYm5haWwsIGJ1dCA8ZW0+b25seTwvZW0+IGlmIDxjb2RlPnRo dW1ibGltaXQ8L2NvZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50aHVtYmxpbWl0PSZx dW90OzEmcXVvdDs8L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBzZXQgZm9yIHRoZSBm aXJzdCB0aHVtYm5haWwgaW4gdGhlIGxpc3Q7IGV2ZXJ5IG90aGVyIHRpbWUgaXQgaXMgZW1w dHk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2NvdW50ZXJ9PC9zcGFuPiA6IGlt YWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGVhY2ggdGlt ZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aW5kZXh9PC9zcGFuPiA6IGluZGV4 IGNvdW50ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmNvdW50ZXJ9PC9zcGFuPiA6IHRo dW1ibmFpbCBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEuIE5vdGUgaXQgaXMgJiM4 MjE2O3Jlc2V0JiM4MjE3OyB3aGVuZXZlciBhbiBlbGVtZW50IGdpdmVuIGluIDxjb2RlPm9u Y2hhbmdlPC9jb2RlPiBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGl0ZW08L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaW5kZXh9PC9zcGFuPiA6IGluZGV4IGNvdW50 ZXIgKHplcm8tYmFzZWQgJiM4MjEyOyBwcm9iYWJseSBub3QgbXVjaCB1c2UpLiBJdCBpcyBy ZXNldCBsaWtlIDxjb2RlPnt0aHVtYmNvdW50ZXJ9PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRvdGFsIG51bWJlciBvZiBp bWFnZXMgbWF0Y2hlZCBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e21heGltYWdlc308L3NwYW4+IDogYWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1h Z2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5JbiBhZGRpdGlvbiwgaWYg ZWl0aGVyIDxjb2RlPnBhZ2luZz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5wYWdl Zm9ybTwvY29kZT4gaGF2ZSBiZWVuIHNwZWNpZmllZCwgYWxsIHRoZSA8YSBocmVmPSIjcmVw X3BhZ2luZyI+cGFnaW5nIHJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZSBhdmFpbGFibGUgdG9v LiBJZiB0aG9zZSBhcmVuJiM4MjE3O3QgZW5vdWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21i b3MiPmNyZWF0ZSB5b3VyIG93bjwvYT4gYnkgZ3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRo ZSBhYm92ZSwgb3B0aW9uYWxseSB3aXRoIGFydGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNv ZGU+P2V4Y2VycHQ8L2NvZGU+LCA8Y29kZT4/a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0 aWNsZV9pbWFnZTwvY29kZT4sIGV0Yy48L3A+CgoJPHA+T3RoZXIgdGFncyBhcmUgYWRkZWQg ZGVwZW5kaW5nIGlmIHlvdSBhcmUgd2F0Y2hpbmcgZm9yIDxjb2RlPm9uY2hhbmdlPC9jb2Rl PiBlbGVtZW50cywgb3IgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGEgPGNvZGU+Z3JvdXB0YWc8 L2NvZGU+LiBJZiB5b3UgYWRkZWQgPGNvZGU+b25jaGFuZ2U9JnF1b3Q7YXV0aG9yLCBjYXRl Z29yeSZxdW90OzwvY29kZT4gdGhlbiBldmVyeSB0aW1lIHRoZSBhdXRob3Igb3IgY2F0ZWdv cnkgY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2UsIG9uZSBvciB0d28g bmV3IHJlcGxhY2VtZW50IHRhZ3Mgd291bGQgYmVjb21lIGF2YWlsYWJsZTsgbmFtZWx5IDxj b2RlPntvbmNoYW5nZTphdXRob3J9PC9jb2RlPiBhbmQgPGNvZGU+e29uY2hhbmdlOmNhdGVn b3J5KTwvY29kZT4uPC9wPgoKCTxwPklmIHlvdSB1c2VkIDxjb2RlPmdyb3VwdGFnPSZxdW90 O2RpdiZxdW90OzwvY29kZT4gYXMgd2VsbCwgeW91IHdvdWxkIGJlIGdpdmVuIHR3byBuZXcg cmVwbGFjZW1lbnQgdGFncyBsYWJlbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBh bmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+LiBTZWUgJiM4MjIwO2V4YW1wbGUgNiYjODIy MTsjZWc2IGZvciBkZXRhaWxzLjwvcD4KCgk8aDMgaWQ9InBhZ2luZ19mb3JtIj5QYWdpbmcg Zm9ybTwvaDM+CgoJPHA+QWRkIGdhbGxlcnkgbmF2aWdhdGlvbiB0byB5b3VyIHBhZ2UuIFdv cmtzIGluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlIDxhIGhyZWY9IiNnYWxsZXJ5X2Zvcm0i PmdhbGxlcnkgZm9ybTwvYT46IGEgc2VyaWVzIG9mIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5S ZXBsYWNlbWVudCBUYWdzPC9hPiBnb3Zlcm4gd2hpY2ggZ2FsbGVyeSBuYXZpZ2F0aW9uIGl0 ZW1zIGFyZSBhdmFpbGFibGUuIFlvdSBjb3VsZCBjaG9vc2UgdG8gb25seSBzaG93IG5leHQv cHJldi4gT3IgcGVyaGFwcyAxc3QgcGFnZS9sYXN0IHBhZ2UuIE9yIG51bWJlcmVkIHBhZ2Ug bGlua3MuPC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfcGFnaW5nIj5SZXBsYWNl bWVudCB0YWdzOiBwYWdpbmc8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PntuYXZmaXJzdH08L3NwYW4+IDogZmlyc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIw O0ZpcnN0JiM4MjIxOyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnByZXZ9 PC9zcGFuPiA6IHByZXZpb3VzIHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIyMDsmbGFxdW87 JiM4MjIxOyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmVhcmxpZXJ9PC9z cGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYmVmb3JlIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN1cmx9PC9zcGFuPiA6IGN1cnJlbnQg cGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluayB0byBpdHNl bGY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN9PC9zcGFuPiA6IGN1 cnJlbnQgcGFnZSB3aXRob3V0IGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGlu azwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bGF0ZXJ9PC9zcGFuPiA6IGFu eSBwYWdlIG51bWJlcnMgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57bmF2bmV4dH08L3NwYW4+IDogbmV4dCBwYWdlIChkZWZhdWx0IGxh YmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntuYXZsYXN0fTwvc3Bhbj4gOiBsYXN0IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIy MDtMYXN0JiM4MjIxOyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmZpcnN0 cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRv IGZpcnN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnByZXZwYWdl dXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gcHJl dmlvdXMgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2dGhpc3BhZ2V1 cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBjdXJy ZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdm5leHRwYWdldXJs fTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gbmV4dCBw YWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZsYXN0cGFnZXVybH08L3Nw YW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIGxhc3QgcGFnZTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRv dGFsIG51bWJlciBvZiBpbWFnZXMgbWF0Y2hlZCBvbiB0aGUgY3VycmVudCBwYWdlPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbHBhZ2VzfTwvc3Bhbj4gOiB0b3RhbCBu dW1iZXIgb2YgcGFnZXMgaW4gdGhpcyBjb2xsZWN0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnttYXhpbWFnZXN9PC9zcGFuPiA6IGFic29sdXRlIG1heGltdW0gbnVtYmVy IG9mIGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+CgoJPHA+VGhlIGN1cnJl bnQgcGFnZSBoYXMgYSBmaXhlZCBjbGFzcyBvZiAmIzgyMTY7Y3VycmVudCYjODIxNzsgYW5k IGVhY2ggaXRlbSBpcywgYnkgZGVmYXVsdCwgYSA8Y29kZT4mbHQ7bGkmZ3Q7PC9jb2RlPiBm b3IgZWFzeSBzdHlsaW5nLiBUbyBhdm9pZCBhIHppbGxpb24gb3B0aW9ucywgY3VzdG9tIGxh YmVscyBhcmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBpdHNlbGYuIFRvIGxhYmVs IHRoZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhlIGdh bGxlcnkgYXMgJiM4MjIwOzFzdCYjODIyMTssIHVzZTo8L3A+CgoJPHA+PGNvZGU+e25hdmZp cnN0OjFzdH08L2NvZGU+PC9wPgoKCTxwPldpdGggdGhpcyBzeW50YXggeW91IGNhbiBsYWJl bCBuYXZmaXJzdCwgbmF2bGFzdCwgbmF2cHJldiwgbmF2bmV4dCBhbmQgbmF2dGhpcyAodGhl ICYjODIxNjs6JiM4MjE3OyBkZWxpbWl0ZXIgaW4gdGhpcyBjYXNlIGlzIHNwZWNpZmllZCBi eSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPikuIFlvdSBjYW4gdXNlIHRoaXMgbWVjaGFuaXNt IHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc25pcHBldHMsIGUuZzo8 L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMjfTwvY29kZT48L3A+CgoJ PHA+WW91IGNhbiBvdmVycmlkZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3BsYXllZCBieSBu YXZlYXJsaWVyIGFuZCBuYXZsYXRlciBieSBzcGVjaWZ5aW5nIGEgY29sb24gYW5kIGEgbnVt YmVyLiBTbyB0byBvbmx5IHNob3cgMiBpdGVtcyB0byB0aGUgbGVmdCBvZiB0aGUgY3VycmVu dCBwYWdlIGFuZCAzIGl0ZW1zIHRvIHRoZSByaWdodCwgdXNlIDxjb2RlPntuYXZlYXJsaWVy OjJ9IHtuYXZsYXRlcjozfTwvY29kZT4gaW4geW91ciBmb3JtLiBJZiB5b3Ugd2VyZSBvbiBw YWdlIDkgb2YgMTUsIHtuYXZlYXJsaWVyOjR9IHtuYXZsYXRlcjozfSB3b3VsZCBzaG93IDxj b2RlPiZsdDsmbHQ7IDUgNiA3IDggOSAxMCAxMSAxMiAmZ3Q7Jmd0OzwvY29kZT48L3A+CgoJ PHA+Q3VycmVudGx5IDxjb2RlPntuYXZlYXJsaWVyfTwvY29kZT4gYW5kIDxjb2RlPntuYXZs YXRlcn08L2NvZGU+IG9ubHkgZGlzcGxheSBhcmFiaWMgbnVtZXJhbHMuIEFueSBpZGVhcyBv biBob3cgdG8gb2ZmZXIgb3RoZXIgY2hhcmFjdGVyIHNldHMgZ3JlYXRseSBhcHByZWNpYXRl ZC48L3A+CgoJPGgzIGlkPSJjb21ib3MiPkNvbWJvczwvaDM+CgoJPHA+SWYgdGhlIGJ1aWx0 LWluIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT4gYXJlbiYj ODIxNzt0IGVub3VnaCBmb3IgeW91ciBuZWVkcyBvciB5b3UgZmluZCB5b3Vyc2VsZiByZXBl YXRpbmcgdGhlIHNhbWUgY29tYmluYXRpb24gYW5kIHdhbnQgdG8gc2F2ZSB5b3Vyc2VsZiBz b21lIHR5cGluZywgeW91IGNhbiBkZWZpbmUgeW91ciBvd24gcmVwbGFjZW1lbnQgdGFncy4g VGhlIHN5bnRheCBpczo8L3A+CgoJPHA+PGNvZGU+Y29tYm89JnF1b3Q7bmV3dGFnMTpkZWZp bml0aW9uLCBuZXd0YWcyOmRlZmluaXRpb24sIC4uLiZxdW90OzwvY29kZT48L3A+CgoJPHA+ JiM4MjE2O2RlZmluaXRpb24mIzgyMTc7IGNhbiBiZSBhbnkgZml4ZWQgdGV4dCwgYW55IGV4 aXN0aW5nIHJlcGxhY2VtZW50IHRhZywgb3IgYW55IDxjb2RlPj88L2NvZGU+IGFydGljbGUg dmFyaWFibGUgc28geW91IGNhbiBnZXQgcmVhbGx5IHdpbGQgaGVyZSwgZm9yIGV4YW1wbGU6 PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90O2ltZ2luOmZvdW5kIGluID9zIFt0YWdnZWQg d2l0aCA/a2V5d29yZHMuIFBob3RvIGJ5IHthdXRob3J9XSZxdW90OzwvY29kZT48L3A+CgoJ PHA+T25jZSBkZWZpbmVkLCA8Y29kZT57aW1naW59PC9jb2RlPiBpcyBhdmFpbGFibGUgdG8g eW91ciBnYWxsZXJ5IDxjb2RlPmZvcm08L2NvZGU+IGFuZCBtaWdodCBiZSByZXBsYWNlZCB3 aXRoICYjODIyMDtmb3VuZCBpbiB6b28gW3RhZ2dlZCB3aXRoIHplYnJhLCBhZnJpY2EsIHN0 cmlwZXMuIFBob3RvIGJ5IEJsb2tlXSYjODIyMTsuICRwcmV0ZXh0IGlzIGFsc28gYXZhaWxh YmxlIGZvciB0aG9zZSBnZWVrcyB3aG8ga25vdyB3aGF0JiM4MjE3O3MgaW4gaXQgKHRlbXBv cmFyaWx5IHVzZSA8Y29kZT5kZWJ1Zz0mcXVvdDs0JnF1b3Q7PC9jb2RlPiB0byB2aWV3IGFs bCBhdmFpbGFibGUgYXJ0aWNsZSB2YXJpYWJsZXMpLjwvcD4KCgk8cD5PbmUgdGhpbmcgdG8g d2F0Y2ggb3V0IGZvciBpcyB0aGF0IHRoZSBzcGFjZSBjaGFyYWN0ZXIgaXNuJiM4MjE3O3Qg bmVjZXNzYXJpbHkgYSBkZWxpbWl0ZXIgZm9yIDxjb2RlPj88L2NvZGU+IHZhcmlhYmxlcyAo YmVjYXVzZSBjdXN0b20gZmllbGRzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVtKS4gU28gPGNv ZGU+Y29tYm89JnF1b3Q7ZG9lc25vdHdvcms6P3MgaW4gP2NhdGVnb3J5MSZxdW90OzwvY29k ZT4gd2lsbCBsb29rIGZvciBhIHZhcmlhYmxlIGxhYmVsbGVkICYjODIyMDtzIGluJiM4MjIx OyBhbmQgb25lIGNhbGxlZCAmIzgyMjA7Y2F0ZWdvcnkxJiM4MjIxOy4gT25seSBvbmUgb2Yg dGhvc2UgZXhpc3RzISBDbGV2ZXIgdXNlIG9mIHBhcmVudGhlc2VzIG9yIG90aGVyIHB1bmN0 dWF0aW9uIGNhbiB3b3JrIHJvdW5kIHRoaXMuPC9wPgoKCTxoMyBpZD0iY29sbGF0ZV9tb2Rl Ij5Db2xsYXRlIG1vZGU8L2gzPgoKCTxwPklmIHlvdSB3YW50IHRvIGdldCA8ZW0+cmVhbGx5 PC9lbT4gZnVua3kgeW91IGNhbiBwdXQgdGhlIHBsdWdpbiBpbnRvIGEgMm5kIG1vZGUgY2Fs bGVkICYjODIyMDtjb2xsYXRpb24gbW9kZSYjODIyMTsuIFRoaXMgbWVhbnMgeW91ciBjaG9z ZW4gZm9ybSBpcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBleGVjdXRlZCBmb3IgZXZlcnkgaW1h Z2U7IGl0IGlzIG9ubHkgdXNlZCBvbmNlIGF0IHRoZSB2ZXJ5IGVuZCBvZiB0aGUgbGlzdCwg YWZ0ZXIgYWxsIGltYWdlcyBoYXZlIGJlZW4gaW50ZXJuYWxseSAmIzgyMjA7Y29sbGVjdGVk JiM4MjIxOy4gSW4gZWZmZWN0LCB0aGUgcGx1Z2luIGJ1aWxkcyB1cCBhIGdpYW50IGFycmF5 IG9mIGFsbCBtYXRjaGluZyBpbWFnZXMgcmVhZHkgZm9yIHlvdSB0byBvdXRwdXQgdGhlbSBh bGwgaW4gb25lIGdvLiBUaGlzIGlzIHZlcnkgaGFuZHkgZm9yIGRvaW5nIHNsaWRlc2hvd3Mg YW5kIGlzIGJlc3QgZXhwbGFpbmVkIGJ5IGV4YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbGxh dGU9JnF1b3Q7MSZxdW90OzwvY29kZT48L3A+CgoJPHA+c3dpdGNoZXMgY29sbGF0aW9uIG1v ZGUgb24uIElmIHRoZSBwbHVnaW4gbWF0Y2hlZCA0IGltYWdlcyBhbmQgeW91IHdlcmUgdG8g dXNlIHRoZSByZXBsYWNlbWVudCB0YWcgPGNvZGU+e25hbWV9PC9jb2RlPiBpbiB5b3VyIGZv cm0gbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IHtuYW1lfQo8L2NvZGU+PC9wcmU+CgoJPHA+eW91 IG1pZ2h0IGdldCB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0i YmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6IGhlcm9uLmpwZyxwZW5ndWluLmpwZyxlbXUu anBnLHB1ZmZpbi5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPlNvbWV0aW1lcyBpdCYjODIxNztz IHVzZWZ1bCB0byBiZSBhYmxlIHRvIHB1dCBxdW90ZXMgYXJvdW5kIGVhY2ggaXRlbSBzbyB5 b3UgY2FuIHRlbGwgY29sbGF0ZSBtb2RlIHRvIGRvIHRoYXQgaW5zdGVhZDo8L3A+CgoJPHA+ PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX0mcXVvdDs8L2NvZGU+PC9wPgoKCTxw PllvdSB3b3VsZCB0aGVuIGdldDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiAmcXVvdDtoZXJvbi5qcGcmcXVvdDss JnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtwdWZm aW4uanBnJnF1b3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZGVsaW1pdGVyIChhIGNvbW1h IGluIHRoaXMgY2FzZSkgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCB0aGUgPGNvZGU+ZGVsaW08 L2NvZGU+IGF0dHJpYnV0ZS4gWW91IG1heSB1c2UgPGNvZGU+c2dscXVvdGU8L2NvZGU+IHRv IHdyYXAgc2luZ2xlIHF1b3RlcyByb3VuZCB0aGUgaXRlbXMsIG9yICYjODIyMDtkYmxxdW90 ZSYjODIyMTsgYXMgYSBzeW5vbnltIGZvciAmIzgyMjA7cXVvdGUmIzgyMjE7IGlmIHlvdSBw cmVmZXIuIFlvdSBjYW4gcXVvdGUgbW9yZSB0aGFuIG9uZSB0aGluZyBhdCBvbmNlIGJ5IHNw ZWNpZnlpbmcgdGhlIGl0ZW1zIGFzIGEgZGVsaW1pdGVkIGxpc3Q6PC9wPgoKCTxwPjxjb2Rl PmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9OnthbHR9OntpbWdpbn0mcXVvdDs8L2NvZGU+ PC9wPgoKCTxwPlllcywgeW91IGNhbiB1c2UgY29tYm9zISBUaGUgZGVsaW1pdGVyIHVzZWQg YmV0d2VlbiBpdGVtcyBjYW4gYmUgb3ZlcnJpZGVuIHdpdGggdGhlIDxjb2RlPnBhcmFtZGVs aW08L2NvZGU+IGF0dHJpYnV0ZS48L3A+CgoJPHA+VGhlIHNlY29uZCBzcGVjaWFsIGZlYXR1 cmUgb2YgY29sbGF0aW9uIG1vZGUgaXMgdGhhdCB5b3UgZG8gbm90IGhhdmUgdG8gYWx3YXlz IG91dHB1dCB0aGUgZW50aXJlIGxpc3QuIFlvdSBjYW4gZ3JhYiBpbmRpdmlkdWFsIGVudGl0 aWVzIGZyb20gd2l0aGluIHRoZSBpbnRlcm5hbCBhcnJheSBieSB1c2luZyB0aGUgJiM4MjE2 OyMmIzgyMTc7IG5vdGF0aW9uIHRodXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+e25hbWV9IG1pZ2h0IG91dHB1dCAmcXVvdDtoZXJvbi5qcGcmcXVv dDssJnF1b3Q7cGVuZ3Vpbi5qcGcmcXVvdDssJnF1b3Q7ZW11LmpwZyZxdW90OywmcXVvdDtw dWZmaW4uanBnJnF1b3Q7IChhcyBiZWZvcmUpCihuYW1lIzF9IHdvdWxkIG9ubHkgb3V0cHV0 IGhlcm9uLmpwZwoobmFtZSMzfSB3b3VsZCBvbmx5IG91dHB1dCBlbXUuanBnCjwvY29kZT48 L3ByZT4KCgk8cD5Ob3RlIHRoYXQgd2hlbiBwdWxsaW5nIG91dCBpbmRpdmlkdWFsIGVudHJp ZXMgdGhleSA8c3Ryb25nPmRvIG5vdDwvc3Ryb25nPiBnZXQgcXVvdGVzIGFkZGVkIHRvIHRo ZW0sIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB5b3UgdXNlZCA8Y29kZT5xdW90ZTwvY29kZT4g b3Igbm90LiBUaGlzIGlzIGJlY2F1c2UgaXQgaXMgYSBzaW5nbGUgaXRlbSBzbyB5b3UgY2Fu IGVhc2lseSBwdXQgdGhlIHF1b3RlcyBpbiB0aGUgZm9ybSBpdHNlbGYgKHZpejogPGNvZGU+ JnF1b3Q7e25hbWUjMn0mcXVvdDs8L2NvZGU+KTwvcD4KCgk8cD5NZXNzaW5nIGFyb3VuZCB3 aXRoIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgaXRlbXMgYW5kIGxpc3RzIGNhbiB5aWVsZCBz b21lIHZlcnkgaW50ZXJlc3RpbmcgcmVzdWx0cyBhbmQgYWxsb3dzIHNvbWUgY29tcGxldGVs eSB3YWNreSBnYWxsZXJpZXMgdG8gYmUgZ2VuZXJhdGVkLiBUcnkgY29tYmluaW5nIHNtZF9n YWxsZXJ5IHRhZ3Mgd2l0aCA8Y29kZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+ IGZvciBhIHJlYWwgbWluZCBzY3JhbWJsZSA6LSk8L3A+CgoJPGgyIGlkPSJleGFtcGxlcyI+ RXhhbXBsZXM8L2gyPgoKCTxwPlRoZSBleGFtcGxlcyBhbGwgdXNlIHRoZSBjbGFzc2ljIHpv byB3ZWJzaXRlLiBMZXQmIzgyMTc7cyBzcGVjaWZ5IHNvbWUgcGljdHVyZXMgdG8gcHVsbCBv dXQgb2YgdGhlIGRhdGFiYXNlOjwvcD4KCgk8aDQgaWQ9ImVnMSI+RXhhbXBsZSAxOiBzaW1w bGUgLyBsaWdodGJveGVkIGdhbGxlcnk8L2g0PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2Rl IGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmlt YWxzJnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkm cXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgcHVsbHMgb3V0IGFsbCBwaWN0 dXJlcyBmcm9tIHRoZSBhbmltYWxzIGNhdGVnb3J5LCBpbmNsdWRpbmcgYWxsIHN1Yi1jYXRl Z29yaWVzLCBhbmQgcGFzc2VzIHRoZW0gdG8gdGhlIGZvcm0gY2FsbGVkICYjODIxNjtnYWxs ZXJ5JiM4MjE3OyBmb3IgcHJvY2Vzc2luZy4gVGhlIGZvcm0gY291bGQgYmU6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBjbGFzcz0mcXVv dDthbmltYWdlJnF1b3Q7IHNyYz0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0m cXVvdDsgLyZndDsKJmx0O2RpdiBjbGFzcz0mcXVvdDthY2FwdGlvbiZxdW90OyZndDt7dGl0 bGV9Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1lYW5zLCBmb3IgZXZl cnkgbWF0Y2hlZCBpbWFnZSwgc3Vic3RpdHV0ZSBpdHMgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4sIGFsdCBhbmQgdGl0bGUgdGFncyBpbnRvIHRoZSByZWxldmFudCBwbGFjZXMu IFRodXMgeW91IGdldCBhIHNlcmllcyBvZiBpbWFnZXMgb24gdGhlIHBhZ2UsIHdoaWNoIHlv dSBjYW4gc3R5bGUgYWNjb3JkaW5nbHkuPC9wPgoKCTxwPkZvciBhIG1vcmUgZmFuY3kgb3V0 cHV0IHVzaW5nLCBzYXksIHNsaW1ib3gsIHlvdSBjb3VsZCBsb2FkIHRoZSByZWxldmFudCBs aWJyYXJpZXMgYW5kIHN0eWxlcyBpbiB0aGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBv ZiB5b3VyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1 b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0 IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpbWJv eC5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O2xpbmsgcmVsPSZxdW90O3N0eWxl c2hlZXQmcXVvdDsgdHlwZT0mcXVvdDt0ZXh0L2NzcyZxdW90OyBocmVmPSZxdW90Oy9jc3Mv c2xpbWJveC5jc3MmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4geW91ciAm IzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9ybSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gte2Nh dGVnb3J5fSZxdW90OyBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZx dW90OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7IGhlaWdo dD0mcXVvdDt7aGVpZ2h0fSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGh9JnF1b3Q7Jmd0Owog Jmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8cD5Wb2lsYSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxlcnkg dGFnIHlvdSBoYXZlIGNoYW5nZWQgdGhlIHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20g YSBzaW1wbGUgbGlzdCB0byBhIGZ1bGwtZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFs bHkgdGhlIHNhbWUgZm9ybSB5b3UgY2FuIHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94 LCBsaWdodGJveCwgbGl0ZWJveCwgbW9vbmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1ib3gg ZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJhcmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0 cnVjdGlvbnMgZm9yIHlvdXIgZmF2b3VyaXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNt ZF9nYWxsZXJ5LjwvcD4KCgk8aDQgaWQ9ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBv bmUgaW1hZ2U8L2g0PgoKCTxwPkEgY29tbW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0byAm IzgyMjA7bGF1bmNoJiM4MjIxOyBhIHNsaW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xlIGlt YWdlIG9yIHRleHQgbGluay4gVXNpbmcgYSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRl Z29yeT0mcXVvdDthbmltYWxzJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2Um cXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5 JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+Tm90ZSB0aGF0IHRoaXMgdGltZSB3ZSBhcmUgYWRkaW5nIHRvIHRoZSBnYWxsZXJ5IHRo ZSBpbWFnZShzKSBwdWxsZWQgZnJvbSB0aGUgYXJ0aWNsZSBpbWFnZSBmaWVsZCBvZiB0aGUg Y3VycmVudCBhcnRpY2xlLiBUaGUgZm9ybSB3aWxsIHVzZSB0aGUgc3BlY2lhbCA8Y29kZT57 b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnIHNvIGl0IG9ubHkgZGlzcGxheXMgdGhl IHRodW1ibmFpbCBpZiB0aGUgdmFsdWUgb2YgdGh1bWJsaW1pdCBoYXMgPHN0cm9uZz5ub3Q8 L3N0cm9uZz4gYmVlbiByZWFjaGVkOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC1zbWQmcXVvdDsgaHJlZj0m cXVvdDt7dXJsfSZxdW90OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7dGl0bGV9 JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5DaGFu Z2UgdGhlIHN0YXJ0IGltYWdlIGJ5IHNwZWNpZnlpbmcgPGNvZGU+dGh1bWJvZmZzZXQ8L2Nv ZGU+ICYjODIxMjsgbm90ZSB0aGlzIHdpbGwgYWxzbyBzdGFydCB0aGUgbGlnaHRib3ggZWZm ZWN0IGZyb20gdGhlIGltYWdlIHlvdSBjaG9vc2UuIElmIHlvdSB3YW50IHRvIHN0YXJ0IG9u IGEgc3BlY2lmaWMgaW1hZ2UgaW4gcG9zaXRpb24gMSwgdXNlIHRoZSA8Y29kZT5pZDwvY29k ZT4gYXR0cmlidXRlIHRvIGJyaW5nIGl0IHRvIHRoZSB0b3Agb2YgdGhlIGxpc3QsIG9yIGNo YW5nZSB0aGUgc29ydCBvcmRlci48L3A+CgoJPHA+SWYgeW91IHdhbnRlZCB0byBsYXVuY2gg dGhlIGdhbGxlcnkgZnJvbSBhIHRleHQgbGluaywgYWRkIDxjb2RlPnRleHQ9JnF1b3Q7Q2xp Y2sgdG8gc3RhcnQgbGlnaHRib3gmcXVvdDs8L2NvZGU+LjwvcD4KCgk8aDQgaWQ9ImVnMyI+ RXhhbXBsZSAzOiBwb3B1cCBnYWxsZXJ5PC9oND4KCgk8cD5UbyBhY2hpZXZlIGFuIGVmZmVj dCBzaW1pbGFyIHRvIHJzc190aHVtYnBvcCwgYWRkIGFuIGltYWdlIGFuZCBjYXB0aW9uIHBs YWNlaG9sZGVyIG91dHNpZGUgdGhlIGNhbGwgdG8gc21kX2dhbGxlcnksIHRoZW4gaW5jbHVk ZSB5b3VyIHNtZF9nYWxsZXJ5IHRhZyBhcyB1c3VhbC4gVGhpcyB0aW1lIHdlIGFyZSBvbmx5 IGludGVyZXN0ZWQgaW4gYWxsIHRoZSBwaWN0dXJlcyBmcm9tIHRoZSBjYXRlZ29yaWVzIHVw IHRvIHR3byBsZXZlbHMgYmVsb3cgYm90aCAmIzgyMjA7YW5pbWFscyYjODIyMTssIHBsdXMg d2hpY2hldmVyIGNhdGVnb3JpZXMgYXJlIGxpc3RlZCBpbiA8Y29kZT5teV9jdXN0b21fZmll bGQ8L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDtpbWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1w dHkuanBnJnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7 Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBzdWJsZXZlbD0mcXVvdDsy JnF1b3Q7CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscywgP215X2N1c3RvbV9maWVsZCZx dW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+VGhlIGdhbGxlcnkgZm9ybSBsb29rcyBzY2FyeSBidXQgaXMgb25seSBhIHRodW1i bmFpbCBpbWFnZSBzdXJyb3VuZGVkIGJ5IGEgc2ltcGxlIGFuY2hvciB0YWcgd2l0aCB0d28g YWN0aW9ucyBhc3NpZ25lZCB0byBpdDogYSBtb3VzZW92ZXIgdG8gY29weSB0aGUgcGljdHVy ZSBhbmQgY2FwdGlvbiBpbnRvIHRoZSBwbGFjZWhvbGRlcjsgYW5kIGEgbW91c2VvdXQgdG8g cmVtb3ZlIHRoZW06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyB0aXRsZT0mcXVvdDt7dGl0bGV9JnF1 b3Q7CiAgICAgb25tb3VzZW92ZXI9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMz OTtmdWxsc2l6ZSYjMzk7KS5zcmMgPSB0aGlzLmhyZWY7CiAgICAgZG9jdW1lbnQuZ2V0RWxl bWVudEJ5SWQoJiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSB0aGlzLnRpdGxl OyByZXR1cm4gZmFsc2U7JnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVvdDtkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYjMzk7L2ltYWdlcy8x Ny5qcGcmIzM5OzsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxjYXB0 aW9uJiMzOTspLmlubmVySFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBmYWxzZTsmcXVvdDsm Z3Q7CiAgJmx0O2ltZyBzcmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2Fs dH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGVy ZSBhcmUgbXVjaCBuZWF0ZXIgd2F5cyBvZiBkb2luZyB0aGlzIChqUXVlcnk/KSBhbmQgaXQm IzgyMTc7cyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZm9ybSBpbiBhIGxpdmUgc2l0 ZSwgYnV0IGl0IGdpdmVzIGEgZmxhdm91ciBvZiB3aGF0IGlzIHBvc3NpYmxlLjwvcD4KCgk8 aDQgaWQ9ImVnNCI+RXhhbXBsZSA0OiBzbGlkZXNob3c8L2g0PgoKCTxwPlRoaXMgb25lIHVz ZXMgY29sbGF0ZSBtb2RlIGJ1dCBpcyBub3QgbXVjaCBtb3JlIGRpZmZpY3VsdCB0byB1bmRl cnN0YW5kLiBJbiB5b3VyIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gc2VjdGlvbjo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5 cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9vbHMu anMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0 L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9zbGlkZXNob3cuanMmcXVvdDsmZ3Q7 Jmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgdGFnOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkK ICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkm cXVvdDsKICBjb21ibz0mcXVvdDtpbWdsaXN0OntpZH17ZXh0fSZxdW90OwogIGNvbGxhdGU9 JnF1b3Q7cXVvdGU6e2ltZ2xpc3R9OnthbHR9JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5UaGF0IHB1bGxzIGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBiaXJkcyBhbmQgZmlzaCBj YXRlZ29yaWVzLiBBbHRob3VnaCB0ZWNobmljYWxseSB1bm5lY2Vzc2FyeSwgYSBjb21ibyBo YXMgYmVlbiBkZWZpbmVkIHRvIHNob3cgaG93IGl0IGNhbiBiZSB1c2VkLiBUaGlzIGNvbWJv IGlzIGNhbGxlZCA8Y29kZT5pbWdsaXN0PC9jb2RlPiBhbmQgaXMgZGVmaW5lZCBhcyB0aGUg aW1hZ2UmIzgyMTc7cyBJRCBudW1iZXIgcGx1cyBpdHMgZXh0ZW5zaW9uLiBXZSB1c2UgdGhp cyBpbiB0aGUgY29sbGF0ZSBhdHRyaWJ1dGUgYW5kIHRlbGwgaXQgdG8gcHV0IGRvdWJsZSBx dW90ZXMgcm91bmQgZXZlcnkgaXRlbSBpbiAmIzgyMTY7aW1nbGlzdCYjODIxNzsgYW5kICYj ODIxNjthbHQmIzgyMTc7LiBUaGVuIHdlIGNhbiBwdXQgdGhlc2UgdmFsdWVzIGludG8gdGhl IG5lY2Vzc2FyeSBqYXZhc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSBzbGlkZXNob3c6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2RpdiBjbGFzcz0m cXVvdDtzbGlkZXNob3cmcXVvdDsgaWQ9JnF1b3Q7c2xpZGVzaG93MSZxdW90OyZndDsKICZs dDtpbWcgc3JjPSZxdW90OyZsdDt0eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMve2lkIzF9Lmpw ZyZxdW90OwogICAgIGFsdD0mcXVvdDt7YWx0IzF9JnF1b3Q7IHdpZHRoPSZxdW90O3t3aWR0 aCMxfSZxdW90OyBoZWlnaHQ9JnF1b3Q7e2hlaWdodCMxfSZxdW90OyAvJmd0OwombHQ7L2Rp diZndDsKPC9jb2RlPgo8Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVv dDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsmZ3Q7Cm15U2hvdzEgPSBuZXcgU2xpZGVzaG93KCZx dW90O3NsaWRlc2hvdzEmcXVvdDssCiAgeyBodTogJnF1b3Q7Jmx0O3R4cDpzaXRlX3VybCAv Jmd0O2ltYWdlcy8mcXVvdDssCiAgICBpbWFnZXM6IFt7aW1nbGlzdH1dLAogICAgY2FwdGlv bnM6IFt7YWx0fV0sCiAgICBjbGFzc2VzOiBbJnF1b3Q7cHJldiZxdW90OywmcXVvdDtuZXh0 JnF1b3Q7LCZxdW90O2FjdGl2ZSZxdW90O10sCiAgICB0eXBlOiAmcXVvdDtmYWRlJnF1b3Q7 CiAgfSk7CiZsdDsvc2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHRo ZSBpbml0aWFsIHBvcnRpb24gKGluIHRoZSBkaXYgYW5kIGltZyB0YWdzKSB1c2VzIHRoZSAm IzgyMTY7IyYjODIxNzsgbm90YXRpb24gYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gZGlzcGxh eSBvbmUgaW1hZ2UgdG8gJiM4MjIwO3N0YXJ0JiM4MjIxOyB0aGUgc2xpZGVzaG93LiBJbiB0 aGlzIGNhc2Ugd2UmIzgyMTc7cmUgdXNpbmcgdGhlIGZpcnN0IGltYWdlIGluIHRoZSBsaXN0 LCBidXQgeW91IGNhbiBjaGFuZ2UgdGhlICMxIGZvciAjNDIgaWYgeW91IHdhbnRlZCB0byBz aG93IHRoZSBmb3J0eS1zZWNvbmQgaW1hZ2UgaW5zdGVhZCEgVGhlIHBhcnQgaW4gdGhlIHNj cmlwdCB0YWcgdXNlcyB0aGUgZnVsbCwgcXVvdGVkIGxpc3RzIGJlY2F1c2UgdGhhdCYjODIx NztzIHRoZSBmb3JtYXQgdGhlIGphdmFzY3JpcHQgcmVxdWlyZXMuPC9wPgoKCTxoNCBpZD0i ZWc1Ij5FeGFtcGxlIDU6IHBhZ2luYXRpb248L2g0PgoKCTxwPlRvIGFkZCBwYWdpbmcgdG8g YSBnYWxsZXJ5IHlvdSB1c2UgdGhlIDxjb2RlPmxpbWl0PC9jb2RlPiBhdHRyaWJ1dGUgdG8g c2hvdyBhIG51bWJlciBvZiB0aHVtYnMgcGVyIHBhZ2UuIEZvciBhIHBhZ2VkIHRodW1icG9w IGdhbGxlcnkgdGhhdCBzaG93cyBmaXZlIHRodW1icyBwZXIgcGFnZTo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxz aXplJnF1b3Q7IHNyYz0mcXVvdDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7 c3BhbiBpZD0mcXVvdDtmdWxsY2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0 eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogIGZvcm09JnF1 b3Q7Z2FsbGVyeSZxdW90OyBwYWdlZm9ybT0mcXVvdDtnYWxsZXJ5X25hdiZxdW90OwogIGxp bWl0PSZxdW90OzUmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSAmIzgyMTY7 Z2FsbGVyeSYjODIxNzsgZm9ybSBpcyBpZGVudGljYWwgdG8gdGhlIG9uZSBpbiA8YSBocmVm PSIjZWc0Ij5leGFtcGxlIDQ8L2E+LCB3aGlsZSB5b3VyIGdhbGxlcnlfbmF2IGZvcm0gbWln aHQgbG9vayBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O2RpdiBjbGFzcz0mcXVvdDt0b3RhbCZxdW90OyZndDsjIG9mIHBpY3M6 IHt0b3RhbGltYWdlc30mbHQ7L2RpdiZndDsKICAgICB7bmF2Zmlyc3R9IHtuYXZwcmV2fQog ICAgIHtuYXZlYXJsaWVyfSB7bmF2dGhpc30ge25hdmxhdGVyfQogICAgIHtuYXZuZXh0fSB7 bmF2bGFzdH0KPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgbWlnaHQgcmVuZGVyIHNvbWV0aGlu ZyBzaW1pbGFyIHRvIHRoaXMgYmVsb3cgdGhlIHRodW1iczo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4jIG9mIHBpY3M6IDM4CiAgICAgRmlyc3QgJmx0 OyAxIDIgMyA0IDUgNiA3IDggJmd0OyBMYXN0CjwvY29kZT48L3ByZT4KCgk8aDQgaWQ9ImVn NiI+RXhhbXBsZSA2OiBvbmNoYW5nZTwvaDQ+CgoJPHA+SWYgeW91IHdhbnQgdG8gc2ltdWxh dGUgbXVsdGlwbGUgZ2FsbGVyaWVzIGZyb20gb25lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2Fu IHVzZSA8Y29kZT5vbmNoYW5nZTwvY29kZT4gdG8gJiM4MjIwO3dhdGNoJiM4MjIxOyBmb3Ig d2hlbiBjZXJ0YWluIGF0dHJpYnV0ZXMgb2YgaW1hZ2VzIGNoYW5nZSBhbmQgaW5zZXJ0IHNw ZWNpYWwgdGFncyA8ZW0+b25seSB3aGVuIHNvbWV0aGluZyBjaGFuZ2VzPC9lbT4uIEluIHRo aXMgcmVnYXJkIGl0IGFjdHMgbGlrZSBhIHNvdXBlZC11cCB2ZXJzaW9uIG9mIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+JiM4MjE3O3MgYnVpbHQtaW4gPGNvZGU+Jmx0O3R4cDpp Zl9kaWZmZXJlbnQmZ3Q7PC9jb2RlPiB0YWcuPC9wPgoKCTxwPllvdSBjYW4gd2F0Y2ggdGhl IHVzdWFsIHRoaW5ncyBsaWtlIDxjb2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9y PC9jb2RlPiwgPGNvZGU+d2lkdGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29k ZT5leHQ8L2NvZGU+ZW5zaW9uIGFuZCBzbyBvbi4gSGVyZSYjODIxNztzIGFuIGV4YW1wbGU6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpz bWRfZ2FsbGVyeQogICAgIGNhdGVnb3J5PSZxdW90O2JpcmRzLCBmaXNoJnF1b3Q7IGZvcm09 JnF1b3Q7Z2FsbGVyeSZxdW90OwogICAgIG9uY2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxl JnF1b3Q7CiAgICAgb25jaGFuZ2V3cmFwdGFnPSZxdW90O2gzJnF1b3Q7IC8mZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5TaW5jZSB0aGUgcGx1Z2luIG5vcm1hbGx5IHNvcnRzIGJ5IGNhdGVn b3J5LCB0aGlzIHdpbGwgaGF2ZSB0aGUgZWZmZWN0IG9mIGFkZGluZyBvbmUgcmVwbGFjZW1l bnQgdGFnIDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeV90aXRsZX08L2NvZGU+IGF0IHRoZSB2 ZXJ5IGJlZ2lubmluZyBvZiB0aGUgdGh1bWIgbGlzdCBhbmQgYWxzbyB3aGVuIHRoZSBjYXRl Z29yeSBzd2l0Y2hlcyBmcm9tICYjODIxNjtiaXJkcyYjODIxNzsgdG8gJiM4MjE2O2Zpc2gm IzgyMTc7LiBUaHVzIHlvdXIgZ2FsbGVyeSBmb3JtIGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xh c3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntvbmNoYW5nZTpjYXRlZ29yeV90aXRs ZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2Nh dGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhhdCB3b3VsZCBtYWtlIHR3byBsaWdodGJveGFibGUgc2V0cyBvZiB0aHVtYm5haWxz IHdpdGggYSBoZWFkaW5nIDMgYWJvdmUgZWFjaCBncm91cCBjb250YWluaW5nIHRoZSBjYXRl Z29yeSB0aXRsZS48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBhZGQgPGNvZGU+dGh1bWJs aW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byB0aGUgc21kX2dhbGxlcnkgdGFnIHlvdSBj YW4gc2hvdyBqdXN0IG9uZSB0aHVtYm5haWwgaW4gZWFjaCBncm91cCwgd2l0aCBoZWFkaW5n cyBhYm92ZSBlYWNoIHRodW1iLiBWaXNpdG9ycyBjbGlja2luZyB0aGUgdGh1bWIgd2lsbCBs YXVuY2ggdGhlIGxpZ2h0Ym94IGFuZCBiZSBhYmxlIHRvIGJyb3dzZSB0aGUgcmVsZXZhbnQg Y2F0ZWdvcnkuPC9wPgoKCTxwPkFuIGV4dHJhIHBhaXIgb2YgcmVwbGFjZW1lbnQgdGFncyBh cmUgYXZhaWxhYmxlIGlmIHlvdSB3aXNoIHRvIHdyYXAgdGhlIG9iamVjdHMgdGhlbXNlbHZl cyB0byBncm91cCB0aGVtLiBVc2UgdGhlIDxjb2RlPmdyb3VwdGFnPC9jb2RlPiBhbmQgPGNv ZGU+Z3JvdXBjbGFzczwvY29kZT4gYXR0cmlidXRlcyB0byBzZXQgaXQgdXAsIHRoZW4gdHdv IG5ldyByZXBsYWNlbWVudCB0YWdzIGNhbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2Rl PiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+IGJlY29tZSBhdmFpbGFibGUuIFRoZXkg YXJlIGNvbmRpdGlvbmFsIGFuZCBhcmUgb25seSBwb3B1bGF0ZWQgd2hlbiB0aGUgYXR0cmli dXRlcyB5b3UgYXJlIHdhdGNoaW5nL3NvcnRpbmcgYnkgY2hhbmdlLiBVc2UgaXQgbGlrZSB0 aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0 eHA6c21kX2dhbGxlcnkgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsKICAgICBjYXRl Z29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsK ICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29yeV90aXRsZSZxdW90OwogICAgIG9uY2hhbmdl d3JhcHRhZz0mcXVvdDtoMyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O2RpdiZxdW90OyBn cm91cGNsYXNzPSZxdW90O2JveCZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0 bGV9Cntncm91cHRhZ3N0YXJ0fQombHQ7YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0m cXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7 Cntncm91cHRhZ2VuZH0KPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB5b3UgY2FuIG1v dmUgdGhlIDxjb2RlPmdyb3VwdGFnc3RhcnQ8L2NvZGU+IHRvIHN1cnJvdW5kIHRoZSA8Y29k ZT5vbmNoYW5nZTwvY29kZT5kIHRpdGxlIGlmIHlvdSB3aXNoLjwvcD4KCgk8aDIgaWQ9ImNo YW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4KCgk8cD5BbGwgYXZhaWxhYmxlIHZlcnNpb25zIGFu ZCBjaGFuZ2VzIGFyZSBsaXN0ZWQgaGVyZS48L3A+CgoJPHA+PHN0cm9uZz5CZXRhPC9zdHJv bmc+PC9wPgoKCTx1bD4KCQk8bGk+MTQgRmViIDA4IHwgMC4xIHwgSW5pdGlhbCByZWxlYXNl ICYjODIxMTsgSGFwcHkgVmFsZW50aW5lcyBEYXkgOi0pPC9saT4KCQk8bGk+MTkgRmViIDA4 IHwgMC4yIHwgQWRkZWQge2dhbGxlcnlpZH0gKHRoYW5rcyBybG9hZGVycm8pIGFuZCBzb21l IHNrZWxldG9uIGRvY3M8L2xpPgoJPC91bD4KCgk8cD48c3Ryb25nPk9mZmljaWFsPC9zdHJv bmc+PC9wPgoKCTx1bD4KCQk8bGk+MTEgTWFyIDA4IHwgMC4zIHwgT2ZmaWNpYWwgcHVibGlj IHJlbGVhc2UuIEZpeGVkIHNpbGx5IGVtcHR5IGZpZWxkIGJ1ZzsgYWRkZWQge2NvdW50ZXJ9 LCB7aW5kZXh9IGFuZCB0aGUgdG90YWxzIChhbGwgdGhhbmtzIGpha29iKTwvbGk+CgkJPGxp PjE1IE1hciAwOCB8IDAuMzEgfCBGaXhlZCBhIGNvdXBsZSBvZiB1bmRlZmluZWQgaW5kZXhl cyBhbmQgYWRkZWQge2NhdGVnb3J5X3RpdGxlfSAodGhhbmtzIGpzdHViYnMpPC9saT4KCQk8 bGk+MTcgTWFyIDA4IHwgMC4zMiB8IEZpeGVkIGFub3RoZXIgdW5kZWZpbmVkIGluZGV4IGFu ZCByZW1vdmVkIGJvZ3VzIGNhbGwgdG8gc21kX2xpYiAoYm90aCB0aGFua3Mgc2VjdW5kYXIp PC9saT4KCQk8bGk+MjEgTWFyIDA4IHwgMC4zMyB8IERpZCB2MC4zMSBwcm9wZXJseSwgaW5j bHVkaW5nIHRhYmxlIHByZWZpeCAodGhhbmtzIG5hcmRvKTwvbGk+CgkJPGxpPjAxIEFwciAw OCB8IDAuMzQgfCBGaXhlZCA8c3BhbiBjbGFzcz0iY2FwcyI+U1FMPC9zcGFuPiBwYXJlbnRo ZXNpcyBidWcgOyBhZGRlZCBlbXB0eWNsYXNzIGFuZCB7bWF4aW1hZ2VzfSAodGhhbmtzIHRo ZV9naG9zdCk8L2xpPgoJCTxsaT4wOCBBcHIgMDggfCAwLjQgfCBDaGFuZ2VkIHRodW1iIHRv IGFsbG93IHRodW1iL2Z1bGxzaXplIHN3YXBwaW5nIDsgQWRkZWQgdGh1bWJjaGFuZ2UsIHRo dW1iY2hhbmdld3JhcHRhZywgdGh1bWJjaGFuZ2VjbGFzcywge3RodW1iaW5kZXh9LCB7dGh1 bWJjb3VudGVyfSBhbmQgdGhlIHtjaGFuZ2VkOip9IHJlcGxhY2VtZW50IHRhZ3MgKHRoYW5r cyBmdWxzKTwvbGk+CgkJPGxpPjI2IE1heSAwOCB8IDAuNDEgfCBGaXhlZCBEaXJlY3Rvcnkg c2VwYXJhdG9yICh0aGFua3MgY3VkYSkgOyBhZGRlZCByYXcgcGFnZSA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPnMgdG8gdGhlIG5hdiByZXBsYWNlbWVudCBhcnJheSBhbmQgbWFk ZSB0aGUgbmF2IGFycmF5IGF2YWlsYWJsZSBpbiB0aGUgc3RhbmRhcmQgcmVwbGFjZW1lbnRz IGFycmF5ICh0aGFua3MgdmlzdWFscGVvcGxlKTwvbGk+CgkJPGxpPjI3IE1heSAwOCB8IDAu NDIgfCBBZGRlZCBwYWdlcG9zIGFuZCBtYWRlIHBhZ2UgYmxvY2tzIGluZGVwZW5kZW50IG9m IHRodW1iIGJsb2NrICh0aGFua3MgZHVjaGFtcCk8L2xpPgoJCTxsaT4xMCBKdW4gMDggfCAw LjQzIHwgRml4ZWQgc29ydD0mIzgyMjA7Zml4ZWQmIzgyMjE7IHdoZW4gdXNpbmcgbGltaXQg KHRoYW5rcyByb2Jpbjc0NikgOyBhZGRlZCBwZXItZ3JvdXAgb25jaGFuZ2Ugd3JhcHBpbmcg YW5kIGFsbG93ZWQgZml4ZWQgc29ydGluZyBvZiBjYXRlZ29yaWVzICh0aGFua3MganN0dWJi cykgOyBkZXByZWNhdGVkIHRodW1iY2hhbmdlKiBhbmQgcmVuYW1lZCBhcyBvbmNoYW5nZSog OyBmaXhlZCAkaWR4IGNvdW50ZXIgcHJvYmxlbTwvbGk+CgkJPGxpPjEwIEp1biAwOCB8IDAu NDQgfCBBdHRlbXB0ICMyIGF0IHBlci1ncm91cCBvbmNoYW5nZSB3cmFwcGluZyAodGhhbmtz IGFnYWluIGpzdHViYnMpPC9saT4KCQk8bGk+MTQgSnVsIDA4IHwgMC40NSB8IEZpeGVkIGxh Y2sgb2Ygb3V0cHV0IHdoZW4gbm90IHVzaW5nIGNhdGVnb3JpZXMgKHRoYW5rcyByb2Jpbjc0 Nik8L2xpPgoJCTxsaT4xNiBOb3YgMDggfCAwLjQ2IHwgQWRkZWQgY29sbGF0ZWRlbGltICh0 aGFua3MgY3VyaW91eikgOyBmaXhlZCAoSSBob3BlKSB0aGUgY2F0ZWdvcnkgLyBpZCBidWcg ZnJvbSAwLjQ0IGFuZCAwLjQ1ICh0aGFua3Mgcm9iaW43NDYvbmFyZG8pPC9saT4KCTwvdWw+ CgoJPGgyIGlkPSJjcmVkaXRzIj5DcmVkaXRzPC9oMj4KCgk8cD5UaGlzIHBsdWdpbiB3b3Vs ZG4mIzgyMTc7dCBoYXZlIGV4aXN0ZWQgd2l0aG91dCB0aGUgYXdlc29tZSBtaW5kIG9mIFJv YmVydCBXZXR6bG1heXIuIEhpcyB3ZXRfZm9yX2VhY2hfaW1hZ2UgcGx1Z2luIGlzIHRydWUg Z2VuaXVzOyB0aGlzIHNpbXBseSBzdGFuZHMgb24gdGhlIHNob3VsZGVycyBvZiB0aGF0IGlk ZWEgYW5kIHJvbGxzIGluIGEgc291cGVkIHVwIHZlcnNpb24gb2YgdGhlIHRodW1ibmFpbCBn ZW5lcmF0aW9uIGVuZ2luZSBmcm9tIHNtZF9zbGltYm94LiBUbyB0aGF0IGVuZCwgdGhlIHBs dWdpbiBpcyBhbHNvIGluZGVidGVkIHRvIGFueW9uZSB3aG8gaGFzIHBvc3RlZCBmZWF0dXJl cyBvciBidWcgcmVwb3J0cyB0byBtZSBvciB0aGUgc21kX3NsaW1ib3ggdGhyZWFkLiBZb3Um IzgyMTc7cmUgYWxsIG1hcnZlbGxvdXMuPC9wPgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAtLS0g QkVHSU4gUExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRf aGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0 OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3Bh Y2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7 IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3Vu ZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4 OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRl ZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206 IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3Zl ciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjog bm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFw eDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNh bnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBo MiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsg Y29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hl bHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlm OyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3Jt OiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQg eyBmb250OiBib2xkIDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAx cHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3Nt ZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hl bHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0K I3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5n LWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBz b2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUt dHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIGxpIHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4 OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0t IC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+CiI7czozOiJtZDUiO3M6MzI6ImQyY2IxOTg4 OTBjZmNkZmNlODk5NjQwMTAxMzYxYTlhIjt9