# Name: smd_gallery v0.43 # 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 LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjQzIjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6Mjg1MzU6ImZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXI7DQoNCgkvLyAqKiBMT09LVVAgVEFCTEUNCgkvLyBIb2xkcyBkYXRh YmFzZSBmaWVsZCBhcyBrZXkgaW5kZXggYW5kIHBsdWdpbiBvcHRpb24gbmFtZXMgYXMgdmFs dWUuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQg cmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkk ZmllbGRNYXAgPSBhcnJheSgNCgkJInR4cF9pbWFnZS5uYW1lIiA9PiAibmFtZSIsDQoJCSJ0 eHBfaW1hZ2UuaWQiID0+ICJpZCIsDQoJCSJ0eHBfaW1hZ2UuYWx0IiA9PiAiYWx0IiwNCgkJ InR4cF9pbWFnZS5jYXB0aW9uIiA9PiAiY2FwdGlvbiIsDQoJCSJ0eHBfaW1hZ2UuY2F0ZWdv cnkiID0+ICJjYXRlZ29yeSIsDQoJCSJ0eHBfaW1hZ2UuYXV0aG9yIiA9PiAiYXV0aG9yIiwN CgkJInR4cF9pbWFnZS5kYXRlIiA9PiAiZGF0ZSIsDQoJCSJ0eHBfaW1hZ2UuZXh0IiA9PiAi ZXh0IiwNCgkJInR4cF9pbWFnZS53IiA9PiAid2lkdGgiLA0KCQkidHhwX2ltYWdlLmgiID0+ ICJoZWlnaHQiLA0KCQkidHhwX2ltYWdlLnRodW1ibmFpbCIgPT4gImhhc3RodW1iIiwNCgkp Ow0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlw ZScgPT4gJ2ltYWdlJywNCgkJJ2RlbGltJyA9PiAnLCcsDQoJCSdwYXJhbWRlbGltJyA9PiAn OicsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAn JywNCgkJJ2RpcmVjdG9yeScgPT4gJycsDQoJCSdtYXRjaCcgPT4gJycsDQoJCSdzdWJsZXZl bCcgPT4gJzAnLA0KCQknc29ydCcgPT4gJ2NhdGVnb3J5JywNCgkJJ29mZnNldCcgPT4gJzAn LA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1 bWJsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1ib2Zmc2V0JyA9PiAnMCcsDQoJCSd0aHVt YicgPT4gJzA6MScsDQoJCSd0aHVtYnNpemUnID0+ICcnLA0KCQkndGh1bWJjaGFuZ2UnID0+ ICcnLCAvLyBERVBSRUNBVEVEDQoJCSd0aHVtYmNoYW5nZXdyYXB0YWcnID0+ICcnLCAvLyBE RVBSRUNBVEVEDQoJCSd0aHVtYmNoYW5nZWNsYXNzJyA9PiAnJywgLy8gREVQUkVDQVRFRA0K CQknb25jaGFuZ2UnID0+ICdjYXRlZ29yeScsDQoJCSdvbmNoYW5nZXdyYXB0YWcnID0+ICcn LA0KCQknb25jaGFuZ2VjbGFzcycgPT4gJycsDQoJCSdncm91cHRhZycgPT4gJycsDQoJCSdn cm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ICcnLA0KCQknY29sbGF0ZScgPT4gJycs DQoJCSdjb21ibycgPT4gJycsDQoJCSdwYWdpbmcnID0+ICcwJywNCgkJJ3BhZ2Vmb3JtJyA9 PiAnJywNCgkJJ3BhZ2Vwb3MnID0+ICdiZWxvdycsDQoJCSduYXZ3cmFwdGFnJyA9PiAndWwn LA0KCQknbmF2YnJlYWsnID0+ICdsaScsDQoJCSduYXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5 X25hdicsDQoJCSdlbXB0eWNsYXNzJyA9PiAnZW1wdHknLA0KCQknZ2FsbGVyeWlkJyA9PiAn PzQ6NicsDQoJCSd3cmFwdGFnJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNz JyA9PiAnJywNCgkJJ2RlYnVnJyA9PiAnMCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIENhdGVn b3J5IHJlbGllcyBvbiB3aGV0aGVyIGlkIGhhcyBiZWVuIHNwZWNpZmllZCBvciBub3QuDQoJ Ly8gbEF0dHMoKSB3b24ndCBsZXQgdXMgaGFuZGxlIHRoaXMgbG9naWMgc28gaXQgaGFzIHRv IGJlIGRvbmUgbWFudWFsbHkNCgkkYXR0ZW1wdE1hdGNoID0gKGVtcHR5KCRjYXRlZ29yeSkg JiYgZW1wdHkoJGlkKSkgPyBmYWxzZSA6IHRydWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNh dGVnb3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsn YyddOiAnJyk7DQoNCgkvLyBIYW5kbGUgZm9ybXMgYW5kIHNldCBhIGRlZmF1bHQgdGFnIGlm IG5vbmUgc3BlY2lmaWVkDQoJJHRoaW5nID0gKGVtcHR5KCRmb3JtKSkgPyAkdGhpbmcgOiBm ZXRjaF9mb3JtKCRmb3JtKTsNCgkkdGhpbmcgPSAoZW1wdHkoJHRoaW5nKSkgPyAnPGEgaHJl Zj0ie3VybH0iIGFsdD0ie2FsdH0iPjx0eHA6aW1hZ2UgaWQ9IntpZH0iIC8+PC9hPicgOiAk dGhpbmc7DQoNCgkvLyBQYWdpbmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFycmF5KCJi ZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdlb3V0ID0gYXJyYXkoKTsNCglpZiAoJHBhZ2Vmb3Jt KSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRwYWdlZm9y bSk7DQoJCSRwYWdlcG9zID0gZG9fbGlzdCgkcGFnZXBvcywgJGRlbGltKTsNCgkJZm9yZWFj aCAoJHBhZ2Vwb3MgYXMgJHBhZ2VpdGVtKSB7DQoJCQkkcGFnZW91dFtdID0gKGluX2FycmF5 KCRwYWdlaXRlbSwgJHBhZ2VQb3NBbGxvd2VkKSkgPyAkcGFnZWl0ZW0gOiAkcGFnZVBvc0Fs bG93ZWRbMF07DQoJCX0NCgl9DQoNCgkvLyBUZW1wb3JhcnkgcmVkaXJlY3QgZm9yIGRlcHJl Y2F0ZWQgb3B0aW9ucw0KCSRvbmNoYW5nZSA9ICgkb25jaGFuZ2UpID8gJG9uY2hhbmdlIDog JHRodW1iY2hhbmdlOw0KCSRvbmNoYW5nZXdyYXB0YWcgPSAoJG9uY2hhbmdld3JhcHRhZykg PyAkb25jaGFuZ2V3cmFwdGFnIDogJHRodW1iY2hhbmdld3JhcHRhZzsNCgkkb25jaGFuZ2Vj bGFzcyA9ICgkb25jaGFuZ2VjbGFzcykgPyAkb25jaGFuZ2VjbGFzcyA6ICR0aHVtYmNoYW5n ZWNsYXNzOw0KDQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9uY2hhbmdlID0gZG9f bGlzdCgkb25jaGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRvbmNoYW5nZVswXSA9 PSAiIikgPyBhcnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9wdHMgPSBhcnJheSgpOw0K CWZvcmVhY2ggKCRvbmNoYW5nZSBhcyAkcmVzZXRPcHQpIHsNCgkJJHJlc2V0T3B0c1skcmVz ZXRPcHRdID0gIiI7DQoJfQ0KDQoJLy8gVGhlIGdhbGxlcnkgaWRlbnRpZmllciBpcyB1c2Vk IGZvciBrZWVwaW5nIHRyYWNrIG9mIG5leHQvcHJldiB0aHVtYm5haWwgcGFnZSBsaW5rcw0K CSRnYWxsSUQgPSAnJzsNCglpZiAoJGdhbGxlcnlpZCA9PSAnJyB8fCBzdWJzdHIoJGdhbGxl cnlpZCwwLDEpID09ICI/Iikgew0KCQkvLyBHZW5lcmF0ZSBhIChmYWlybHkgbGlrZWx5KSB1 bmlxdWUgSUQgZm9yIHRoaXMgZ2FsbGVyeSBpbnN0YW5jZQ0KCQkkZ2FsbFRtcCA9IG1kNSgk Y2F0ZWdvcnkuJGlkLiRkaXJlY3RvcnkuJG1hdGNoLiRzdWJsZXZlbC4kc29ydC4kbGltaXQu JG1heGxpbWl0KTsNCgkJbGlzdCgkZ2FsbExlbiwgJGdhbGxTa2lwKSA9IGV4cGxvZGUoIjoi LCBzdWJzdHIoJGdhbGxlcnlpZCwxKSk7DQoJCSRnYWxsTGVuID0gIChlbXB0eSgkZ2FsbExl bikpID8gIjQiIDogJGdhbGxMZW47DQoJCSRnYWxsU2tpcCA9ICAoZW1wdHkoJGdhbGxTa2lw KSkgPyAiMSIgOiAkZ2FsbFNraXA7DQoJCWZvciAoJGlkeCA9IDAsICRjbnQgPSAwOyAkY250 IDwgJGdhbGxMZW47ICRjbnQrKywgJGlkeCA9ICgoJGlkeCskZ2FsbFNraXApICUgc3RybGVu KCRnYWxsVG1wKSkpIHsNCgkJCSRnYWxsSUQgLj0gJGdhbGxUbXBbJGlkeF07DQoJCX0NCgl9 IGVsc2Ugew0KCQkkZ2FsbElEID0gJGdhbGxlcnlpZDsNCgl9DQoJJGdhbGxJRCA9ICJzbWRf Z2xyeV8iLiRnYWxsSUQ7IC8vIEF2b2lkIChhbHJlYWR5IGluY3JlZGlibHkgdW5saWtlbHkp IG5hbWVzcGFjZSBjbGFzaGVzDQoNCgkvLyBTZXQgdXAgdGhlIHZhcmlhYmxlcyBmcm9tIHRo ZSB0aHVtYiBvcHRpb24uDQoJLy8gRG9uJ3QgdXNlIHBhcmFtZGVsaW0gaGVyZSBvciB0aGUg ZGVmYXVsdCBvcHRpb24gYnJlYWtzDQoJJHRodW1iT3B0cyA9IGRvX2xpc3QoJHRodW1iLCAi OiIpOw0KCWlmIChjb3VudCgkdGh1bWJPcHRzKSA9PSAxKSB7DQoJCSRmdWxsbW9kID0gKCR0 aHVtYk9wdHNbMF0gPT0gMSkgPyAidCIgOiAiIjsNCgkJJHRodW1ibW9kID0gInQiOw0KCX0g ZWxzZSB7DQoJCSRmdWxsbW9kID0gKCR0aHVtYk9wdHNbMF0gPT0gMSkgPyAidCIgOiAiIjsN CgkJJHRodW1ibW9kID0gKCR0aHVtYk9wdHNbMV0gPT0gMSkgPyAidCIgOiAiIjsNCgl9DQoN CgkvLyBUaGUgbWFubmVyIG9mIG9idGFpbmluZyBmaWxlcyBkaWZmZXJzIGlmIHVzaW5nIGRp cmVjdG9yeSB2cyBjYXRlZ29yeS9pZA0KCSRycyA9IGFycmF5KCk7DQoJaWYgKCRkaXJlY3Rv cnkpIHsNCgkJJHJzID0gc21kX2RvRGlyZWN0b3J5KCRkaXJlY3RvcnksIDAsICRzdWJsZXZl bCwgJG1hdGNoLCAkZGVsaW0pOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1QYWdlcywgJHRo dW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAk b2Zmc2V0LCAkcGFnaW5nKTsNCgkJJGRpcmxpbWl0ID0gKCRsaW1pdD09MCkgPyAkbWF4bGlt aXQgOiAkbGltaXQ7DQoJCSRwb3N0T3JkZXIgPSBhcnJheSgpOw0KCQkkZml4ZWRPcmRlciA9 IDA7DQoJCSRyYW5kc29ydCA9IGZhbHNlOw0KCX0gZWxzZSB7DQoJCS8vIFByb2Nlc3MgY2F0 ZWdvcmllcy9JRHMgYW5kIG1ha2UgdXAgdGhlIGNydXggb2YgdGhlIHdoZXJlIGNsYXVzZS4N CgkJLy8gQ2xhdXNlIG9yZGVyID0gSURzIE9SIGNhdHMgQU5EICFjYXRzIEFORCAhSURzDQoJ CSRjbGF1c2VbXSA9ICcxPTEnOw0KCQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KDQoJCS8vIFN1 cnJvdW5kIGVhY2ggZW50cnkgaW4gdGhlIElEIGxpc3Qgd2l0aCBxdW90ZXMgYW5kIG1ha2Ug YW4gU1FMICJpbiIgbGlzdA0KCQkkc3ViaW5mbyA9ICgkc3VibGV2ZWwpID8gImltYWdlOiIu JHN1YmxldmVsIDogJyc7DQoJCWxpc3QoJGlkaW5jLCAkaWRleGMpID0gc21kX2RvTGlzdCgk aWQsIHRydWUsICcnLCB0cnVlLCAkZGVsaW0pOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMp ID0gc21kX2RvTGlzdCgkY2F0ZWdvcnksIGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGlt KTsNCgkJaWYgKCRpZGluYykgew0KCQkJJGNsYXVzZU9SW10gPSAndHhwX2ltYWdlLmlkIElO ICgnLmltcGxvZGUoIiwiLCAkaWRpbmMpLicpJzsNCgkJfQ0KCQlpZiAoJGNhdGluYykgew0K CQkJJGNsYXVzZU9SW10gPSAndHhwX2ltYWdlLmNhdGVnb3J5IElOICgnLmltcGxvZGUoIiwi LCAkY2F0aW5jKS4nKSc7DQoJCX0NCgkJaWYgKCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJCQkk Y2xhdXNlW10gPSAnICgnLmltcGxvZGUoIiBPUiAiLCAkY2xhdXNlT1IpLicpICc7DQoJCX0N Cg0KCQkkY2xhdXNlID0gaW1wbG9kZSgiIEFORCAiLCAkY2xhdXNlKTsNCgkJJGNsYXVzZSAu PSAoJGNhdGV4YykgPyAnIEFORCB0eHBfaW1hZ2UuY2F0ZWdvcnkgTk9UIElOICgnLmltcGxv ZGUoIiwiLCAkY2F0ZXhjKS4nKScgOiAnJzsNCgkJJGNsYXVzZSAuPSAoJGlkZXhjKSA/ICcg QU5EIHR4cF9pbWFnZS5pZCBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDog Jyc7DQoNCgkJLy8gSWYgYSBjYXRlZ29yeS9pZCBvcHRpb24gd2FzIGNob3NlbiBhbmQgdGhl eSBtYXRjaGVkIG5vdGhpbmcsIHVzZSBhIGJvZ3VzIGNhdGVnb3J5IHRoYXQgc2hvdWxkIG5v dCBleGlzdC4NCgkJLy8gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIHBsdWdpbiBkb2VzIHRoZSBl eHBlY3RlZCB0aGluZyBvZiBtYXRjaGluZyBub3RoaW5nIGluIHRoZSBldmVudCBpdCBmaW5k cyBub3RoaW5nLg0KCQlpZiAoJGNsYXVzZSA9PSAiMT0xIiAmJiAkYXR0ZW1wdE1hdGNoKSB7 DQoJICAJCSRjbGF1c2UgPSAndHhwX2ltYWdlLmNhdGVnb3J5ID0gInNtZF8nIC5tdF9yYW5k KCkuICciJzsNCgkJfQ0KDQoJCWlmICgkZGVidWcgPiAxKSB7DQoJCQllY2hvICIrKyBJTkNM VURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMgKysiOw0KCQkJZG1wKCRpZGluYyk7DQoJCQlk bXAoJGlkZXhjKTsNCgkJCWRtcCgkY2F0aW5jKTsNCgkJCWRtcCgkY2F0ZXhjKTsNCgkJfQ0K DQoJCS8vIENvbnZlcnQgdGhlIHNvcnQgaW50byBhIHZhbGlkIHNvcnRpbmcgaGllcmFyY2h5 Lg0KCQkvLyBOb3RlIHRoYXQgcmFuZG9tIGlzIGEgc3BlY2lhbCBjYXNlIGFuZCB0aGUgZm9s bG93aW5nIHJ1bGVzIGFwcGx5Og0KCQkvLyAgMSkgQW55dGhpbmcgYXBwZWFyaW5nIGJlZm9y ZSByYW5kb20gaXMgcGFzc2VkIHRvIHRoZSBkYXRhYmFzZSBxdWVyeSBmb3Igb3JkZXJpbmcN CgkJLy8gIDIpIEFzIHNvb24gYXMgcmFuZG9tIGlzIGVuY291bnRlcmVkLCB0aGUgcmVzdCBv ZiB0aGUgc29ydCBzdHJpbmcgaXMgaWdub3JlZC4NCgkJLy8gICAgIFRoZSByZXN1bHRzZXQg d2lsbCBiZSBzb3J0ZWQgcmFuZG9tbHkgaW5zdGVhZA0KCQkvLyAgMykgSWYgcmFuZG9tIGFw cGVhcnMgZmlyc3QgaW4gdGhlIGxpc3QsIHRoZSBkYXRhIGlzIHJldHJpZXZlZCByYW5kb21s eSB0aGVuIHRoZQ0KCQkvLyAgICAgcmVtYWluaW5nIG9wdGlvbnMgc29ydCB0aGUgcmVzdWx0 c2V0DQoJCSRjbGF1c2VTb3J0ID0gYXJyYXkoKTsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7 DQoJCSRydWxlID0gInNxbCI7DQoJCSRwb3N0UHJlZml4ID0gIlNPUlRfIjsNCgkJJGZpeGVk T3JkZXIgPSAkcmFuZHNvcnQgPSBmYWxzZTsNCgkJJHNvcnQgPSBkb19saXN0KCRzb3J0LCAk ZGVsaW0pOw0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJHNvcnQpOyAkaWR4Kysp IHsNCgkJCSRzb3J0X2RpciA9IGV4cGxvZGUoJyAnLCAkc29ydFskaWR4XSk7DQoJCQkkZGly ZWN0aW9uID0gJGNvbFJlZiA9ICcnOw0KCQkJaWYgKGNvdW50KCRzb3J0X2RpcikgPD0gMSkg ew0KCQkJCSRzb3J0X2RpclsxXSA9ICJhc2MiOw0KCQkJfQ0KCQkJaWYgKCRydWxlID09ICJz cWwiKSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICcg ZGVzYycgOiAnIGFzYyc7DQoJCQl9IGVsc2Ugew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRf ZGlyWzFdID09ICJkZXNjIikgPyAkcG9zdFByZWZpeC4nREVTQycgOiAkcG9zdFByZWZpeC4n QVNDJzsNCgkJCX0NCg0KCQkJc3dpdGNoICgkc29ydF9kaXJbMF0pIHsNCgkJCQljYXNlICdy YW5kb20nOg0KCQkJCQkkcnVsZSA9ICJwb3N0IjsNCgkJCQkJaWYgKCRpZHggPT0gMCkgew0K CQkJCQkJJGNsYXVzZVNvcnRbXSA9ICdyYW5kKCknOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJ JHJhbmRzb3J0ID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICdmaXhl ZCc6DQoJCQkJCS8vICdmaXhlZCcgb25seSB3b3JrcyBvbiBpZHMgb3IgY2F0ZWdvcmllcw0K CQkJCQkkZml4ZWRPcmRlciA9ICgkaWQgPT0gJycgJiYgJGNhdGVnb3J5ID09ICcnKSA/IGZh bHNlIDogdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJJGNvbFJlZiA9 IGFycmF5X3NlYXJjaCgkc29ydF9kaXJbMF0sICRmaWVsZE1hcCk7DQoJCQkJCWJyZWFrOw0K CQkJfQ0KCQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycp IHsNCgkJCQkJJGNsYXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJ CQl9IGVsc2Ugew0KCQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9 ICcnKSB7DQoJCQkJCQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sUmVmLCAi c29ydCIgPT4gJGRpcmVjdGlvbik7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlp ZiAoY291bnQoJGNsYXVzZVNvcnQpID4gMCkgew0KCQkJJGNsYXVzZSAuPSAnIE9SREVSIEJZ ICcgLiBpbXBsb2RlKCIsIiwkY2xhdXNlU29ydCk7DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDAp IHsNCgkJCWVjaG8gIisrIFdIRVJFIENMQVVTRSArKyI7DQoJCQlkbXAoJGNsYXVzZSk7DQoJ CX0NCgkJLy8gVGhlIGRhdGFiYXNlIGZpZWxkcyByZXF1aXJlZA0KCQkkZmllbGRzID0gaW1w bG9kZSgiLCIsIGFycmF5X2tleXMoJGZpZWxkTWFwKSk7DQoNCgkJLy8gVGltZSB0byBncmFi IHRoZSBtYXRjaGluZyByb3dzIGZyb20gdGhlIGRhdGFiYXNlDQoJCSRycyA9IHNhZmVfcm93 cygkZmllbGRzLicsIHR4cF9jYXRlZ29yeS50aXRsZSBBUyBjYXRlZ29yeV90aXRsZScsICd0 eHBfaW1hZ2UsIHR4cF9jYXRlZ29yeScsICd0eHBfY2F0ZWdvcnkubmFtZSA9IHR4cF9pbWFn ZS5jYXRlZ29yeSBBTkQgdHhwX2NhdGVnb3J5LnR5cGU9ImltYWdlIiBBTkQgJyAuJGNsYXVz ZSAuJyBMSU1JVCAwLCcuICRtYXhsaW1pdCwgJGRlYnVnKTsNCgkJbGlzdCgkYWxsSW1hZ2Vz LCAkbnVtUGFnZXMsICR0aHVtUGFnZSwgJG9mZnNldCkgPSBzbWRfZ2V0UGFnZSgkcnMsICRn YWxsSUQsICRsaW1pdCwgJG9mZnNldCwgJHBhZ2luZyk7DQoJfQ0KDQoJLy8gSXMgcG9zdC1v cmRlcmluZyByZXF1aXJlZD8gRG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNodWZmbGUo JHJzKTsNCgl9IGVsc2UgaWYgKGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkvLyBUcmFu c2xhdGUgdGhlIHJvd3MgaW50byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0KCQlmb3Jl YWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJCSRjb2xfaWRbJGtleV0gPSAkcm93Wydp ZCddOw0KCQkJJGNvbF9uYW1lWyRrZXldID0gJHJvd1snbmFtZSddOw0KCQkJJGNvbF9jYXB0 aW9uWyRrZXldID0gJHJvd1snY2FwdGlvbiddOw0KCQkJJGNvbF9hbHRbJGtleV0gPSAkcm93 WydhbHQnXTsNCgkJCSRjb2xfY2F0ZWdvcnlbJGtleV0gPSAkcm93WydjYXRlZ29yeSddOw0K CQkJJGNvbF9kYXRlWyRrZXldID0gJHJvd1snZGF0ZSddOw0KCQkJJGNvbF9leHRbJGtleV0g PSAkcm93WydleHQnXTsNCgkJCSRjb2xfYXV0aG9yWyRrZXldID0gJHJvd1snYXV0aG9yJ107 DQoJCQkkY29sX3dbJGtleV0gPSAkcm93Wyd3J107DQoJCQkkY29sX2hbJGtleV0gPSAkcm93 WydoJ107DQoJCQkkY29sX3RodW1ibmFpbFska2V5XSA9ICRyb3dbJ3RodW1ibmFpbCddOw0K CQl9DQoJCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVj dXRlIGl0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9yZGVyKTsgJGlk eCsrKSB7DQoJCQkkc29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclskaWR4XVsnY29s J107DQoJCQkkc29ydGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQnXTsNCgkJfQ0K CQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29ydGFyZ3Mp LicsICRycyk7JzsNCgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBmaXhlZC1vcmRl ciBvdXRwdXQgZGVzaXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglpZiAoJGZpeGVk T3JkZXIpIHsNCgkJJG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVMaXN0ID0gQXJy YXkoKTsNCgkJJHJlbWFpbmluZ1JTID0gQXJyYXkoKTsNCgkJLy8gU3VjayBvdXQgdGhlIGZp eGVkIGl0ZW1zIGZpcnN0LiBJRHMgdGhlbiBjYXRlZ29yaWVzDQoJCWZvciAoJGlkeCA9IDA7 ICRpZHggPCBjb3VudCgkaWRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRy b3cpIHsNCgkJCQlpZiAoJGlkICYmIGRvUXVvdGUoJHJvd1snaWQnXSkgPT0gJGlkaW5jWyRp ZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRyb3c7DQoJCQkJCSRpZ25vcmVMaXN0W10g PSAkcm93WydpZCddOw0KCQkJCQlicmVhazsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJZm9yICgk aWR4ID0gMDsgJGlkeCA8IGNvdW50KCRjYXRpbmMpOyAkaWR4KyspIHsNCgkJCWZvcmVhY2go JHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGNhdGVnb3J5ICYmIGRvUXVvdGUoJHJvd1snY2F0 ZWdvcnknXSkgPT0gJGNhdGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93 Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJCQl9DQoJCX0N CgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJZm9yZWFjaCgkcnMgYXMgJHJv dykgew0KCQkJaWYgKCFpbl9hcnJheSgkcm93WydpZCddLCAkaWdub3JlTGlzdCkpIHsNCgkJ CQkkcmVtYWluaW5nUlNbXSA9ICRyb3c7DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVy Z2UoJG9yZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBHcmFiIHRoZSBwb3J0 aW9uIG9mIHRoZSByZWNvcmQgc2V0IGFjdHVhbGx5IHJlcXVpcmVkIHRvIGl0ZXJhdGUgb3Zl cg0KCSRycyA9IGFycmF5X3NsaWNlKCRycywgJG9mZnNldCwgKCgkZGlyZWN0b3J5KSA/ICRk aXJsaW1pdCA6ICgoJGxpbWl0PT0wKSA/ICRtYXhsaW1pdCA6ICRsaW1pdCkpKTsNCg0KCS8v IEhhbmRsZSB0aHVtYnNpemUgLSBvZiBsaW1pdGVkIHVzZSBub3cgYnV0IHN0aWxsIGF2YWls YWJsZQ0KCSR0aHVtYldpZHRoID0gJHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRodW1iV1VuaXRz ID0gJHRodW1iSFVuaXRzID0gJyc7DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJJHRodW1iU2l6 ZXMgPSBkb19saXN0KCR0aHVtYnNpemUsICRkZWxpbSk7DQoJCWlmIChjb3VudCgkdGh1bWJT aXplcykgPT0gMSkgew0KCQkJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBlcmVnX3Jl cGxhY2UoIlteMC05XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdW5pdHMgPSBlcmVn X3JlcGxhY2UoIlswLTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0 cyA9ICR0aHVtYkhVbml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVu aXRzOw0KCQl9IGVsc2Ugew0KCQkJJHRodW1iV2lkdGggPSBlcmVnX3JlcGxhY2UoIlteMC05 XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxh Y2UoIlteMC05XSIsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3Jl cGxhY2UoIlswLTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9 ICgkdW5pdHMgPT0gJycgJiYgJHRodW1iV2lkdGggIT0gJycpID8gJHRodW1iV1VuaXRzIDog JHVuaXRzOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJT aXplc1sxXSk7DQoJCQkkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYkhl aWdodCAhPSAnJykgPyAkdGh1bWJIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBD b2xsYXRpb24gZGVmZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0dXJuZWQgaXRl bS4NCgkvLyBJbnN0ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0IGF0IHRoZSBl bmQgKGl0ZW1zIG1heSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJhY3RlZCBpZiBy ZXF1aXJlZCkNCgkvL1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNob3J0Y3V0IHRv IHNwZWNpZnkgdGhhdCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mgb2YgIzEsICMy LCAjMyBldGMpIGFyZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsNCgkJJGRibFF1 b3RlID0gJHNnbFF1b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxhdGVPcHRzID0g ZG9fbGlzdCgkY29sbGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxhdGVPcHRzIGFz ICRvcHRpb24pIHsNCgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAkcGFyYW1kZWxp bSk7DQoJCQkkY29sVHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJCS8vIFN1cHBs eWluZyAncXVvdGUnIG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZhbnQgYXJyYXks IGltcGx5aW5nICJBTEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlzd2l0Y2ggKCRj b2xUeXBlKSB7DQoJCQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVvdGUgPSAkaW5k ZXhlczsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJCWNhc2UgInF1 b3RlIjoNCgkJCQkJJGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJfQ0K CQl9DQoJfQ0KDQoJLy8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmluYXRpb25zIG9m IHJlcGxhY2VtZW50IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9LCAuLi4NCgkk Y29tYm9zID0gYXJyYXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9IGRvX2xpc3Qo JGNvbWJvLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0RlZikgew0KCQkJ bGlzdCgkZGVmUGFydHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdEZWYsIGZhbHNl LCAnJywgZmFsc2UsICRwYXJhbWRlbGltKTsNCgkJCSRkZWZOYW1lID0gInsiLmFycmF5X3No aWZ0KCRkZWZQYXJ0cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFtZV0gPSAkZGVmUGFydHNb MF07DQoJCX0NCgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNobyAiKysgQ09NQk9zICsr IjsNCgkJZG1wKCRjb21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3QgdGhlIG91dHB1dA0KCSR0 aHVtYm91dCA9IGFycmF5KCk7DQoJJGdyb3Vwb3V0ID0gYXJyYXkoKTsNCgkkbmF2b3V0ID0g YXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29sbGF0aW9ucyA9IGFycmF5KCk7DQoJ JGNoSWRlbnRpZmllciA9ICgkdGh1bWJjaGFuZ2UpID8gImNoYW5nZWQiIDogIm9uY2hhbmdl IjsgLy8gVE9ETzogRml4IHdoZW4gJHRodW1iY2hhbmdlIGlzIHJlbW92ZWQNCg0KCWlmICgk ZGVidWcgPiAyKSB7DQoJCWVjaG8gIisrIFJFQ09SRCBTRVQgKysiOw0KCQlkbXAoJHJzKTsN Cgl9DQoJaWYgKCRkZWJ1ZyA+IDMpIHsNCgkJZWNobyAiKysgQVZBSUxBQkxFICc/JyBWQVJT ICsrIjsNCgkJZG1wKCRwcmV0ZXh0KTsNCgkJZG1wKCR0aGlzYXJ0aWNsZSk7DQoJfQ0KDQoJ aWYoJHJzKSB7DQoJCSRpZHggPSAwOw0KCQkkY3RyID0gMTsNCgkJJHRodW1iSWR4ID0gMDsN CgkJJHRodW1iQ3RyID0gMTsNCgkJJG51bUltYWdlcyA9IGNvdW50KCRycyk7DQoJCSRyZXBh Z2VtZW50cyA9IGFycmF5KCk7DQoNCgkJLy8gU2V0IHVwIHRoZSBwYWdpbmcgZmVhdHVyZXMg aWYgcmVxdWlyZWQNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCQkkbmV4 dCA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSAhPSAkbnVtUGFnZXMpOw0KCQkJJHBy ZXYgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBhZ2UgPiAxKTsNCg0KCQkJLy8gUmVwbGFj ZSBhbnkgcGFnaW5nIGluZm8gaW4gdGhlIHF1ZXJ5IHN0cmluZw0KCQkJJHByZXZQYWdlID0g c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBh Z2UtMSk7DQoJCQkkbmV4dFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3Rf dXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSsxKTsNCgkJCSR0aGlzUGFnZSA9IHNtZF9hZGRR U1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlKTsNCgkJ CSRmaXJzdFBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRn YWxsSUQsIDEpOw0KCQkJJGxhc3RQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1 ZXN0X3VyaSddLCAkZ2FsbElELCAkbnVtUGFnZXMpOw0KDQoJCQkvLyBMYWJlbHMgY2FuIGJl IHNwZWNpZmllZCBpbiB0aGUgcmVwbGFjZW1lbnQgdGFnIGFmdGVyIGEgcGFyYW1kZWxpbS4N CgkJCS8vICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBkb24ndCBoYXZlIGxhYmVscy4gQW55dGhp bmcgc3BlY2lmaWVkIGFmdGVyIHBhcmFtZGVsaW0gaXMgdGhlIG1heCBudW1iZXIgb2YgcGFn ZXMgdG8gc2hvdzsgZW1wdHkgPSBhbGwgcGFnZXMNCgkJCSRsYWJlbCA9IGFycmF5KA0KCQkJ CQkne25hdmZpcnN0fScgPT4gJ0ZpcnN0JywNCgkJCQkJJ3tuYXZwcmV2fScgPT4gJyZsYXF1 bzsnLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZ0aGlzfScgPT4g JHRodW1QYWdlLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiAkdGh1bVBhZ2UsDQoJCQkJCSd7 bmF2bGF0ZXJ9JyA9PiAnJywNCgkJCQkJJ3tuYXZuZXh0fScgPT4gJyZyYXF1bzsnLA0KCQkJ CQkne25hdmxhc3R9JyA9PiAnTGFzdCcsDQoJCQkJKTsNCg0KCQkJJGxhYmVsUkUgPSAnL1x7 KG5hdlthLXpdKyknLiRwYXJhbWRlbGltLicoLis/KVx9Lyc7DQoJCQkkbnVtTGFiZWxzID0g cHJlZ19tYXRjaF9hbGwoJGxhYmVsUkUsICRwYWdlZm9ybSwgJGxhYmVscyk7DQoNCgkJCWZv ciAoJGxhYmVsQ3RyID0gMDsgJGxhYmVsQ3RyIDwgJG51bUxhYmVsczsgJGxhYmVsQ3RyKysp IHsNCgkJCQkkZmllbGRuYW1lID0gJ3snLiRsYWJlbHNbMV1bJGxhYmVsQ3RyXS4nfSc7DQoJ CQkJJGxhYmVsWyRmaWVsZG5hbWVdID0gJGxhYmVsc1syXVskbGFiZWxDdHJdOw0KCQkJCSRw YWdlZm9ybSA9IHN0cl9yZXBsYWNlKCRsYWJlbHNbMF1bJGxhYmVsQ3RyXSwgJ3snLiRsYWJl bHNbMV1bJGxhYmVsQ3RyXS4nfScsICRwYWdlZm9ybSk7DQoJCQl9DQoNCgkJCWlmICgkZGVi dWcgPiAxKSB7DQoJCQkJZWNobyAiKysgUEFHSU5HIExBQkVMUyArKyI7DQoJCQkJZG1wKCRs YWJlbCk7DQoJCQl9DQoNCgkJCS8vIEdlbmVyYXRlICdlYXJsaWVyJyBhbmQgJ2xhdGVyJyBs aXN0cw0KCQkJJG51bUVhcmxpZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2ZWFybGllcn0nXSk7 DQoJCQkkbnVtTGF0ZXIgPSBpbnR2YWwoJGxhYmVsWyd7bmF2bGF0ZXJ9J10pOw0KCQkJJG51 bUVhcmxpZXIgPSAoJG51bUVhcmxpZXIgJiYgKCR0aHVtUGFnZS0kbnVtRWFybGllciA+IDEp KSA/ICRudW1FYXJsaWVyIDogJHRodW1QYWdlLTE7DQoJCQkkbnVtTGF0ZXIgPSAoJG51bUxh dGVyICYmICgkdGh1bVBhZ2UrJG51bUxhdGVyIDwgJG51bVBhZ2VzKSkgPyAkbnVtTGF0ZXIg OiAkbnVtUGFnZXMtJHRodW1QYWdlOw0KCQkJJG5hdkVhcmxpZXIgPSAkbmF2TGF0ZXIgPSBh cnJheSgpOw0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlLSRudW1FYXJsaWVyOyAkY29kIDwg JHRodW1QYWdlOyAkY29kKyspIHsNCgkJCQkkbmF2RWFybGllcltdID0gJzxhIGhyZWY9Iicu c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4n Ij4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJZm9yICgkY29kID0gJHRodW1QYWdlKzE7ICRj b2QgPD0gJHRodW1QYWdlKyRudW1MYXRlcjsgJGNvZCsrKSB7DQoJCQkJJG5hdkxhdGVyW10g PSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRn YWxsSUQsICRjb2QpLiciPicuJGNvZC4nPC9hPic7DQoJCQl9DQoJCQkkbmF2RWFybGllciA9 IGRvV3JhcCgkbmF2RWFybGllciwgJycsICRuYXZicmVhaywgJycpOw0KCQkJJG5hdkxhdGVy ID0gZG9XcmFwKCRuYXZMYXRlciwgJycsICRuYXZicmVhaywgJycpOw0KDQoJCQkvLyBNYWtl IHVwIHRoZSByZXBhZ2VtZW50cyBhcnJheSBmb3IgcGFnZWZvcm0NCgkJCSRyZXBhZ2VtZW50 cyA9IGFycmF5KA0KCQkJCQkne25hdmZpcnN0fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEg aHJlZj0iJy4kZmlyc3RQYWdlLiciPicuJGxhYmVsWyd7bmF2Zmlyc3R9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2Zmlyc3R9J10sICRuYXZicmVhaywgJGVt cHR5Y2xhc3MpKSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gKCgkcHJldikgPyBkb1RhZygnPGEg aHJlZj0iJy4kcHJldlBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZwcmV2fSddLic8L2E+JywgJG5h dmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdnByZXZ9J10sICRuYXZicmVhaywgJGVtcHR5 Y2xhc3MpKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJG5hdkVhcmxpZXIsDQoJCQkJCSd7 bmF2dGhpc30nID0+IGRvVGFnKCRsYWJlbFsne25hdnRoaXN9J10sICRuYXZicmVhaywgJ2N1 cnJlbnQgJy4kZW1wdHljbGFzcyksDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+IGRvVGFnKCc8 YSBocmVmPSInLiR0aGlzUGFnZS4nIj4nLiRsYWJlbFsne25hdnRoaXN1cmx9J10uJzwvYT4n LCAkbmF2YnJlYWssICdjdXJyZW50JyksDQoJCQkJCSd7bmF2bGF0ZXJ9JyA9PiAkbmF2TGF0 ZXIsDQoJCQkJCSd7bmF2bmV4dH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9Iicu JG5leHRQYWdlLiciPicuJGxhYmVsWyd7bmF2bmV4dH0nXS4nPC9hPicsICRuYXZicmVhaykg OiBkb1RhZygkbGFiZWxbJ3tuYXZuZXh0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSks DQoJCQkJCSd7bmF2bGFzdH0nID0+ICgoJG5leHQpID8gZG9UYWcoJzxhIGhyZWY9IicuJGxh c3RQYWdlLiciPicuJGxhYmVsWyd7bmF2bGFzdH0nXS4nPC9hPicsICRuYXZicmVhaykgOiBk b1RhZygkbGFiZWxbJ3tuYXZsYXN0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJ CQkJCSd7bmF2dGhpc3BhZ2V1cmx9JyA9PiAkdGhpc1BhZ2UsDQoJCQkJCSd7bmF2bmV4dHBh Z2V1cmx9JyA9PiAoKCRuZXh0KSA/ICRuZXh0UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZwcmV2 cGFnZXVybH0nID0+ICgoJHByZXYpID8gJHByZXZQYWdlIDogJycpLA0KCQkJCQkne25hdmZp cnN0cGFnZXVybH0nID0+ICRmaXJzdFBhZ2UsDQoJCQkJCSd7bmF2bGFzdHBhZ2V1cmx9JyA9 PiAkbGFzdFBhZ2UsDQoJCQkJCSd7dG90YWxpbWFnZXN9JyA9PiAkbnVtSW1hZ2VzLA0KCQkJ CQkne3RvdGFscGFnZXN9JyA9PiAkbnVtUGFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScgPT4g JGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkJLy8gUGVyZm9ybSB0aGUgc3Vic3RpdHV0aW9u cw0KCQkJCSRuYXZvdXRbXSA9IHBhcnNlKHN0cnRyKCRwYWdlZm9ybSwgJHJlcGFnZW1lbnRz KSk7DQoJCX0NCg0KCQkvLyBGb3IgZXZlcnkgaW1hZ2UgaW4gdGhlIGdhbGxlcnkuLi4NCgkJ Zm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJaWYgKCRkaXJlY3RvcnkpIHsNCgkJCQkkdXJs UGF0aCA9ICRyb3dbJ3BhdGgnXS4nLyc7DQoJCQl9IGVsc2Ugew0KCQkJCSR1cmxQYXRoID0g aHUuJGltZ19kaXIuJy8nOw0KCQkJfQ0KCQkJJHRoZVRodW1iID0gJHVybFBhdGggLiAkcm93 WydpZCddIC4gJHRodW1ibW9kIC4gJHJvd1snZXh0J107DQoJCQkkZnVsbFNpemUgPSAkdXJs UGF0aCAuICRyb3dbJ2lkJ10gLiAkZnVsbG1vZCAuJHJvd1snZXh0J107DQoNCgkJCS8vIERv IHdlIG5lZWQgdG8gcmVzZXQgdGhlIHRodW1iIGNvdW50ZXIgdGhpcyB0aW1lPw0KCQkJZm9y ZWFjaCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJaWYg KCRyb3dbJHJlc2V0T3B0XSAhPSAkcmVzZXRWYWwpIHsNCgkJCQkJJHRodW1iSWR4ID0gMDsN CgkJCQkJJHRodW1iQ3RyID0gMTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkv LyBJcyBhIHRodW1iL3RleHQgb2JqZWN0IHJlcXVpcmVkIHRoaXMgdGltZT8NCgkJCSRvYmpl Y3QgPSAnJzsNCgkJCWlmICgkdGh1bWJJZHggPj0gJHRodW1ib2Zmc2V0ICYmICR0aHVtYklk eCA8ICR0aHVtYm9mZnNldCskdGh1bWJsaW1pdCkgew0KCQkJCXN3aXRjaCAoJHR5cGUpIHsN CgkJCQkJY2FzZSAnaW1hZ2UnOg0KCQkJCQkJJG9iamVjdCA9ICgkdGV4dCkgPyAkdGV4dCA6 ICc8aW1nIHNyYz0iJy4kdGhlVGh1bWIuJyInIC4oKCRyb3dbJ2FsdCddKSA/ICcgYWx0PSIn LiRyb3dbJ2FsdCddLiciJyA6ICcnKSAuKCgkdGh1bWJXaWR0aCkgPyAnIHdpZHRoPSInLiR0 aHVtYldpZHRoLiR0aHVtYldVbml0cy4nIicgOiAnJykgLigoJHRodW1iSGVpZ2h0KSA/ICcg aGVpZ2h0PSInLiR0aHVtYkhlaWdodC4kdGh1bWJIVW5pdHMuJyInIDogJycpIC4nIC8+JzsN CgkJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gQ29uc3RydWN0IHRoZSByZXBs YWNlbWVudCBhcnJheQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkne2lkfScg PT4gJHJvd1snaWQnXSwNCgkJCQkJJ3tuYW1lfScgPT4gJHJvd1snbmFtZSddLA0KCQkJCQkn e2V4dH0nID0+ICRyb3dbJ2V4dCddLA0KCQkJCQkne2NhdGVnb3J5fScgPT4gJHJvd1snY2F0 ZWdvcnknXSwNCgkJCQkJJ3tjYXRlZ29yeV90aXRsZX0nID0+ICRyb3dbJ2NhdGVnb3J5X3Rp dGxlJ10sDQoJCQkJCSd7YXV0aG9yfScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFz dGh1bWJ9JyA9PiAkcm93Wyd0aHVtYm5haWwnXSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNp emUsDQoJCQkJCSd7dGh1bWJ1cmx9JyA9PiAkdGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRo fScgPT4gJHVybFBhdGgsDQoJCQkJCSd7aW1hZ2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNp emUpLA0KCQkJCQkne3RodW1iZGVmfScgPT4gYmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJ J3thbHR9JyA9PiAkcm93WydhbHQnXSwNCgkJCQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRp b24nXSwNCgkJCQkJJ3t0aHVtYndpZHRofScgPT4gJHRodW1iV2lkdGgsDQoJCQkJCSd7dGh1 bWJoZWlnaHR9JyA9PiAkdGh1bWJIZWlnaHQsDQoJCQkJCSd7dGh1bWJ3dW5pdHN9JyA9PiAk dGh1bWJXVW5pdHMsDQoJCQkJCSd7dGh1bWJodW5pdHN9JyA9PiAkdGh1bWJIVW5pdHMsDQoJ CQkJCSd7d2lkdGh9JyA9PiAkcm93Wyd3J10sDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHJvd1sn aCddLA0KCQkJCQkne2RhdGV9JyA9PiAkcm93WydkYXRlJ10sDQoJCQkJCSd7b2JqZWN0fScg PT4gJG9iamVjdCwNCgkJCQkJJ3tnYWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2lu ZGV4fScgPT4gJGlkeCwNCgkJCQkJJ3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0aHVt YmluZGV4fScgPT4gJHRodW1iSWR4LA0KCQkJCQkne3RodW1iY291bnRlcn0nID0+ICR0aHVt YkN0ciwNCgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7bWF4 aW1hZ2VzfScgPT4gJGFsbEltYWdlcywNCgkJCQkpOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNo YW5nZWQgaXRlbXMgdGhhdCBhcmUgcmVxdWlyZWQNCgkJCWZvcmVhY2ggKCRyZXNldE9wdHMg YXMgJHJlc2V0T3B0ID0+ICRyZXNldFZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3snLiRj aElkZW50aWZpZXIuJHBhcmFtZGVsaW0uJHJlc2V0T3B0Lid9J10gPSAoJHRodW1iSWR4ID09 IDApID8gZG9UYWcoJHJvd1skcmVzZXRPcHRdLCAkb25jaGFuZ2V3cmFwdGFnLCAkb25jaGFu Z2VjbGFzcykgOiAnJzsNCgkJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdlbmR9J10gPSAo JGdyb3VwdGFnICYmICRjdHIgPT0gJG51bUltYWdlcykgPyAnPC8nIC4gJGdyb3VwdGFnIC4g Jz4nIDogJyc7DQoJCQkJJHJlcGxhY2VtZW50c1sne2dyb3VwdGFnc3RhcnR9J10gPSAoJGdy b3VwdGFnICYmICR0aHVtYklkeCA9PSAwKSA/ICgoJGlkeCAhPSAwKSA/ICc8LycgLiAkZ3Jv dXB0YWcgLiAnPicgOiAnJykgLm4uICc8JyAuICRncm91cHRhZyAuICgoJGdyb3VwY2xhc3Mp ID8gJyBjbGFzcz0iJy4kZ3JvdXBjbGFzcy4nIicgOiAnJykgLiAnPicgOiAnJzsNCgkJCX0N Cg0KCQkJLy8gQXBwZW5kIGFueSBjb21ib3MNCgkJCWZvcmVhY2ggKCRjb21ib3MgYXMgJGRl Zk5hbWUgPT4gJG5ld0RlZikgew0KCQkJCWlmICghYXJyYXlfa2V5X2V4aXN0cygkZGVmTmFt ZSwgJHJlcGxhY2VtZW50cykpIHsNCgkJCQkJJHJlcGxhY2VtZW50c1skZGVmTmFtZV0gPSBz dHJ0cigkbmV3RGVmLCAkcmVwbGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIFNv bG9zIGFyZSBpdGVtcyBpbiB0aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1aXJlIGRldGFpbHMg ZnJvbSBhIHNwZWNpZmljIHJvdy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0aW9uDQoJCQkvLyBt b2RlLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5IG9uIGFuIGFz LW5lZWRlZCBiYXNpcyB0byBzYXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xvUkUgPSAnL1x7KFth LXowLTldKykjJy4kY3RyLidcfS8nOw0KCQkJJG51bVNvbG9zID0gcHJlZ19tYXRjaF9hbGwo JHNvbG9SRSwgJHRoaW5nLCAkc29sb3MpOw0KCQkJZm9yICgkc29sb0N0ciA9IDA7ICRzb2xv Q3RyIDwgJG51bVNvbG9zOyAkc29sb0N0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4k c29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCQkkZ3JhYmZpZWxkID0gJ3sn LiRzb2xvc1sxXVskc29sb0N0cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVudHNbJGZpZWxkbmFt ZV0gPSAkcmVwbGFjZW1lbnRzWyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJCQkvLyBBZGQgdGhl IG5hdmlnYXRpb24gaXRlbXMgaWYgdGhleSdyZSBkZWZpbmVkDQoJCQlpZiAoY291bnQoJHJl cGFnZW1lbnRzKSA+IDApIHsNCgkJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXlfbWVyZ2UoJHJl cGFnZW1lbnRzLCAkcmVwbGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJaWYgKCRkZWJ1ZyA+IDAp IHsNCgkJCQllY2hvICIrKyBSRVBMQUNFTUVOVFMgOiBJTUFHRSAiLiRjdHIuIiArKyI7DQoJ CQkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJCQkvLyBJbiBjb2xsYXRlIG1vZGUg dGhlIGZvcm0gaXMgb25seSBwYXJzZWQgYXQgdGhlIGVuZDogYnVpbGQgYSBjb2xsb3NhbCBt dWx0aS1kaW1lbnNpb24gYXJyYXkgb2YgYWxsIGl0ZW1zIGhlcmUNCgkJCWlmICgkY29sbGF0 ZSkgew0KCQkJCWZvcmVhY2ggKCRyZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZh bCkgew0KCQkJCQkkY29sbGF0aW9uc1skZGVmTmFtZV1bXSA9ICRkZWZWYWw7DQoJCQkJfQ0K CQkJfSBlbHNlIHsNCgkJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJHJl cGxhY2VtZW50cykpOw0KCQkJfQ0KDQoJCQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50 IHZhbHVlcyBzbyB3ZSBrbm93IGlmIHRoZXkgY2hhbmdlIG5leHQgdGltZQ0KCQkJZm9yZWFj aCAoJHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJJHJlc2V0 T3B0c1skcmVzZXRPcHRdID0gJHJvd1skcmVzZXRPcHRdOw0KCQkJfQ0KCQkJJHRodW1iSWR4 Kys7DQoJCQkkdGh1bWJDdHIrKzsNCgkJCSRpZHgrKzsNCgkJCSRjdHIrKzsNCgkJfQ0KCQlp ZiAoJGNvbGxhdGUpIHsNCgkJCWZvcmVhY2ggKCRjb2xsYXRpb25zIGFzICRpdGVtID0+ICRs aXN0KSB7DQoJCQkJLy8gUXVvdGUgdGhlIGxpc3RzIGlmIHJlcXVpcmVkDQoJCQkJJGxpc3Qg PSAoZW1wdHkoJGRibFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJGRibFF1b3RlKSkgPyBk b0FycmF5KCRsaXN0LCAnc21kX2RvRGJsUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRsaXN0ID0g KGVtcHR5KCRzZ2xRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRzZ2xRdW90ZSkpID8gZG9B cnJheSgkbGlzdCwgJ2RvUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRjb2xsYXRpb25zWyRpdGVt XSA9IGltcGxvZGUoJGRlbGltLCAkbGlzdCk7DQoJCQl9DQoJCQlpZiAoJGRlYnVnID4gMCkg ew0KCQkJCWVjaG8gIisrIENPTExBVElPTlMgKysiOw0KCQkJCWRtcCgkY29sbGF0aW9ucyk7 DQoJCQl9DQoJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJGNvbGxhdGlv bnMpKTsNCgkJfQ0KDQoJCS8vIFRhY2sgb24gdGhlIHBhZ2luZyBmcm9tIGVhcmxpZXIgaWYg aXQncyB0byBnbyBhZnRlcndhcmRzDQoJCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykg ew0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgUkVQTEFDRU1F TlRTICsrIjsNCgkJCQlkbXAoJHJlcGFnZW1lbnRzKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8v IEFkZCB0aGUgcGFnaW5nIHRvIHRoZSBvdXRwdXQgaWYgaXQncyB0byBnbyBhYm92ZSB0aGUg dGh1bWJzDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9hcnJh eSgiYWJvdmUiLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAk bmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCgkkb3V0W10gPSBkb1dy YXAoJHRodW1ib3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0KDQoJaWYgKCgkbGlt aXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9hcnJheSgiYmVsb3ciLCAkcGFnZW91 dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRu YXZjbGFzcyk7DQoJCX0NCgl9DQoNCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hvICIrKyBG SU5BTCBPVVRQVVQgKysiOw0KCQlkbXAoJG91dCk7DQoJfQ0KDQoJcmV0dXJuIGpvaW4oIiAi LCAkb3V0KTsNCn0NCg0KLy8gUmV0dXJuIGFuIGV4cGFuZGVkIGxpc3Qgb2YgaXRlbXM6DQov LyAxKSBBbnl0aGluZyBjb250YWluaW5nICc/JyBvciAnIScgaXMgY2hlY2tlZCBmb3IgYSBt YXRjaCB3aXRoIGEgVFhQIGZpZWxkDQovLyAyKSBBbnkgcmFuZ2VzIG9mIGl0ZW1zIGFyZSBl eHBhbmRlZCAoZS5nLiA0LTcgPSA0LDUsNiw3KQ0KLy8gMykgVFhQIGZpZWxkcyBtYXkgdGhl bXNlbHZlcyBiZSBsaXN0cyBvciByYW5nZXMNCi8vIDQpIEFueXRoaW5nIHRoYXQgaXMgbm90 IGEgVFhQIGZpZWxkIGlzIHVzZWQgdmVyYmF0aW0NCi8vIDUpIFRoZSBpdGVtcyBhcmUgcmV0 dXJuZWQgYXMgMiBsaXN0czsgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24NCi8vIEFyZ3M6DQov LyAgbHN0ID0gdGhlIGxpc3QgYXMgYSBkZWxpbWl0ZWQgc3RyaW5nDQovLyAgcm5nID0gd2hl dGhlciB0byBhbGxvdyByYW5nZXMgb3Igbm90IChib29sKQ0KLy8gIHN1YiA9IHRoZSB0eXBl IG9mIHN1YmNhdGVnb3J5IHRvIHRyYXZlcnNlIChpbWFnZSwgZmlsZSwgbGluaywgYXJ0aWNs ZSwgbm9uZT0iIikgYW5kIGhvdyBtYW55IGxldmVscyB0byBnbyBkb3duIChlLmcuIGltYWdl OjIpDQovLyAgcXRlID0gd2hldGhlciB0byBxdW90ZSBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5 IG9yIG5vdCAoYm9vbCkNCi8vICBkbG0gPSB0aGUgZGVsaW1pdGVyIChzdHJpbmcpDQppZiAo IWZ1bmN0aW9uX2V4aXN0cygic21kX2RvTGlzdCIpKSB7DQpmdW5jdGlvbiBzbWRfZG9MaXN0 KCRsc3QsICRybmc9dHJ1ZSwgJHN1Yj0iIiwgJHF0ZT10cnVlLCAkZGxtPSIsIikgew0KCWds b2JhbCAkdGhpc2FydGljbGUsICRwcmV0ZXh0Ow0KDQoJJGluYyA9ICRleGMgPSBhcnJheSgp Ow0KCSRsc3QgPSBkb19saXN0KCRsc3QsICRkbG0pOw0KCSRtb2RSRSA9ICcvKFw/fFwhKShb QS1aYS16MC05X1wtIF0rKS8nOw0KCWZvcmVhY2ggKCRsc3QgYXMgJGl0ZW0pIHsNCgkJJG1v ZCA9IDA7IC8vIDAgPSBpbmNsdWRlLCAxID0gZXhjbHVkZQ0KCQkkbnVtTW9kcyA9IHByZWdf bWF0Y2hfYWxsKCRtb2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCQlmb3IgKCRtb2RDdHIgPSAw OyAkbW9kQ3RyIDwgJG51bU1vZHM7ICRtb2RDdHIrKykgew0KCQkJLy8gbW9kICJ0eXBlIiBp cyBnb3Zlcm5lZCBieSB0aGUgZmlyc3Qgb25lIGZvdW5kIG9ubHkuIGkuZS4gaWYgImFydGlj bGUtP2MhcyIgd2FzIHVzZWQgaW4gb25lIGZpZWxkDQoJCQkvLyBpdCB3b3VsZCBiZSBhbiAi aW5jbHVkZSIgb2YgdGhlIHdvcmQgImFydGljbGUtIiBwbHVzIHRoZSBjYXRlZ29yeSBhbmQg c2VjdGlvbiBjb25jYXRlbmF0ZWQNCgkJCSRtb2QgPSAoJG1vZHNbMV1bMF0gPT09ICIhIikg PyAxIDogMDsNCgkJCSRtb2RDaGFyID0gJG1vZHNbMV1bJG1vZEN0cl07DQoJCQkkbW9kSXRl bSA9IHRyaW0oJG1vZHNbMl1bJG1vZEN0cl0pOw0KCQkJJGxvd2l0ZW0gPSBzdHJ0b2xvd2Vy KCRtb2RJdGVtKTsNCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRsb3dpdGVtLCAkcHJldGV4 dCkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkcHJl dGV4dFskbG93aXRlbV0sICRpdGVtKTsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRp Y2xlWyRsb3dpdGVtXSkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRt b2RJdGVtLCAkdGhpc2FydGljbGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCQl9IGVsc2Ugew0K CQkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICRtb2RJdGVtLCAk aXRlbSk7DQoJCQl9DQoJCX0NCg0KCQkvLyBIYW5kbGUgcmFuZ2VzIG9mIHZhbHVlcw0KCQlp ZiAoJHJuZyAmJiBwcmVnX21hdGNoKCcvXihcZCspXC0oXGQrKSQvJywgJGl0ZW0pKSB7DQoJ CQlsaXN0KCRsbywgJGhpKSA9IGV4cGxvZGUoIi0iLCAkaXRlbSwgMik7DQoJCQkkaXRlbSA9 IGltcGxvZGUoJGRsbSwgcmFuZ2UoJGxvLCAkaGkpKTsNCgkJfQ0KDQoJCS8vIEl0ZW0gbWF5 IGJlIGVtcHR5OyBpZ25vcmUgaXQgaWYgc28NCgkJaWYgKCRpdGVtKSB7DQoJCQkkaXRlbSA9 IGRvX2xpc3QoJGl0ZW0sICRkbG0pOw0KCQkJLy8gSGFuZGxlIHN1Yi1jYXRlZ29yaWVzDQoJ CQlpZiAoJHN1Yikgew0KCQkJCWxpc3QoJHN1YnR5cGUsICRsZXZlbCkgPSBleHBsb2RlKCI6 IiwgJHN1Yik7DQoJCQkJJGxldmVsID0gKGVtcHR5KCRsZXZlbCkpID8gMCA6ICRsZXZlbDsN CgkJCQkkbGV2ZWwgPSAoc3RydG9sb3dlcigkbGV2ZWwpPT0iYWxsIikgPyA5OTk5OSA6ICRs ZXZlbDsNCgkJCQlmb3JlYWNoICgkaXRlbSBhcyAkY2F0KSB7DQoJCQkJCSRjYXRzID0gZ2V0 VHJlZShkb3NsYXNoKCRjYXQpLCAkc3VidHlwZSk7DQoJCQkJCWZvcmVhY2ggKCRjYXRzIGFz ICRqZHggPT4gJHZhbCkgew0KCQkJCQkJaWYgKCRjYXRzWyRqZHhdWydsZXZlbCddIDw9ICRs ZXZlbCkgew0KCQkJCQkJCSRpdGVtW10gPSAkY2F0c1skamR4XVsnbmFtZSddOw0KCQkJCQkJ fQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBRdW90ZSBpZiBhc2tlZA0KCQkJJGl0 ZW0gPSAoJHF0ZSkgPyBkb0FycmF5KCRpdGVtLCAnZG9RdW90ZScpIDogJGl0ZW07DQoJCQlp ZiAoJG1vZCA9PT0gMCkgew0KCQkJCSRpbmMgPSBhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2Uo JGluYywgJGl0ZW0pKTsNCgkJCX0gZWxzZSB7DQoJCQkJJGV4YyA9IGFycmF5X3VuaXF1ZShh cnJheV9tZXJnZSgkZXhjLCAkaXRlbSkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBhcnJh eSgkaW5jLCAkZXhjKTsNCn0NCn0NCg0KLy8gQWx0ZXJuYXRpdmUgdG8gdGhlIGNvcmUncyBk b1F1b3RlKCkuIFRoaXMgb25lIGRibC1xdW90ZXMgaW5zdGVhZCBvZiBzZ2wtcXVvdGVzDQpp ZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2RvRGJsUXVvdGUiKSkgew0KZnVuY3Rpb24gc21k X2RvRGJsUXVvdGUoJHZhbCkgew0KCXJldHVybiAnIicuJHZhbC4nIic7DQp9DQp9DQoNCi8v IFdvcmsgb3V0IHdoaWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9uIGFuZCByZXR1cm4gdGhl IHJlbGV2YW50IGluZm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxp bWl0LCAkb2Zmc2V0LCAkcGFnaW5nKSB7DQoJJG51bVRodW1zID0gY291bnQoJHJzKTsNCglp ZiAoKCRsaW1pdCA+IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVBhZ2VzID0gKCRudW1UaHVt cyA+IDApID8gY2VpbCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJCSR0aHVtUGFnZSA9ICgh Z3BzKCRnYWxsSUQpKSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRvZmZzZXQgPSAoJHRodW1Q YWdlIC0gMSkgKiAkbGltaXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8gcGFnaW5nIHJlcXVpcmVk DQoJCSRudW1QYWdlcyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJfQ0KCXJldHVybiBhcnJh eSgkbnVtVGh1bXMsICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KTsNCn0NCg0KLy8g UmVhZCB0aGUgZ2l2ZW4gZGVsaW1pdGVkIGRpcmVjdG9yaWVzIGFuZCBnZXQgYWxsIGZpbGVz IHRoYXQgbWF0Y2guDQovLyBHbyBkb3duIGFzIG1hbnkgc3ViZGlyIGxldmVscyBhcyBnaXZl biBpbiB0aGUgJHN1YiBwYXJhbWV0ZXINCmZ1bmN0aW9uIHNtZF9kb0RpcmVjdG9yeSgkbHN0 LCAkbHZsPTAsICRzdWI9MCwgJG1hdGNoPSIiLCAkZGxtPSIsIiwgJGN0cj0wKSB7DQoJbGlz dCgkZGlyaW5jLCAkZGlyZXhjKSA9IHNtZF9kb0xpc3QoJGxzdCwgZmFsc2UsICRzdWIsIGZh bHNlLCAkZGxtKTsNCglsaXN0KCRtYXRjaGluYywgJG1hdGNoZXhjKSA9IHNtZF9kb0xpc3Qo JG1hdGNoLCBmYWxzZSwgJycsIGZhbHNlLCAkZGxtKTsNCgkkbWF0Y2hpbmMgPSAiLioiIC4o KCRtYXRjaGluYykgPyAiKCIgLmltcGxvZGUoInwiLCRtYXRjaGluYykuIikrLioiIDogIiIp Ow0KCSRtYXRjaGV4YyA9ICgkbWF0Y2hleGMpID8gIi4qKCIgLmltcGxvZGUoInwiLCRtYXRj aGV4YykuIikrLioiIDogInNtZF9nbHJ5XyIubXRfcmFuZCgpOw0KDQoJJHN1YiA9IChlbXB0 eSgkc3ViKSkgPyAwIDogJHN1YjsNCgkkc3ViID0gKHN0cnRvbG93ZXIoJHN1Yik9PSJhbGwi KSA/IDk5OTk5IDogJHN1YjsNCgkkZmlsZUxpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRk aXJpbmMgYXMgJGRpcikgew0KCQlpZiAoJGhhbmRsZSA9IEBvcGVuZGlyKCRkaXIpKSB7DQoJ CQl3aGlsZSAoKCRmaWxlID0gQHJlYWRkaXIoJGhhbmRsZSkpICE9PSBmYWxzZSkgew0KCQkJ CSRmdWxscGF0aCA9ICRkaXIuRFMuJGZpbGU7DQoJCQkJaWYgKHByZWdfbWF0Y2goIi8iLiRt YXRjaGluYy4iLyIsICRmdWxscGF0aCkgJiYgIXByZWdfbWF0Y2goIi8iLiRtYXRjaGV4Yy4i LyIsICRmdWxscGF0aCkpIHsNCgkJCQkJaWYgKGlzX2RpcigkZnVsbHBhdGgpKSB7DQoJCQkJ CQlpZiAoKCRmaWxlID09ICIuIikgfHwgKCRmaWxlPT0gIi4uIikgfHwgKGluX2FycmF5KCRm aWxlLCAkZGlyZXhjKSkgfHwgKCRsdmwgPj0gJHN1YikpIHsNCgkJCQkJCQljb250aW51ZTsN CgkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJLy8gUmVjdXJzZSB0aGUgc3ViZGlyLiBOb3RlIHRo YXQgdGhlICchJyBpcyB0ZW1wb3JhcmlseSBhZGRlZCBiYWNrIHRvIGVhY2ggZGlyZXhjIGl0 ZW0NCgkJCQkJCQkkdG1wID0gJGRpcmV4YzsgLy8gRG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmln aW5hbCBhcnJheQ0KCQkJCQkJCWFycmF5X3Vuc2hpZnQoJHRtcCwgJGZ1bGxwYXRoKTsNCgkJ CQkJCQkkc3ViRmlsZXMgPSBzbWRfZG9EaXJlY3RvcnkoaW1wbG9kZSgkZGxtLiIhIiwgJHRt cCksICRsdmwrMSwgJHN1YiwgJG1hdGNoLCAkZGxtLCAkY3RyKTsNCgkJCQkJCQkkZmlsZUxp c3QgPSBhcnJheV9tZXJnZSgkZmlsZUxpc3QsICRzdWJGaWxlcyk7DQoJCQkJCQkJJGN0ciAr PSBjb3VudCgkc3ViRmlsZXMpOw0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQl9 IGVsc2Ugew0KCQkJCQkJJGZpbGVzdGF0ID0gc3RhdCgkZnVsbHBhdGgpOw0KCQkJCQkJJGlt Z3NpemUgPSBnZXRpbWFnZXNpemUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3Ry XVsncGF0aCddID0gJGRpcjsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnbmFtZSddID0gYmFz ZW5hbWUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaWQnXSA9IHByZWdf cmVwbGFjZSgnL1wuLiskLycsICcnLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1b J2FsdCddID0gJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhcHRpb24nXSA9ICcnOw0K CQkJCQkJJHBhcnRzID0gZXhwbG9kZShEUywgJGRpcik7DQoJCQkJCQkkZmlsZUxpc3RbJGN0 cl1bJ2NhdGVnb3J5J10gPSAoY291bnQoJHBhcnRzKSA+IDEpID8gZW5kKCRwYXJ0cykgOiAn JzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYXV0aG9yJ10gPSBzdHJ2YWwoJGZpbGVzdGF0 Wyd1aWQnXSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2RhdGUnXSA9IHN0cmZ0aW1lKCIl WS0lbS0lZCAlSDolTTolUyIsICRmaWxlc3RhdFsnY3RpbWUnXSk7DQoJCQkJCQkkcGFydHMg PSBleHBsb2RlKCIuIiwgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydleHQnXSA9 IChjb3VudCgkcGFydHMpID4gMSkgPyAiLiIuZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRm aWxlTGlzdFskY3RyXVsndyddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGlt Z3NpemVbMF0pIDogJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2gnXSA9IChpc19hcnJh eSgkaW1nc2l6ZSkpID8gc3RydmFsKCRpbWdzaXplWzFdKSA6ICcnOw0KCQkJCQl9DQoJCQkJ CSRjdHIrKzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRoYW5kbGUpIHsNCgkJCUBjbG9z ZWRpcigkaGFuZGxlKTsNCgkJfQ0KCX0NCglyZXR1cm4gJGZpbGVMaXN0Ow0KfQ0KDQppZiAo IWZ1bmN0aW9uX2V4aXN0cygic21kX3JlbW92ZVFTVmFyIikpIHsNCmZ1bmN0aW9uIHNtZF9y ZW1vdmVRU1ZhcigkdXJsLCAka2V5KSB7DQoJJHVybCA9IHByZWdfcmVwbGFjZSgnLyguKiko XD98JiknIC4gJGtleSAuICc9W14mXSs/KCYpKC4qKS9pJywgJyQxJDIkNCcsICR1cmwgLiAn JicpOw0KCSR1cmwgPSBzdWJzdHIoJHVybCwgMCwgLTEpOw0KCXJldHVybiAoJHVybCk7DQp9 DQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCJzbWRfYWRkUVNWYXIiKSkgew0KZnVuY3Rp b24gc21kX2FkZFFTVmFyKCR1cmwsICRrZXksICR2YWx1ZSkgew0KCSR1cmwgPSBzbWRfcmVt b3ZlUVNWYXIoJHVybCwgJGtleSk7DQoJaWYgKHN0cnBvcygkdXJsLCAnPycpID09PSBmYWxz ZSkgew0KCQlyZXR1cm4gKCR1cmwgLiAnPycgLiAka2V5IC4gJz0nIC4gJHZhbHVlKTsNCgl9 IGVsc2Ugew0KCQlyZXR1cm4gKCR1cmwgLiAnJicgLiAka2V5IC4gJz0nIC4gJHZhbHVlKTsN Cgl9DQp9DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxwIjtzOjQ0MDk0OiIJPHA+ PGRpdiBpZD0ic21kX2hlbHAiPjwvcD4KCgk8aDEgaWQ9InRvcCI+c21kX2dhbGxlcnk8L2gx PgoKCTxoMiBpZD0iY29udGVudHMiPkNvbnRlbnRzPC9oMj4KCgk8dWw+CgkJPGxpPjxhIGhy ZWY9IiNmZWF0dXJlcyI+RmVhdHVyZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2F1dGhv ciI+QXV0aG9yPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpbnN0YWxsIj5JbnN0YWxsYXRp b24gLyBVbmluc3RhbGxhdGlvbjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjdXNhZ2UiPlRh ZyB1c2FnZTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3NtZF9nYWxsZXJ5Ij5zbWRfZ2Fs bGVyeTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5HYWxsZXJ5IGZv cm08L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQg dGFnczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjcGFnaW5nX2Zvcm0i PlBhZ2luZyBmb3JtPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcmVwX3BhZ2luZyI+UmVw bGFjZW1lbnQgdGFnczwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjY29t Ym9zIj5Db21ib3M8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NvbGxhdGVfbW9kZSI+Q29s bGF0ZSBtb2RlPC9hPjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNleGFtcGxl cyI+RXhhbXBsZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NoYW5nZWxvZyI+Q2hhbmdl bG9nPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjcmVkaXRzIj5DcmVkaXRzPC9hPjwvbGk+ Cgk8L3VsPgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxp PlN1cHBvcnRzIGFsbCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1dHVyZSBnYWxsZXJ5IHNj cmlwdHMgaW5jbHVkaW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9vbHRpcCwgbGlnaHRib3gs IGxpdGVib3gsIHNsaW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBzbGlkZXNob3csIGZhbmN5 em9vbSwgZXRjPC9saT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2UgKG9yIG9wdGlvbmFsbHkgYSBsaXN0IG9mIGRp cmVjdG9yaWVzKSB0aGF0IG1hdGNoIGNhdGVnb3JpZXMgb3IgSURzPC9saT4KCQk8bGk+VXNl IGFydGljbGUgZmllbGRzIHRvIGhvbGQgbGlzdHMgb2YgaW1hZ2UgY2F0ZWdvcmllcy9JRHMg Zm9yIGFydGljbGUtc3BlY2lmaWMgZ2FsbGVyaWVzPC9saT4KCQk8bGk+TXVsdGktbGV2ZWwg c3ViLWNhdGVnb3J5IHN1cHBvcnQ8L2xpPgoJCTxsaT5HYWxsZXJ5IGxheW91dCBpcyBkZWZp bmVkIGluIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybTwvbGk+CgkJPGxp PkRpcmVjdC1hY2Nlc3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBsYXlvdXQg b2YgcGFnaW5nIGZlYXR1cmVzIGlzIGNvbnRyb2xsZWQgYnkgYSBzZWNvbmQgZm9ybTwvbGk+ CgkJPGxpPlVzZXMgYSB0YWctcmVwbGFjZW1lbnQgc3lzdGVtIGxpa2UgdGhlIHdldF9mb3Jf ZWFjaF9pbWFnZSBwbHVnaW48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+QXV0aG9y PC9oMj4KCgk8cD48YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0i PlN0ZWYgRGF3c29uPC9hPi4gRm9yIG90aGVyIHNvZnR3YXJlIGJ5IG1lLCBvciB0byBtYWtl IGEgZG9uYXRpb24sIHNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3 Ij5zb2Z0d2FyZSBwYWdlPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0YWxsIj5JbnN0YWxsYXRp b24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9t IGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTU3L3Nt ZF9nYWxsZXJ5Ij50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgPGEgaHJlZj0iaHR0cDov L3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUg aW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1 Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxh IGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0y NjQ4MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0 aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gcmVt b3ZlIHRoZSBwbHVnaW4sIHNpbXBseSBkZWxldGUgaXQgZnJvbSB0aGUgQWRtaW4tJmd0O1Bs dWdpbnMgdGFiLjwvcD4KCgk8aDIgaWQ9InVzYWdlIj5Vc2FnZTwvaDI+CgoJPHA+Rm9yIHNv bWUgaWRlYXMgb24gdXNhZ2Ugc2NlbmFyaW9zLCBzZWUgdGhlIDxhIGhyZWY9IiNleGFtcGxl cyI+ZXhhbXBsZXM8L2E+LjwvcD4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlzIHRoYXQgdGhp cyBwbHVnaW4gYWN0cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90aGluZyBtb3Jl LiBUaGUgcGx1Z2luIG9wdGlvbnMgZ292ZXJuIHdoYXQgaW1hZ2VzIGFyZSBwdWxsZWQgb3V0 IG9mIHRoZSBkYXRhYmFzZSBhbmQgdGhleSBhcmUgc29ydGVkIGludG8gd2hhdGV2ZXIgb3Jk ZXIgeW91IGxpa2UuPC9wPgoKCTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1hZ2UgJiM4MjEyOyBv bmUgYnkgb25lICYjODIxMjsgaGFzIGFsbCBpdHMgYXR0cmlidXRlcyBwYXNzZWQgdG8gdGhl IDxjb2RlPmZvcm08L2NvZGU+IG9mIHlvdXIgY2hvaWNlOyB5b3Ugc2ltcGx5IGNob29zZSB0 byBkaXNwbGF5IHdoaWNoZXZlciBpbWFnZSBhdHRyaWJ1dGVzIHlvdSBsaWtlIGluIHRoaXMg Zm9ybS4gVGhpcyBtZWFucyBhbnkgaW1hZ2UgYXR0cmlidXRlcyBjYW4gYmUgJiM4MjIwO2lu amVjdGVkJiM4MjIxOyBkaXJlY3RseSBpbnRvIGFueSBtYXJrdXA7IGl0IGNvdWxkIGJlIDxz cGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGl0IGNvdWxkIGJlIGNvbnRlbnQs IGl0IGNvdWxkIGJlIGphdmFzY3JpcHQsIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3Nw YW4+OyBhbnl0aGluZy4gUGFnaW5hdGlvbiB3b3JrcyB0aGUgc2FtZSB3YXksIGFsbG93aW5n IHlvdSB0byBzcGVjaWZ5IGhvdyB1c2VycyBjYW4gc3RlcCB0aHJvdWdoIHlvdXIgaW1hZ2Ug Z2FsbGVyaWVzLjwvcD4KCgk8cD5UaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCBtb2RlIGNhbGxl ZCAmIzgyMjA7Y29sbGF0ZSYjODIyMTsgdGhhdCBhbGxvd3MgeW91IHRvIGNvbGxlY3QgYWxs IGltYWdlIGF0dHJpYnV0ZXMgdG9nZXRoZXIgaW50byBhIHNlcmllcyBvZiBiaWcgbG9uZyBs aXN0cyA8ZW0+d2l0aG91dDwvZW0+IGNhbGxpbmcgdGhlIGZvcm0gZXZlcnkgdGltZS4gVGhl IGZvcm0gaXMgdGhlbiBvbmx5IHByb2Nlc3NlZCBvbmNlIGF0IHRoZSBlbmQuPC9wPgoKCTxw PkJldHdlZW4gdGhlc2UgdHdvIG1vZGVzIHlvdSA8ZW0+c2hvdWxkPC9lbT4gYmUgYWJsZSB0 byByZWFsaXNlIGFueSBnYWxsZXJ5aW5nIHNvbHV0aW9uOyBub3cgYW5kIGluIGZ1dHVyZS48 L3A+CgoJPGgzIGNsYXNzPSJ0YWcgIiBpZD0ic21kX2dhbGxlcnkiPnNtZF9nYWxsZXJ5PC9o Mz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlBsYWNlIG9uZSBvciBtb3JlIHNtZF9nYWxs ZXJ5IHRhZ3MgaW4gYW55IGFydGljbGUsIHBhZ2Ugb3IgZm9ybSwgc3VwcGx5IGFueSBvZiB0 aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29uZmlndXJlIGl0IGFuZCB1c2UgYSBmb3JtIHRv IGRlZmluZSBob3cgdGhlIGdhbGxlcnkgaXMgZGlzcGxheWVkLjwvcD4KCgk8aDQgY2xhc3M9 ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+QXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmlkPC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2UgSURzIGZv ciBpbmNsdXNpb24gaW4gdGhlIGdhbGxlcnkuIE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMs IGZvciBleGFtcGxlIDxjb2RlPmlkPSZxdW90OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3 b3VsZCBncmFiIGltYWdlcyA1LCA4LCA5LCAxMCwgMTEgYW5kIDQyLiBVc2UgYW4gZXhjbGFt YXRpb24gbWFyayBpbiBmcm9udCBvZiBhIG51bWJlciBvciByYW5nZSB0byBleGNsdWRlIHRo b3NlIGltYWdlczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2F0ZWdvcnk8 L3NwYW4+IDogbGlzdCBvZiBpbWFnZSBjYXRlZ29yaWVzIGZvciBpbmNsdXNpb24gaW4gdGhl IGdhbGxlcnkuIFlvdSBtYXkgc3BlY2lmeSBmaXhlZC1uYW1lIGNhdGVnb3JpZXMgKGUuZy4g JiM4MjIwO2FuaW1hbHMmIzgyMjE7KSBvciBhIHF1ZXN0aW9uIG1hcmsgZm9sbG93ZWQgYnkg YW4gYXJ0aWNsZSBmaWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNhdGVnb3J5PSZxdW90O2FuaW1h bHMsIGFydC0/aWQmcXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIgYWxsIGltYWdlcyBmcm9tIHRo ZSBjYXRlZ29yaWVzIGNhbGxlZCAmIzgyMjA7YW5pbWFscyYjODIyMTsgYW5kIHRoZSBjYXRl Z29yeSBjYWxsZWQgJiM4MjIwO2FydC00MiYjODIyMTsgKGFzc3VtaW5nIHRoZSBjdXJyZW50 IGFydGljbGUgaGFzIGFuIGlkIG9mIDQyIG9mIGNvdXJzZSkuPGRpdiBjbGFzcz0iYnJlYWsi PlVzZSBhbiBleGNsYW1hdGlvbiBtYXJrIHRvIGV4Y2x1ZGUgdGhlIGdpdmVuIGNhdGVnb3J5 IG9yIGZpZWxkLiBGaWVsZHMgbWF5IHRoZW1zZWx2ZXMgY29udGFpbiBsaXN0cyBvZiBjYXRl Z29yaWVzLiBUaGUgPyBmaWVsZCBuYW1lcyBtYXkgYmUgY29tYmluZWQgKGUuZy4gP3MtP2Fy dGljbGVfaW1hZ2UpIGJ1dCBiZSBhd2FyZSB0aGF0IGZpZWxkIG5hbWVzIG1heSBjb250YWlu IHNwYWNlczwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+c3VibGV2 ZWw8L3NwYW4+IDogYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7 bGV2ZWxzJiM4MjE3OyBkb3duIHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnku IHN1YmxldmVsPSYjODIyMDswJiM4MjIxOyAodGhlIGRlZmF1bHQpIGlzIG9ubHkgdGhlIHRv cC1sZXZlbDsgMSA9IHRvcC1sZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNhdDsgMiA9IHRvcC1s ZXZlbCBwbHVzIHRoZSBuZXh0IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4gc3VibGV2ZWw9JiM4 MjIwO2FsbCYjODIyMTsgaXMgYWxsIHN1Yi1jYXRlZ29yaWVzPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj5zb3J0PC9zcGFuPiA6IHJlLW9yZGVyIHRoZSBpbWFnZXMgYnkg PGNvZGU+Y2F0ZWdvcnk8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2RlPm5hbWU8L2NvZGU+ LCA8Y29kZT5kYXRlPC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+LCBmaWxlIDxjb2RlPmV4dDwv Y29kZT5lbnNpb24sIDxjb2RlPmFsdDwvY29kZT4sIDxjb2RlPmNhcHRpb248L2NvZGU+LCA8 Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT53aWR0aDwvY29kZT4sIDxjb2RlPmhlaWdodDwv Y29kZT4sIDxjb2RlPmhhc3RodW1iPC9jb2RlPiBpbiBlaXRoZXIgPGNvZGU+YXNjPC9jb2Rl PmVuZGluZyBvciA8Y29kZT5kZXNjPC9jb2RlPmVuZGluZyBvcmRlci4gVHdvIHNwZWNpYWwg Y2FzZXMgZXhpc3Q6IDxjb2RlPmZpeGVkPC9jb2RlPiBtYWludGFpbnMgdGhlIG9yZGVyIHlv dSBzcGVjaWZpZWQgaW4gdGhlIGlkIGFuZC9vciBjYXRlZ29yeSBhdHRyaWJ1dGUsIHdoaWxl IDxjb2RlPnJhbmRvbTwvY29kZT4gc2h1ZmZsZXMgdGhlIG9yZGVyLjxkaXYgY2xhc3M9ImJy ZWFrIj5Ob3RlIHRoYXQgaWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFzIHRoZSBm aXJzdCBpdGVtIGluIHRoZSBsaXN0LCByYW5kb20gaW1hZ2VzIHdpbGwgYmUgcHVsbGVkIGZy b20gdGhlIGRhdGFiYXNlIGFuZCB0aGV5IHdpbGwgdGhlbiBiZSBzb3J0ZWQgYWNjb3JkaW5n IHRvIHRoZSBvcmRlciBsaXN0ZWQgYWZ0ZXIgaXQuIElmIDxjb2RlPnJhbmRvbTwvY29kZT4g YXBwZWFycyBhbnl3aGVyZSBlbHNlIGluIHRoZSBsaXN0LCBhbnkgc29ydCBpdGVtcyBiZWZv cmUgaXQgd2lsbCBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIGRhdGEgcHVsbGVkIGZyb20gdGhl IGRhdGFiYXNlLCBhbmQgdGhlIHJlc3VsdHMgd2lsbCB0aGVuIGJlIG9yZGVyZWQgcmFuZG9t bHkgKGluIHRoYXQgY2FzZSwgYW55IGl0ZW1zIGxpc3RlZCBhZnRlciByYW5kb20gd2lsbCBi ZSBpZ25vcmVkLiA8Y29kZT5maXhlZDwvY29kZT4gaXMsIGhvd2V2ZXIsIHN0aWxsIGhvbm91 cmVkKTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bGltaXQ8L3Nw YW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBzaG93IDxlbT5wZXIgcGFn ZTwvZW0+LiAwIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPm1heGxpbWl0PC9zcGFuPiA6IHRoZSBhYnNvbHV0ZSBtYXhpbXVtIG51 bWJlciBvZiB0aHVtYm5haWxzIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIDAgb3Igb21p dHRlZCA9IHVubGltaXRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+b2Zm c2V0PC9zcGFuPiA6IHNraXAgdGhpcyBtYW55IGltYWdlcyBhbmQgc3RhcnQgY291bnRpbmcg dGhlcmVhZnRlcjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+dGh1bWJsaW1p dDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGh1bWJuYWlscyB0byBzaG93LiAw IG9yIG9taXR0ZWQgPSBhbGwgdGh1bWJzLiBOb3RlIHRoYXQgdGhpcyBkaWZmZXJzIGZyb20g bGltaXQ7IHlvdSBjYW4gbGF1bmNoIGEgMjAtaW1hZ2UgZ2FsbGVyeSBidXQgb25seSBzaG93 IDEgdGh1bWJuYWlsIG9uIHRoZSBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj50aHVtYm9mZnNldDwvc3Bhbj4gOiBza2lwIHRoaXMgbWFueSB0aHVtYnMgYmVmb3Jl IGRpc3BsYXlpbmcgPGNvZGU+dGh1bWJsaW1pdDwvY29kZT4gdGh1bWJuYWlsczwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+b25jaGFuZ2U8L3NwYW4+IDogYSBsaXN0IG9m IGF0dHJpYnV0ZXMgdG8gJiM4MjIwO3dhdGNoJiM4MjIxOzsgaS5lLiBpdCB0ZWxscyB0aGUg cGx1Z2luIHRoYXQgeW91IHdhbnQgdG8gYmUgbm90aWZpZWQgd2hlbiBpdGVtcyBpbiB0aGlz IGxpc3QgY2hhbmdlIGNvbXBhcmVkIHRvIHRoZSBwcmV2aW91cyBpbWFnZS4gVW5kZXIgbm9y bWFsIGNpcmN1bXN0YW5jZXMgdGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgYXMgeW91ciA8Y29k ZT5zb3J0PC9jb2RlPiBwYXJhbWV0ZXIgb3IgZWxzZSB5b3UgbWF5IGdldCBzb21lIGZyZWFr eSByZXN1bHRzISBJdCBkZWZhdWx0cyB0byA8Y29kZT5jYXRlZ29yeTwvY29kZT4uPGRpdiBj bGFzcz0iYnJlYWsiPlRoaXMgYXR0cmlidXRlIGlzIHZlcnkgdXNlZnVsIGZvciBzcGxpdHRp bmcgZ2FsbGVyaWVzIGF0LCBzYXksIGV2ZXJ5IGNoYW5nZSBpbiBjYXRlZ29yeSBhbmQgZGlz cGxheWluZyB0aGUgY2F0ZWdvcnkgdGl0bGUgYWJvdmUgZWFjaCBncm91cC4gSXRlbXMgeW91 IHdhdGNoIGFyZSBhZGRlZCB0byB0aGUgbGlzdCBvZiByZXBsYWNlbWVudCB0YWdzIGFuZCBh cmUgYXZhaWxhYmxlIGJ5IHB1dHRpbmcgJiM4MjIwO29uY2hhbmdlOiYjODIyMTsgaW4gZnJv bnQgb2YgdGhlaXIgbmFtZSAoZS5nLiA8Y29kZT57b25jaGFuZ2U6Y2F0ZWdvcnl9PC9jb2Rl PiAmIzgyMTI7IHNlZSA8YSBocmVmPSIjZWc2Ij5leGFtcGxlIDY8L2E+IGZvciBhIHJlYWwg dXNlIGNhc2UpLiBUaGUgY29sb24gZGVsaW1pdGVyIGNhbiBiZSBjaGFuZ2VkIHdpdGggdGhl IDxjb2RlPnBhcmFtZGVsaW08L2NvZGU+IGF0dHJpYnV0ZTwvZGl2PjwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+b25jaGFuZ2V3cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClI VE1MIHRhZyB0byBzdXJyb3VuZCBhbnkgY2hhbmdlZCBlbGVtZW50cyB5b3UgYXJlIHdhdGNo aW5nIHdpdGggdGhlIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiBhdHRyaWJ1dGUuICBTcGVjaWZ5 IGl0IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMsIGUuZy4gPGNvZGU+b25jaGFuZ2V3cmFwdGFn PSZxdW90O2gzJnF1b3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyB1bnNldDwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+b25jaGFuZ2VjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBseSB0byBhbnkgY2hh bmdlZCBlbGVtZW50cyB5b3UgYXJlIHdhdGNoaW5nIHd0aCB0aGUgPGNvZGU+b25jaGFuZ2U8 L2NvZGU+IGF0dHJpYnV0ZS4gRGVmYXVsdCBpcyB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+Z3JvdXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIG1h a2UgYXZhaWxhYmxlIGFzIGEgcmVwbGFjZW1lbnQgc28geW91IGNhbiB3cmFwIGdyb3VwcyBv ZiBlbGVtZW50cyBhdCBlYWNoIDxjb2RlPm9uY2hhbmdlPC9jb2RlPi4gU3BlY2lmeSBpdCB3 aXRob3V0IGFuZ2xlIGJyYWNrZXRzLCBlLmcuIDxjb2RlPmdyb3VwdGFnPSZxdW90O2RpdiZx dW90OzwvY29kZT4uIERlZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPmdyb3VwY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5D U1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBwbHkgdG8gYW55IDxjb2RlPmdyb3VwdGFnPC9j b2RlPi4gRGVmYXVsdCBpcyB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+dGV4dDwvc3Bhbj4gOiBkaXNwbGF5IHRoZSBnaXZlbiB0ZXh0IGluc3RlYWQgb2YgdGh1 bWJuYWlscy4gVGhlIHRleHQgY2FuIGNvbnRhaW4gPyBhcnRpY2xlIGZpZWxkcyBsaWtlIDxj b2RlPmNhdGVnb3J5PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ dGh1bWI8L3NwYW4+IDogaWYgeW91IHdpc2ggdGhlIGZ1bGxzaXplIGltYWdlcyBkaXNwbGF5 ZWQgYXMgdGh1bWJuYWlscywgb3IgaWYgeW91IHdhbnQgdGhlIHRodW1ibmFpbCBnYWxsZXJ5 IHRvIHVzZSB0aGUgZnVsbHNpemUgaW1hZ2VzLCBzcGVjaWZ5IGl0IHdpdGggdGhpcyBhdHRy aWJ1dGUuIFVzZSA8Y29kZT50aHVtYj0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byBzcGVjaWZ5 IHRoYXQgYm90aCBmdWxsc2l6ZSBpbWFnZSBhbmQgdGh1bWJuYWlsIGRpc3BsYXkgdGhlICYj ODIxNjt0JiM4MjE3OyAodGh1bWJuYWlsKSBpbWFnZS4gQ29udmVyc2VseSwgdXNlIDxjb2Rl PnRodW1iPSZxdW90OzAmcXVvdDs8L2NvZGU+IHRvIHNwZWNpZnkgdGhhdCBib3RoIGZ1bGxz aXplIGFuZCB0aHVtYm5haWxzIHVzZSB0aGUgZnVsbCBzaXplIGltYWdlcy4gWW91IGNhbiBh bHNvIGNob29zZSBvbmUgb3IgdGhlIG90aGVyIGJ5IGdpdmluZyB0aGlzIGF0dHJpYnV0ZSB0 d28gbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xvbi48ZGl2IGNsYXNzPSJicmVhayI+Rm9y ICYjODIxNjtub3JtYWwmIzgyMTc7IG9wZXJhdGlvbiAmIzgyMTI7IGkuZS4gZnVsbHNpemUg aW1hZ2UgaXMgZnVsbCBzaXplLCB0aHVtYm5haWwgaXMgIHRodW1iIHNpemVkICYjODIxMjsg c3BlY2lmeSA8Y29kZT50aHVtYj0mcXVvdDswOjEmcXVvdDs8L2NvZGU+LiBUbyByZXZlcnNl IHRoaXMsIHVzZSA8Y29kZT50aHVtYj0mcXVvdDsxOjAmcXVvdDs8L2NvZGU+LiBOb3RlIHRo YXQgPGNvZGU+MToxPC9jb2RlPiBhbmQgPGNvZGU+MDowPC9jb2RlPiBhbHNvIHdvcmsgdG8g c2V0IGJvdGggaW1hZ2VzIHRvIHRoZSBzYW1lIHNpemUgaWYgeW91IHByZWZlciB0aGF0IHN5 bnRheCBvdmVyIHVzaW5nIGEgc2luZ2xlIGRpZ2l0PC9kaXY+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj50aHVtYnNpemU8L3NwYW4+IDogdGFrZXMgb25lIG9yIHR3byBj b21tYS1zZXBhcmF0ZWQgcGFyYW1ldGVycyB0byBzcGVjaWZ5IHdpZHRoIGFuZC9vciBoZWln aHQgb2YgYWxsIHlvdXIgZ2FsbGVyeSB0aHVtYm5haWxzLiBUaGUgZGVmYXVsdCBpcyBpbiBw aXhlbHMgaWYgeW91IGRvbiYjODIxNzt0IHNwZWNpZnkgdW5pdHMuIE1pc3Npbmcgb3V0IG9u ZSBvciB0aGUgb3RoZXIgcGFyYW1ldGVyIChpLmUuIGhhdmluZyBhbiAmIzgyMjA7ZW1wdHkm IzgyMjE7IHBhcmFtZXRlciBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGNvbW1hKSB3aWxsIG9ubHkg c2V0IG9uZSBvZiB0aGUgZGltZW5zaW9ucy4gVXNpbmcgb25seSBvbmUgdmFsdWUsIGJvdGgg d2lkdGggYW5kIGhlaWdodCB3aWxsIGJlIHNldCB0byB0aGUgc2FtZSB2YWx1ZTwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Zm9ybTwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIGxheW91dCB5b3VyIG1hdGNoaW5n IGltYWdlczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFnZWZvcm08L3Nw YW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBz cGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91ciBwYWdpbmcgbmF2aWdhdGlvbjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+cGFnaW5nPC9zcGFuPiA6IHN3aXRjaCBwYWdpbmcg b24gd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lmeSBhIHBhZ2Vmb3JtLiBXaGVuIHRoaXMgaXMg dXNlZCwgYWxsIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdlIHJlcGxhY2VtZW50IHRhZ3M8 L2E+IGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+Z2Fs bGVyeSByZXBsYWNlbWVudCB0YWdzPC9hPiBhcyB3ZWxsPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj5wYWdlcG9zPC9zcGFuPiA6IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFn aW5nIGJsb2NrLiBPcHRpb25zIGFyZSA8Y29kZT5iZWxvdzwvY29kZT4gKHRoZSBkZWZhdWx0 KSwgPGNvZGU+YWJvdmU8L2NvZGU+LCBvciBib3RoIG9mIHRoZW0gc2VwYXJhdGVkIGJ5IDxj b2RlPmRlbGltPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Z2Fs bGVyeWlkPC9zcGFuPiA6IHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHlvdSBzaG91bGQg bmV2ZXIgbmVlZCB0aGlzLiBFYWNoIGdhbGxlcnkgaXMgYXNzaWduZWQgYSB1bmlxdWUgSUQg YmFzZWQgb24gdGhlIGF0dHJpYnV0ZXMgeW91IHN1cHBseS4gSW4gdGhlIHVubGlrZWx5IGV2 ZW50IHRoYXQgdHdvIGlkZW50aWNhbCBJRHMgYXJlIGdlbmVyYXRlZCB5b3UgY2FuIG92ZXJy aWRlIHRoZSBJRCBmb3IgYSBnYWxsZXJ5IHdpdGggdGhpcyBhdHRyaWJ1dGUuPGRpdiBjbGFz cz0iYnJlYWsiPldoYXQgdGhlIHBsdWdpbiBkb2VzIChpbnRlcm5hbGx5KSBpcyBnZW5lcmF0 ZSBhIDMyLWNoYXJhY3RlciBoYXNoIHN0cmluZyBmb3IgZWFjaCB0YWcsIHRoZW4gcGlja3Mg YSA0LWNoYXIgY29kZSBmcm9tIHRoaXMgc3RyaW5nIChpdCB0YWtlcyBldmVyeSA2dGggY2hh cmFjdGVyIGJ5IGRlZmF1bHQpLiBZb3UgY2FuIHN1cHBseSBhIHVuaXF1ZSBmaXhlZCBzdHJp bmcgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90O1RoZUdhbGxlcnkyJnF1b3Q7PC9jb2Rl Pikgb3IgZ2l2ZSBpdCBhIHF1ZXN0aW9uIG1hcmsgYW5kIDIgbnVtYmVycyBzZXBhcmF0ZWQg YnkgYSBjb2xvbiAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzU6NCZxdW90OzwvY29k ZT4pLiBUaGUgZmlyc3QgbnVtYmVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbmFsIHN0cmlu ZyB0byBnZW5lcmF0ZSwgdGhlIHNlY29uZCBudW1iZXIgaXMgaG93IG1hbnkgY2hhcmFjdGVy cyB0byBza2lwIG92ZXIgaW4gdGhlIGZ1bGwgMzItY2hhciBzdHJpbmcgZWFjaCB0aW1lIGl0 IHBpY2tzIG9uZS48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+U28gaW4gdGhpcyBjYXNlLCBp dCBnZW5lcmF0ZXMgYSA1LWNoYXJhY3RlciBzdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVycyBp dCBmaW5kcyBhdCBwb3NpdGlvbnMgMSw1LDksMTMsIGFuZCAxNy4gSWYgeW91IG9taXQgdGhl IDJuZCBudW1iZXIgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz82JnF1b3Q7PC9jb2Rl PikgaXQgd2lsbCBhc3N1bWUgaXQmIzgyMTc7cyBhbiBpbmNyZW1lbnQgb2YgMSwgc28gaW4g dGhpcyBjYXNlIGl0JiM4MjE3O2xsIHVzZSB0aGUgMXN0IDYgY2hhcmFjdGVyczwvZGl2Pjwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUg KFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSBnYWxsZXJ5LiBTcGVjaWZ5IGl0 IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMsIGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDtkaXYm cXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0IChpLmUuIG5vIHRhZyk8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRh ZyB0byBzdXJyb3VuZCBlYWNoIHRodW1ibmFpbC4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBu byB0YWdzKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+Y2xhc3M8L3NwYW4+ IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgdG8gYXBw bHkgdG8gdGhlIGVudGlyZSBnYWxsZXJ5LiBEZWZhdWx0IGlzIHVuc2V0IChpLmUuIG5vIGNs YXNzKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2d3JhcHRhZzwvc3Bh bj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGlyZSA8Y29kZT5wYWdl Zm9ybTwvY29kZT4uIFNwZWNpZnkgaXQgd2l0aG91dCBhbmdsZSBicmFja2V0cywgZS5nLiA8 Y29kZT53cmFwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT4uIERlZmF1bHQgaXMgJiM4MjIw O3VsJiM4MjIxOzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2YnJlYWs8 L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVhY2ggaXRlbSB3aXRoaW4g dGhlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPi4gRGVmYXVsdCBpcyAmIzgyMjA7bGkmIzgyMjE7 PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5uYXZjbGFzczwvc3Bhbj4gOiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0byBhcHBseSB0 byB0aGUgbmF2aWdhdGlvbiB3cmFwdGFnLiBEZWZhdWx0IGlzICYjODIyMDtzbWRfZ2FsbGVy eV9uYXYmIzgyMjE7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5lbXB0eWNs YXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBu YW1lIHRvIGFwcGx5IHRvIHRoZSBuYXZpZ2F0aW9uIGl0ZW1zIHRoYXQgYXJlIDxlbT5ub3Q8 L2VtPiBsaW5rcy4gRGVmYXVsdCBpcyAmIzgyMjA7ZW1wdHkmIzgyMjE7PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGlt aXRlciBmb3Igc3BlY2lmeWluZyBhdHRyaWJ1dGUgbGlzdHMuIERlZmF1bHQgaXMgY29tbWEg KCwpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5wYXJhbWRlbGltPC9zcGFu PiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5aW5nIGludGVyLXBhcmFtZXRl ciBhdHRyaWJ1dGVzLiBEZWZhdWx0IGlzIGNvbG9uICg6KTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+Y29sbGF0ZTwvc3Bhbj4gOiBzd2l0Y2ggdGhlIHBsdWdpbiBpbnRv IDxhIGhyZWY9IiNjb2xsYXRlX21vZGUiPmNvbGxhdGUgbW9kZTwvYT48L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNvbWJvPC9zcGFuPiA6IHNwZWNpZnkgeW91ciBvd24g PGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZGlyZWN0b3J5PC9zcGFuPiA6IHJlYWQgaW1hZ2Vz IGZyb20gYSBsaXN0IG9mIGRpcmVjdG9yaWVzIChvciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJM PC9zcGFuPnMpIGluc3RlYWQgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ IGRhdGFiYXNlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5tYXRjaDwvc3Bh bj4gOiBsaW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9zZW4gaW4gZGlyZWN0 b3J5IG1vZGUuIEdpdmUgaXQgYSBsaXN0IG9mIHdvcmRzIHRvIGluY2x1ZGUgb3IgIWV4Y2x1 ZGUgYW5kIGFueSBtYXRjaGluZyBmaWxlcyBvciBkaXJlY3RvcmllcyB3aWxsIGJlIGNob3Nl biBvciBpZ25vcmVkLCByZXNwZWN0aXZlbHkuIFRoZSBtYXRjaCB0ZXJtcyBhcmUgYXV0b21h dGljYWxseSBhc3N1bWVkIHRvIGJlICYjODIyMDt3aWxkJiM4MjIxOyBzbyBhbnkgcGFydCBv ZiB0aGUgZmlsZSBuYW1lIC8gcGF0aCB3aWxsIHRyaWdnZXIgdGhlIG1hdGNoPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5kZWJ1Zzwvc3Bhbj4gOiB0dXJuIG9uIGRpYWdu b3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkgZnJvbSAwIChub25lKSB0byA0 IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDMgaWQ9ImdhbGxlcnlfZm9ybSI+R2FsbGVyeSBm b3JtPC9oMz4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4gaXMgd2hlcmUgeW91IGRlc2ln biB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlrZSBvbiB0aGUgc2NyZWVuLiBZ b3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIG1hcmt1cCBvciB0YWdzIGFzIG5vcm1hbC4gSW4g a2V5IHBsYWNlcyB3aGVyZSB5b3Ugd2FudCwgc2F5LCBhbiBpbWFnZSBJRCBvciBhbHQgdGFn IG9yIGltYWdlIHdpZHRoIHRvIGJlIGRpc3BsYXllZCwgeW91IHNwZWNpZnkgc3BlY2lhbCA8 YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+LiBUaGVzZSBhcmUg cmVwbGFjZWQgZm9yIGVhY2ggaW1hZ2UgaW4gdHVybiwgdGh1cyBidWlsZGluZyB1cCB0aGUg Z2FsbGVyeS48L3A+CgoJPHA+SW4gY29sbGF0ZSBtb2RlLCB0aGUgaW1hZ2UgZGV0YWlscyBh cmUgaW5zdGVhZCBtYWRlIGludG8gbGlzdHMuIFRoZSBmb3JtIGlzIG9ubHkgcHJvY2Vzc2Vk IG9uY2UgYW5kIHRoZSByZXBsYWNlbWVudCB0YWdzIG91dHB1dCB0aGUgZW50aXJlIGxpc3Qu PC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQg dGFnczogZ2FsbGVyeTwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PntpZH08L3NwYW4+IDogdGhlIGltYWdlIElEIChvciwgaW4gZGlyZWN0b3J5IG1vZGUsIHRo ZSBmaWxlbmFtZSB3aXRob3V0IGl0cyBleHRlbnNpb24pPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57bmFtZX08L3NwYW4+IDogdGhlIGZ1bGwgaW1hZ2UgZmlsZW5hbWUg YXMgZGVmaW5lZCBpbiB0aGUgZGF0YWJhc2UsIHVzdWFsbHkgaW5jbHVkaW5nIGV4dGVuc2lv bjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2V4dH08L3NwYW4+IDogdGhl IGZpbGUgZXh0ZW5zaW9uIGluY2x1ZGluZyBwZXJpb2Q8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPntjYXRlZ29yeX08L3NwYW4+IDogdGhlIGltYWdlIGNhdGVnb3J5IG5h bWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntjYXRlZ29yeV90aXRsZX08 L3NwYW4+IDogdGhlIGltYWdlIGNhdGVnb3J5IHRpdGxlPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57YXV0aG9yfTwvc3Bhbj4gOiB3aG8gdXBsb2FkZWQgdGhlIGltYWdl PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dXJsfTwvc3Bhbj4gOiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIGZ1bGxzaXplIGltYWdlPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dGh1bWJ1cmx9PC9zcGFuPiA6IHRo ZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1bWJuYWlsPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57aW1hZ2VwYXRofTwvc3Bhbj4gOiB0aGUg ZGlyZWN0b3J5IHRoZSBpbWFnZSBpcyBpbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+e2ltYWdlZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0 aGUgaW1hZ2UgKGUuZy4gNS5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij57dGh1bWJkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSB0 aHVtYm5haWwgKGUuZy4gNXQuanBnKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+e2FsdH08L3NwYW4+IDogdGhlIGFsdCB0ZXh0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj57dGl0bGV9PC9zcGFuPiA6IHRoZSBjYXB0aW9uPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj57ZGF0ZX08L3NwYW4+IDogaW1hZ2UgdXBsb2FkIGRhdGU8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt3aWR0aH08L3NwYW4+IDogaW1h Z2Ugd2lkdGg8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntoZWlnaHR9PC9z cGFuPiA6IGltYWdlIGhlaWdodDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e3RodW1id2lkdGh9PC9zcGFuPiA6IHRodW1ibmFpbCB3aWR0aCAoaWYgZGVmaW5lZDogc2Vl IHRoZSA8Y29kZT50aHVtYnNpemU8L2NvZGU+IGF0dHJpYnV0ZSk8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtaGVpZ2h0fTwvc3Bhbj4gOiB0aHVtYm5haWwgaGVp Z2h0IChkaXR0byk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYnd1 bml0c308L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIHVuaXRzIChlLmcuIHB4LCAlLCBlbSBl dGMuIE9ubHkgaWYgZGVmaW5lZCB2aWEgPGNvZGU+dGh1bWJzaXplPC9jb2RlPik8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYmh1bml0c308L3NwYW4+IDogdGh1 bWJuYWlsIGhlaWdodCB1bml0cyAoZGl0dG8pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 dC1uYW1lIj57aGFzdGh1bWJ9PC9zcGFuPiA6IGlmIHRoZSBpbWFnZSBoYXMgYW4gYXNzb2Np YXRlZCB0aHVtYm5haWwgb3Igbm90IChwcm9iYWJseSBub3QgbXVjaCB1c2UpPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57Z2FsbGVyeWlkfTwvc3Bhbj4gOiB0aGUgZ2Fs bGVyeSBpZCB5b3Ugb3IgdGhlIHBsdWdpbiBhc3NpZ25lZDwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+e29iamVjdH08L3NwYW4+IDogYSBzcGVjaWFsIGl0ZW0gY29udGFp bmluZyBlaXRoZXIgdGhlIDxjb2RlPnRleHQ8L2NvZGU+IE9SIHRoZSBpbWFnZSB0YWcgb2Yg dGhlIGNvcnJlc3BvbmRpbmcgdGh1bWJuYWlsIGJ1dCBvbmx5IGlmIDxjb2RlPnRodW1ibGlt aXQ8L2NvZGU+IGFsbG93cyBpdC4gZS5nLiBpZiA8Y29kZT50aHVtYmxpbWl0PSZxdW90OzEm cXVvdDs8L2NvZGU+IHRoaXMgdmFyaWFibGUgaXMgb25seSBzZXQgZm9yIHRoZSBmaXJzdCB0 aHVtYm5haWwgaW4gdGhlIGxpc3QuIEV2ZXJ5IG90aGVyIHRpbWUgaXQgaXMgZW1wdHk8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntjb3VudGVyfTwvc3Bhbj4gOiBhbiBp bWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVudGluZyBlYWNoIHRp bWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntpbmRleH08L3NwYW4+IDog YW4gaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7IHByb2JhYmx5IG5vdCBtdWNo IHVzZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYmNvdW50ZXJ9 PC9zcGFuPiA6IGEgdGh1bWJuYWlsIGltYWdlIGNvdW50ZXIsIHN0YXJ0aW5nIGZyb20gMSBh bmQgaW5jcmVtZW50aW5nIGVhY2ggdGltZS4gTm90ZSBpdCBpcyAmIzgyMTY7cmVzZXQmIzgy MTc7IGJhY2sgdG8gMSB3aGVuZXZlciBhbiBlbGVtZW50IGdpdmVuIGluIDxjb2RlPm9uY2hh bmdlPC9jb2RlPiBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIGl0ZW08L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aHVtYmluZGV4fTwvc3Bhbj4gOiBhbiBpbmRleCBj b3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkgbm90IG11Y2ggdXNlKS4gSXQg aXMgYWxzbyByZXNldCBqdXN0IGxpa2UgPGNvZGU+e3RodW1iY291bnRlcn08L2NvZGU+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6 IHRoZSB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhpcyBwYWdlPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiB0aGUg YWJzb2x1dGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xp PgoJPC91bD4KCgk8cD5JbiBhZGRpdGlvbiwgaWYgZWl0aGVyIDxjb2RlPnBhZ2luZz0mcXVv dDsxJnF1b3Q7PC9jb2RlPiBvciA8Y29kZT5wYWdlZm9ybTwvY29kZT4gaGF2ZSBiZWVuIHNw ZWNpZmllZCwgYWxsIHRoZSA8YSBocmVmPSIjcmVwX3BhZ2luZyI+cGFnaW5nIHJlcGxhY2Vt ZW50IHRhZ3M8L2E+IGFyZSBhdmFpbGFibGUgdG9vLiBJZiB0aG9zZSBhcmVuJiM4MjE3O3Qg ZW5vdWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21ib3MiPmNyZWF0ZSB5b3VyIG93bjwvYT4g YnkgZ3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSwgb3B0aW9uYWxseSB3aXRo IGFydGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNvZGU+P2V4Y2VycHQ8L2NvZGU+LCA8Y29k ZT4/a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0aWNsZV9pbWFnZTwvY29kZT4sIGV0Yy48 L3A+CgoJPHA+T3RoZXIgdGFncyBhcmUgYWRkZWQgZGVwZW5kaW5nIG9uIHdoZXRoZXIgeW91 IGFyZSB3YXRjaGluZyBmb3IgY2hhbmdlZCBlbGVtZW50cyB2aWEgdGhlIDxjb2RlPm9uY2hh bmdlPC9jb2RlPiBhdHRyaWJ1dGUgb3IgaWYgeW91IGhhdmUgc3BlY2lmaWVkIGEgPGNvZGU+ Z3JvdXB0YWc8L2NvZGU+LiBGb3IgZXhhbXBsZSwgaWYgeW91IGFkZGVkIDxjb2RlPm9uY2hh bmdlPSZxdW90O2F1dGhvciwgY2F0ZWdvcnkmcXVvdDs8L2NvZGU+IHRoZW4gZXZlcnkgdGlt ZSB0aGUgYXV0aG9yIG9yIGNhdGVnb3J5IGNoYW5nZWQgY29tcGFyZWQgdG8gdGhlIHByZXZp b3VzIGltYWdlLCBvbmUgb3IgdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIHdvdWxkIGJlY29t ZSBhdmFpbGFibGU7IG5hbWVseSA8Y29kZT57b25jaGFuZ2U6YXV0aG9yfTwvY29kZT4gYW5k IDxjb2RlPntvbmNoYW5nZTpjYXRlZ29yeSk8L2NvZGU+LjwvcD4KCgk8cD5JZiB5b3UgdXNl ZCA8Y29kZT5ncm91cHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+IGFzIHdlbGwsIHlvdSB3 b3VsZCBiZSBnaXZlbiB0d28gbmV3IHJlcGxhY2VtZW50IHRhZ3MgbGFiZWxsZWQgPGNvZGU+ Z3JvdXB0YWdzdGFydDwvY29kZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPi4gU2Vl ICYjODIyMDtleGFtcGxlIDYmIzgyMjE7I2VnNiBmb3IgZGV0YWlscy48L3A+CgoJPGgzIGlk PSJwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2gzPgoKCTxwPldoZW4gYWxsIHRoZSB0aHVt Ym5haWxzIGhhdmUgYmVlbiBwcm9jZXNzZWQsIHRoZSA8Y29kZT5wYWdlZm9ybTwvY29kZT4g aXMgcHJvY2Vzc2VkIGFuZCBkaXNwbGF5ZWQuIEluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhl IHdheSB0aGUgPGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+Z2FsbGVyeSBmb3JtPC9hPiB3b3Jr cywgYSBzZXJpZXMgb2YgPGEgaHJlZj0iI3JlcF9wYWdpbmciPlJlcGxhY2VtZW50IFRhZ3M8 L2E+IGdvdmVybiB3aGljaCBnYWxsZXJ5IG5hdmlnYXRpb24gaXRlbXMgYXJlIGF2YWlsYWJs ZS4gRm9yIGV4YW1wbGUgeW91IGNvdWxkIGNob29zZSB0byBvbmx5IHNob3cgbmV4dC9wcmV2 LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4gT3IgbnVtYmVyZWQgcGFnZSBsaW5r cy48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIgaWQ9InJlcF9wYWdpbmciPlJlcGxhY2VtZW50 IHRhZ3M6IHBhZ2luZzwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PntuYXZmaXJzdH08L3NwYW4+IDogdGhlIGZpcnN0IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYj ODIyMDtGaXJzdCYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57 bmF2cHJldn08L3NwYW4+IDogdGhlIHByZXZpb3VzIHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYj ODIyMDsmbGFxdW87JiM4MjIxOyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUi PntuYXZlYXJsaWVyfTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1iZXJzIGJlZm9yZSB0aGUgY3Vy cmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2dGhpc3Vy bH08L3NwYW4+IDogdGhlIGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gbGluayB0byBpdHNlbGY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 LW5hbWUiPntuYXZ0aGlzfTwvc3Bhbj4gOiB0aGUgY3VycmVudCBwYWdlIHdpdGhvdXQgYSA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5rPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57bmF2bGF0ZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYWZ0 ZXIgdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ e25hdm5leHR9PC9zcGFuPiA6IHRoZSBuZXh0IHBhZ2UgKGRlZmF1bHQgbGFiZWw6ICYjODIy MDsmcmFxdW87JiM4MjIxOyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntu YXZsYXN0fTwvc3Bhbj4gOiB0aGUgbGFzdCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7 TGFzdCYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2Zmly c3RwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4g dG8gdGhlIGZpcnN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntu YXZwcmV2cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHRvIHRoZSBwcmV2aW91cyBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj57bmF2dGhpc3BhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiB0byB0aGUgY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj57bmF2bmV4dHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiB0byB0aGUgbmV4dCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57bmF2bGFzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFz cz0iY2FwcyI+VVJMPC9zcGFuPiB0byB0aGUgbGFzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRoZSB0b3RhbCBudW1i ZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RvdGFscGFnZXN9PC9zcGFuPiA6IHRoZSB0b3RhbCBu dW1iZXIgb2YgcGFnZXMgaW4gdGhpcyBjb2xsZWN0aW9uPC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiB0aGUgYWJzb2x1dGUgbWF4aW11 bSBudW1iZXIgb2YgaW1hZ2VzIGFjcm9zcyBhbGwgcGFnZXM8L2xpPgoJPC91bD4KCgk8cD5U aGUgY3VycmVudCBwYWdlIGhhcyBhIGZpeGVkIGNsYXNzIG9mICYjODIxNjtjdXJyZW50JiM4 MjE3OyBhbmQgZWFjaCBpdGVtIGlzLCBieSBkZWZhdWx0LCBhIDxjb2RlPiZsdDtsaSZndDs8 L2NvZGU+IGZvciBlYXN5IHN0eWxpbmcuIFRvIGF2b2lkIGEgemlsbGlvbiBvcHRpb25zLCBj dXN0b20gbGFiZWxzIGFyZSBkZWZpbmVkIGRpcmVjdGx5IGluIHRoZSBmb3JtIGl0c2VsZjo8 L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OjFzdH08L2NvZGU+PC9wPgoKCTxwPldvdWxkIGxh YmVsIHRoZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8gdGhlIGZpcnN0IHBhZ2Ugb2YgdGhl IGdhbGxlcnkgYXMgJiM4MjIwOzFzdCYjODIyMTsuIFRoaXMgc3ludGF4IGFsbG93cyB5b3Ug dG8gdXNlIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHNuaXBwZXRzLCBlLmcuOjwv cD4KCgk8cD48Y29kZT57bmF2Zmlyc3Q6IyNmaXJzdExhYmVsIyN9PC9jb2RlPjwvcD4KCgk8 cD5Zb3UgY2FuIG92ZXJyaWRlIHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIGJ5IG5h dmVhcmxpZXIgYW5kIG5hdmxhdGVyIGJ5IHNwZWNpZnlpbmcgYSBjb2xvbiBhbmQgYSBudW1i ZXIuIFNvIHRvIG9ubHkgc2hvdyAyIGl0ZW1zIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJyZW50 IHBhZ2UgYW5kIDMgaXRlbXMgdG8gdGhlIHJpZ2h0LCB1c2UgPGNvZGU+e25hdmVhcmxpZXI6 Mn0ge25hdmxhdGVyOjN9PC9jb2RlPiBpbiB5b3VyIGZvcm0uIEN1cnJlbnRseSA8Y29kZT57 bmF2ZWFybGllcn08L2NvZGU+IGFuZCA8Y29kZT57bmF2bGF0ZXJ9PC9jb2RlPiBvbmx5IGRp c3BsYXkgYXJhYmljIG51bWVyYWxzLiBBbnkgaWRlYXMgb24gaG93IHRvIG9mZmVyIG90aGVy IGNoYXJhY3RlciBzZXRzIGdyZWF0bHkgYXBwcmVjaWF0ZWQuPC9wPgoKCTxoMyBpZD0iY29t Ym9zIj5Db21ib3M8L2gzPgoKCTxwPklmIHRoZSBidWlsdC1pbiA8YSBocmVmPSIjcmVwX2dh bGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZW4mIzgyMTc7dCBlbm91Z2ggZm9yIHlv dXIgbmVlZHMgb3IgeW91IGZpbmQgeW91cnNlbGYgcmVwZWF0aW5nIHRoZSBzYW1lIGNvbWJp bmF0aW9uIGFuZCB3YW50IHRvIHNhdmUgeW91cnNlbGYgc29tZSB0eXBpbmcsIHlvdSBjYW4g ZGVmaW5lIHlvdXIgb3duIHJlcGxhY2VtZW50IHRhZ3MuIFRoZSBzeW50YXggaXM6PC9wPgoK CTxwPjxjb2RlPmNvbWJvPSZxdW90O25ld3RhZzE6ZGVmaW5pdGlvbiwgbmV3dGFnMjpkZWZp bml0aW9uLCAuLi4mcXVvdDs8L2NvZGU+PC9wPgoKCTxwPiYjODIxNjtkZWZpbml0aW9uJiM4 MjE3OyBjYW4gYmUgYW55IGZpeGVkIHRleHQsIGFueSBleGlzdGluZyByZXBsYWNlbWVudCB0 YWcsIG9yIGFueSBhcnRpY2xlIHZhcmlhYmxlIHNvIHlvdSBjYW4gZ2V0IHJlYWxseSB3aWxk IGhlcmU6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90O2ltZ2luOmZvdW5kIGluID9zIFt0 YWdnZWQgd2l0aCA/a2V5d29yZHMuIFBob3RvIGJ5IHthdXRob3J9XSZxdW90OzwvY29kZT48 L3A+CgoJPHA+c28gbm93IDxjb2RlPntpbWdpbn08L2NvZGU+IGlzIGF2YWlsYWJsZSB0byB5 b3VyIGZvcm0gYW5kIG1pZ2h0IGJlIHJlcGxhY2VkIHdpdGggJiM4MjIwO2ZvdW5kIGluIHpv byBbdGFnZ2VkIHdpdGggemVicmEsIGFmcmljYSwgc3RyaXBlcy4gUGhvdG8gYnkgQmxva2Vd JiM4MjIxOy4gJHByZXRleHQgaXMgYWxzbyBhdmFpbGFibGUgZm9yIHRob3NlIGdlZWtzIHdo byBrbm93IHdoYXQmIzgyMTc7cyBpbiBpdCAodXNlIDxjb2RlPmRlYnVnPSZxdW90OzQmcXVv dDs8L2NvZGU+IHRvIHZpZXcgYWxsIGF2YWlsYWJsZSBhcnRpY2xlIHZhcmlhYmxlcykuPC9w PgoKCTxwPk9uZSB0aGluZyB0byB3YXRjaCBvdXQgZm9yIGlzIHRoYXQgdGhlIHNwYWNlIGNo YXJhY3RlciBpc24mIzgyMTc7dCBuZWNlc3NhcmlseSBhIGRlbGltaXRlciBmb3IgPGNvZGU+ PzwvY29kZT4gdmFyaWFibGVzIChiZWNhdXNlIGN1c3RvbSBmaWVsZHMgY2FuIGhhdmUgc3Bh Y2VzIGluIHRoZW0pLiBTbyA8Y29kZT5jb21ibz0mcXVvdDtkb2Vzbm90d29yazo/cyBpbiA/ Y2F0ZWdvcnkxJnF1b3Q7PC9jb2RlPiB3aWxsIGxvb2sgZm9yIGEgdmFyaWFibGUgbGFiZWxs ZWQgJiM4MjIwO3MgaW4mIzgyMjE7IGFuZCBvbmUgY2FsbGVkICYjODIyMDtjYXRlZ29yeTEm IzgyMjE7LiBPbmx5IG9uZSBvZiB0aG9zZSBleGlzdHMhIENsZXZlciB1c2Ugb2YgcGFyZW50 aGVzZXMgb3Igb3RoZXIgcHVuY3R1YXRpb24gY2FuIHdvcmsgcm91bmQgdGhpcy48L3A+CgoJ PGgzIGlkPSJjb2xsYXRlX21vZGUiPkNvbGxhdGUgbW9kZTwvaDM+CgoJPHA+SWYgeW91IHdh bnQgdG8gZ2V0IDxlbT5yZWFsbHk8L2VtPiBmdW5reSB5b3UgY2FuIHB1dCB0aGUgcGx1Z2lu IGludG8gYSAybmQgbW9kZSBjYWxsZWQgJiM4MjIwO2NvbGxhdGlvbiBtb2RlJiM4MjIxOy4g SW4gdGhpcyBtb2RlIHlvdXIgY2hvc2VuIGZvcm0gaXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4g ZXhlY3V0ZWQgZm9yIGV2ZXJ5IGltYWdlOyBpdCBpcyBvbmx5IHVzZWQgb25jZSBhdCB0aGUg dmVyeSBlbmQgb2YgdGhlIGxpc3QsIGFmdGVyIGFsbCBpbWFnZXMgaGF2ZSBiZWVuIGludGVy bmFsbHkgJiM4MjIwO2NvbGxlY3RlZCYjODIyMTsuIEluIGVmZmVjdCwgdGhlIHBsdWdpbiBi dWlsZHMgdXAgYSBnaWFudCBhcnJheSBvZiBhbGwgbWF0Y2hpbmcgaW1hZ2VzIHJlYWR5IGZv ciB5b3UgdG8gb3V0cHV0IHRoZW0gYWxsIGluIG9uZSBnby4gVGhpcyBpcyB2ZXJ5IGhhbmR5 IGZvciBkb2luZyBzbGlkZXNob3dzIGFuZCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxl OjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxw PnN3aXRjaGVzIGNvbGxhdGlvbiBtb2RlIG9uLiBJZiB0aGUgcGx1Z2luIG1hdGNoZWQgNCBp bWFnZXMgYW5kIHlvdSB3ZXJlIHRvIHVzZSB0aGUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntu YW1lfTwvY29kZT4gaW4geW91ciBmb3JtIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiB7bmFtZX0K PC9jb2RlPjwvcHJlPgoKCTxwPnlvdSBtaWdodCBnZXQgdGhpczo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiBoZXJv bi5qcGcscGVuZ3Vpbi5qcGcsZW11LmpwZyxwdWZmaW4uanBnCjwvY29kZT48L3ByZT4KCgk8 cD5Tb21ldGltZXMgaXQmIzgyMTc7cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBwdXQgcXVvdGVz IGFyb3VuZCBlYWNoIGl0ZW0gc28geW91IGNhbiB0ZWxsIGNvbGxhdGUgbW9kZSB0byBkbyB0 aGF0IGluc3RlYWQ6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9 JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5Zb3Ugd291bGQgdGhlbiBnZXQ6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczog JnF1b3Q7aGVyb24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90O2Vt dS5qcGcmcXVvdDssJnF1b3Q7cHVmZmluLmpwZyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+ VGhlIGRlbGltaXRlciAoYSBjb21tYSBpbiB0aGlzIGNhc2UpIGNhbiBiZSBvdmVycmlkZGVu IHdpdGggdGhlIDxjb2RlPmRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuIFlvdSBtYXkgdXNlIDxj b2RlPnNnbHF1b3RlPC9jb2RlPiB0byB3cmFwIHNpbmdsZSBxdW90ZXMgcm91bmQgdGhlIGl0 ZW1zLCBvciAmIzgyMjA7ZGJscXVvdGUmIzgyMjE7IGFzIGEgc3lub255bSBmb3IgJiM4MjIw O3F1b3RlJiM4MjIxOyBpZiB5b3UgcHJlZmVyLiBZb3UgY2FuIHF1b3RlIG1vcmUgdGhhbiBv bmUgdGhpbmcgYXQgb25jZSBieSBzcGVjaWZ5aW5nIHRoZSBpdGVtcyBhcyBhIGRlbGltaXRl ZCBsaXN0OjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1b3RlOntuYW1lfTp7YWx0 fTp7aW1naW59JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5ZZXMsIHlvdSBjYW4gdXNlIGNvbWJv cyEgVGhlIGRlbGltaXRlciB1c2VkIGJldHdlZW4gaXRlbXMgY2FuIGJlIG92ZXJyaWRlbiB3 aXRoIHRoZSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxwPlRo ZSBzZWNvbmQgc3BlY2lhbCBmZWF0dXJlIG9mIGNvbGxhdGlvbiBtb2RlIGlzIHRoYXQgeW91 IGRvIG5vdCBoYXZlIHRvIGFsd2F5cyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0LiBZb3UgY2Fu IGdyYWIgaW5kaXZpZHVhbCBlbnRpdGllcyBmcm9tIHdpdGhpbiB0aGUgaW50ZXJuYWwgYXJy YXkgYnkgdXNpbmcgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiB0aHVzOjwvcD4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntuYW1lfSBtaWdodCBvdXRw dXQgJnF1b3Q7aGVyb24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90 O2VtdS5qcGcmcXVvdDssJnF1b3Q7cHVmZmluLmpwZyZxdW90OyAoYXMgYmVmb3JlKQoobmFt ZSMxfSB3b3VsZCBvbmx5IG91dHB1dCBoZXJvbi5qcGcKKG5hbWUjM30gd291bGQgb25seSBv dXRwdXQgZW11LmpwZwo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHdoZW4gcHVsbGlu ZyBvdXQgaW5kaXZpZHVhbCBlbnRyaWVzIHRoZXkgPHN0cm9uZz5kbyBub3Q8L3N0cm9uZz4g Z2V0IHF1b3RlcyBhZGRlZCB0byB0aGVtLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91IHVz ZWQgPGNvZGU+cXVvdGU8L2NvZGU+IG9yIG5vdC4gVGhpcyBpcyBiZWNhdXNlIGl0IGlzIGEg c2luZ2xlIGl0ZW0gc28geW91IGNhbiBlYXNpbHkgcHV0IHRoZSBxdW90ZXMgaW4gdGhlIGZv cm0gaXRzZWxmICh2aXo6IDxjb2RlPiZxdW90O3tuYW1lfSZxdW90OzwvY29kZT4pPC9wPgoK CTxwPk1lc3NpbmcgYXJvdW5kIHdpdGggcHVsbGluZyBvdXQgaW5kaXZpZHVhbCBpdGVtcyBh bmQgbGlzdHMgY2FuIHlpZWxkIHNvbWUgdmVyeSBpbnRlcmVzdGluZyByZXN1bHRzIGFuZCBh bGxvd3Mgc29tZSBjb21wbGV0ZWx5IHdhY2t5IGdhbGxlcmllcyB0byBiZSBnZW5lcmF0ZWQu IFRyeSBjb21iaW5pbmcgc21kX2dhbGxlcnkgdGFncyB3aXRoIDxjb2RlPiZsdDt0eHA6aWZf ZGlmZmVyZW50Jmd0OzwvY29kZT4gZm9yIGEgcmVhbCBtaW5kIHNjcmFtYmxlIDotKTwvcD4K Cgk8aDMgaWQ9ImV4YW1wbGVzIj5FeGFtcGxlczwvaDM+CgoJPHA+VGhlIGV4YW1wbGVzIGFs bCB1c2UgdGhlIGNsYXNzaWMgem9vIHdlYnNpdGUuIExldCYjODIxNztzIHNwZWNpZnkgc29t ZSBwaWN0dXJlcyB0byBwdWxsIG91dCBvZiB0aGUgZGF0YWJhc2U6PC9wPgoKCTxoNCBpZD0i ZWcxIj5FeGFtcGxlIDE6IHNpbXBsZSAvIGxpZ2h0Ym94ZWQgZ2FsbGVyeTwvaDQ+Cgo8cHJl IGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5 IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7 IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhh dCBwdWxscyBvdXQgYWxsIHBpY3R1cmVzIGZyb20gdGhlIGFuaW1hbHMgY2F0ZWdvcnksIGlu Y2x1ZGluZyBhbGwgc3ViLWNhdGVnb3JpZXMsIGFuZCBwYXNzZXMgdGhlbSB0byB0aGUgZm9y bSBjYWxsZWQgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvciBwcm9jZXNzaW5nLiBUaGUgZm9y bSBjb3VsZCBqdXN0IGJlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O2ltZyBjbGFzcz0mcXVvdDthbmltYWdlJnF1b3Q7IHNyYz0mcXVv dDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsKJmx0O2RpdiBjbGFz cz0mcXVvdDthY2FwdGlvbiZxdW90OyZndDt7dGl0bGV9Jmx0Oy9kaXYmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5UaGF0IG1lYW5zLCBmb3IgZXZlcnkgbWF0Y2hlZCBpbWFnZSwgc3Vic3Rp dHV0ZSBpdHMgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4sIGFsdCBhbmQgdGl0bGUg dGFncyBpbnRvIHRoZSByZWxldmFudCBwbGFjZXMuIFRodXMgeW91IGdldCBhIHNlcmllcyBv ZiBpbWFnZXMgb24gdGhlIHBhZ2UsIHdoaWNoIHlvdSBjYW4gc3R5bGUgYWNjb3JkaW5nbHku PC9wPgoKCTxwPkZvciBhIG1vcmUgZmFuY3kgb3V0cHV0IHVzaW5nLCBzYXksIHNsaW1ib3gs IHlvdSBjb3VsZCBsb2FkIHRoZSByZWxldmFudCBsaWJyYXJpZXMgYW5kIHN0eWxlcyBpbiB0 aGUgPGNvZGU+Jmx0O2hlYWQmZ3Q7PC9jb2RlPiBvZiB5b3VyIHBhZ2U6PC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90 O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7 Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2Ny aXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpbWJveC5qcyZxdW90OyZndDsmbHQ7L3Njcmlw dCZndDsKJmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsgdHlwZT0mcXVvdDt0 ZXh0L2NzcyZxdW90OyBocmVmPSZxdW90Oy9jc3Mvc2xpbWJveC5jc3MmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoZW4geW91ciAmIzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9y bSBjb3VsZCBiZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyBocmVmPSZxdW90 O3t1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZxdW90OwogICAgIHRpdGxlPSZxdW90O0Eg cGljdHVyZSBvZiB7dGl0bGV9JnF1b3Q7IGhlaWdodD0mcXVvdDt7aGVpZ2h0fSZxdW90OyB3 aWR0aD0mcXVvdDt7d2lkdGh9JnF1b3Q7Jmd0OwogJmx0O3R4cDp0aHVtYm5haWwgaWQ9JnF1 b3Q7e2lkfSZxdW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Wb2ls YSEgVXNpbmcgdGhlIHNhbWUgc21kX2dhbGxlcnkgdGFnIHlvdSBoYXZlIGNoYW5nZWQgdGhl IHdheSB0aGUgZ2FsbGVyeSByZW5kZXJzIGZyb20gYSBzaW1wbGUgbGlzdCB0byBhIGZ1bGwt ZmVhdHVyZWQgc2xpbWJveC4gV2l0aCB2aXJ0dWFsbHkgdGhlIHNhbWUgZm9ybSB5b3UgY2Fu IHN3aXRjaCB0aGUgb3V0cHV0IHRvIHRoaWNrYm94LCBsaWdodGJveCwgbGl0ZWJveCwgbW9v bmJveCBvciB3aGF0ZXZlci15b3UtbGlrZS1ib3ggZGVwZW5kaW5nIG9uIHdoaWNoIGxpYnJh cmllcyB5b3UgbG9hZC4gRm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgZm9yIHlvdXIgZmF2b3Vy aXRlIGVmZmVjdCBhbmQgcGx1ZyBpdCBpbnRvIHNtZF9nYWxsZXJ5LjwvcD4KCgk8aDQgaWQ9 ImVnMiI+RXhhbXBsZSAyOiBsYXVuY2ggZnJvbSBvbmUgaW1hZ2U8L2g0PgoKCTxwPkEgY29t bW9uIHJlcXVlc3QgaXMgdG8gYmUgYWJsZSB0byAmIzgyMjA7bGF1bmNoJiM4MjIxOyBhIHNs aW1ib3ggZ2FsbGVyeSBmcm9tIGEgc2luZ2xlIGltYWdlIG9yIHRleHQgbGluay4gVXNpbmcg YSBzaW5nbGUgaW1hZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7 CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsgc3VibGV2ZWw9JnF1b3Q7YWxs JnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7 MSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHRoaXMgdGltZSB3 ZSBhcmUgYWRkaW5nIHRvIHRoZSBnYWxsZXJ5IHRoZSBpbWFnZShzKSBwdWxsZWQgZnJvbSB0 aGUgYXJ0aWNsZS1pbWFnZSBmaWVsZCBvZiB0aGUgY3VycmVudCBhcnRpY2xlLiBUaGUgZm9y bSB3aWxsIHVzZSB0aGUgc3BlY2lhbCA8Y29kZT57b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1l bnQgdGFnLiBUaGUgcGx1Z2luIG9ubHkgZGlzcGxheXMgdGhpcyBwYXJ0IGlmIHRoZSB2YWx1 ZSBvZiB0aHVtYmxpbWl0IGhhcyA8c3Ryb25nPm5vdDwvc3Ryb25nPiBiZWVuIHJlYWNoZWQ6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2EgcmVs PSZxdW90O2xpZ2h0Ym94LXNtZCZxdW90OyBocmVmPSZxdW90O3t1cmx9JnF1b3Q7CiAgICAg dGl0bGU9JnF1b3Q7QSBwaWN0dXJlIG9mIHt0aXRsZX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZs dDsvYSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoYW5nZSB0aGUgc3RhcnQgaW1hZ2UgYnkg c3BlY2lmeWluZyA8Y29kZT50aHVtYm9mZnNldDwvY29kZT4gJiM4MjEyOyBub3RlIHRoaXMg d2lsbCBhbHNvIHN0YXJ0IHRoZSBsaWdodGJveCBlZmZlY3QgZnJvbSB0aGUgaW1hZ2UgeW91 IGNob29zZS4gSWYgeW91IHdhbnQgdG8gc3RhcnQgb24gYSBzcGVjaWZpYyBpbWFnZSBpbiBw b3NpdGlvbiAxLCB1c2UgdGhlIDxjb2RlPmlkPC9jb2RlPiBhdHRyaWJ1dGUgdG8gYnJpbmcg aXQgdG8gdGhlIHRvcCBvZiB0aGUgbGlzdCwgb3IgY2hhbmdlIHRoZSBzb3J0IG9yZGVyLjwv cD4KCgk8cD5JZiB5b3Ugd2FudGVkIHRvIGxhdW5jaCB0aGUgZ2FsbGVyeSBmcm9tIGEgdGV4 dCBsaW5rLCBtb2RpZnkgdGhlIHRhZyBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0m cXVvdDthbmltYWxzJnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsg c3VibGV2ZWw9JnF1b3Q7YWxsJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7 IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OwogICAgIHRleHQ9JnF1b3Q7Q2xpY2sgdG8gc3Rh cnQgbGlnaHRib3gmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxoNCBpZD0iZWczIj5F eGFtcGxlIDM6IHBvcHVwIGdhbGxlcnk8L2g0PgoKCTxwPlRvIGFjaGlldmUgYW4gZWZmZWN0 IHNpbWlsYXIgdG8gcnNzX3RodW1icG9wLCBhZGQgYW4gaW1hZ2UgYW5kIGNhcHRpb24gcGxh Y2Vob2xkZXIgb3V0c2lkZSB0aGUgY2FsbCB0byBzbWRfZ2FsbGVyeSwgdGhlbiBpbmNsdWRl IHlvdXIgc21kX2dhbGxlcnkgdGFnIGFzIHVzdWFsLiBUaGlzIHRpbWUgd2UgYXJlIG9ubHkg aW50ZXJlc3RlZCBpbiBhbGwgdGhlIHBpY3R1cmVzIGZyb20gdGhlIGNhdGVnb3JpZXMgdXAg dG8gdHdvIGxldmVscyBiZWxvdyBib3RoICYjODIyMDthbmltYWxzJiM4MjIxOyBhbmQgd2hp Y2hldmVyIGNhdGVnb3JpZXMgYXJlIGxpc3RlZCBpbiA8Y29kZT5teV9jdXN0b21fZmllbGQ8 L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDtpbWcgaWQ9JnF1b3Q7ZnVsbHNpemUmcXVvdDsgc3JjPSZxdW90Oy9pbWFnZXMvZW1wdHku anBnJnF1b3Q7IC8mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O2Z1bGxjYXB0aW9uJnF1b3Q7Jmd0 OyZsdDsvc3BhbiZndDsKJmx0O3R4cDpzbWRfZ2FsbGVyeSBzdWJsZXZlbD0mcXVvdDsyJnF1 b3Q7CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscywgP215X2N1c3RvbV9maWVsZCZxdW90 OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJ PHA+VGhlIGdhbGxlcnkgZm9ybSBsb29rcyBzY2FyeSBidXQgaXMgb25seSBhIHRodW1ibmFp bCBpbWFnZSBzdXJyb3VuZGVkIGJ5IGEgc2ltcGxlIGFuY2hvciB0YWcgd2l0aCB0d28gYWN0 aW9ucyBhc3NpZ25lZCB0byBpdDogYSBtb3VzZW92ZXIgdG8gY29weSB0aGUgcGljdHVyZSBh bmQgY2FwdGlvbiBpbnRvIHRoZSBwbGFjZWhvbGRlcjsgYW5kIGEgbW91c2VvdXQgdG8gcmVt b3ZlIHRoZW06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyB0aXRsZT0mcXVvdDt7dGl0bGV9JnF1b3Q7 CiAgICAgb25tb3VzZW92ZXI9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtm dWxsc2l6ZSYjMzk7KS5zcmMgPSB0aGlzLmhyZWY7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu dEJ5SWQoJiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSB0aGlzLnRpdGxlOyBy ZXR1cm4gZmFsc2UmcXVvdDsKICAgICBvbm1vdXNlb3V0PSZxdW90O2RvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gJiMzOTsvaW1hZ2VzLzE3Lmpw ZyYjMzk7OwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24m IzM5OykuaW5uZXJIVE1MID0gJiMzOTsmIzM5OzsgcmV0dXJuIGZhbHNlOyZxdW90OyZndDsK ICAmbHQ7aW1nIHNyYz0mcXVvdDt7dGh1bWJ1cmx9JnF1b3Q7IGFsdD0mcXVvdDt7YWx0fSZx dW90OyAvJmd0OwombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRoZXJlIGFy ZSBtdWNoIG5lYXRlciB3YXlzIG9mIGRvaW5nIHRoaXMgYW5kIGl0JiM4MjE3O3Mgbm90IHJl Y29tbWVuZGVkIHRvIHVzZSB0aGlzIGZvcm0gaW4gYSBsaXZlIHNpdGUsIGJ1dCBpdCBnaXZl cyBhIGZsYXZvdXIgb2Ygd2hhdCBpcyBwb3NzaWJsZS48L3A+CgoJPGg0IGlkPSJlZzQiPkV4 YW1wbGUgNDogc2xpZGVzaG93PC9oND4KCgk8cD5UaGlzIG9uZSB1c2VzIGNvbGxhdGUgbW9k ZSBidXQgaXMgbm90IG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZC4gSW4geW91 ciA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+IHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQv amF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZs dDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1 b3Q7IHNyYz0mcXVvdDsvanMvc2xpZGVzaG93LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIHRhZzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgY2F0ZWdvcnk9JnF1 b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgY29tYm89 JnF1b3Q7aW1nbGlzdDp7aWR9e2V4dH0mcXVvdDsKICBjb2xsYXRlPSZxdW90O3F1b3RlOntp bWdsaXN0fTp7YWx0fSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxs cyBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYmlyZHMgYW5kIGZpc2ggY2F0ZWdvcmllcy4gQWx0 aG91Z2ggdGVjaG5pY2FsbHkgdW5uZWNlc3NhcnksIGEgY29tYm8gaGFzIGJlZW4gZGVmaW5l ZCB0byBzaG93IGhvdyBpdCBjYW4gYmUgdXNlZC4gVGhpcyBjb21ibyBpcyBjYWxsZWQgPGNv ZGU+aW1nbGlzdDwvY29kZT4gYW5kIGlzIGRlZmluZWQgYXMgdGhlIGltYWdlJiM4MjE3O3Mg SUQgbnVtYmVyIHBsdXMgaXRzIGV4dGVuc2lvbi4gV2UgdXNlIHRoaXMgaW4gdGhlIGNvbGxh dGUgYXR0cmlidXRlIGFuZCB0ZWxsIGl0IHRvIHB1dCBkb3VibGUgcXVvdGVzIHJvdW5kIGV2 ZXJ5IGl0ZW0gaW4gJiM4MjE2O2ltZ2xpc3QmIzgyMTc7IGFuZCAmIzgyMTY7YWx0JiM4MjE3 Oy4gVGhlbiB3ZSBjYW4gcHV0IHRoZXNlIHZhbHVlcyBpbnRvIHRoZSBuZWNlc3NhcnkgamF2 YXNjcmlwdCB0byBnZW5lcmF0ZSB0aGUgc2xpZGVzaG93OjwvcD4KCjxwcmUgY2xhc3M9ImJs b2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7c2xpZGVzaG93 JnF1b3Q7IGlkPSZxdW90O3NsaWRlc2hvdzEmcXVvdDsmZ3Q7CiAmbHQ7aW1nIHNyYz0mcXVv dDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1hZ2VzL3tpZCMxfS5qcGcmcXVvdDsKICAgICBh bHQ9JnF1b3Q7e2FsdCMxfSZxdW90OyB3aWR0aD0mcXVvdDt7d2lkdGgjMX0mcXVvdDsgaGVp Z2h0PSZxdW90O3toZWlnaHQjMX0mcXVvdDsgLyZndDsKJmx0Oy9kaXYmZ3Q7CjwvY29kZT4K PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2Ny aXB0JnF1b3Q7Jmd0OwpteVNob3cxID0gbmV3IFNsaWRlc2hvdygmcXVvdDtzbGlkZXNob3cx JnF1b3Q7LAogIHsgaHU6ICZxdW90OyZsdDt0eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMvJnF1 b3Q7LAogICAgaW1hZ2VzOiBbe2ltZ2xpc3R9XSwKICAgIGNhcHRpb25zOiBbe2FsdH1dLAog ICAgY2xhc3NlczogWyZxdW90O3ByZXYmcXVvdDssJnF1b3Q7bmV4dCZxdW90OywmcXVvdDth Y3RpdmUmcXVvdDtdLAogICAgdHlwZTogJnF1b3Q7ZmFkZSZxdW90OwogIH0pOwombHQ7L3Nj cmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBwb3J0 aW9uIChpbiB0aGUgZGl2IGFuZCBpbWcgdGFncykgdXNlcyB0aGUgJiM4MjE2OyMmIzgyMTc7 IG5vdGF0aW9uIGJlY2F1c2Ugd2Ugb25seSB3YW50IHRvIGRpc3BsYXkgb25lIGltYWdlIHRv ICYjODIyMDtzdGFydCYjODIyMTsgdGhlIHNsaWRlc2hvdy4gSW4gdGhpcyBjYXNlIHdlJiM4 MjE3O3JlIHVzaW5nIHRoZSBmaXJzdCBpbWFnZSBpbiB0aGUgbGlzdCwgYnV0IHlvdSBjYW4g Y2hhbmdlIHRoZSAjMSBmb3IgIzQyIGlmIHlvdSB3YW50ZWQgdG8gc2hvdyB0aGUgZm9ydHkt c2Vjb25kIGltYWdlIGluc3RlYWQhIFRoZSBwYXJ0IGluIHRoZSBzY3JpcHQgdGFnIHVzZXMg dGhlIGZ1bGwsIHF1b3RlZCBsaXN0cyBiZWNhdXNlIHRoYXQmIzgyMTc7cyB0aGUgZm9ybWF0 IHRoZSBqYXZhc2NyaXB0IHJlcXVpcmVzLjwvcD4KCgk8aDQgaWQ9ImVnNSI+RXhhbXBsZSA1 OiBwYWdpbmF0aW9uPC9oND4KCgk8cD5UbyBhZGQgcGFnaW5nIHRvIGEgZ2FsbGVyeSB5b3Ug dXNlIHRoZSA8Y29kZT5saW1pdDwvY29kZT4gYXR0cmlidXRlIHRvIHNob3cgYSBudW1iZXIg b2YgdGh1bWJzIHBlciBwYWdlLiBGb3IgYSBwYWdlZCB0aHVtYnBvcCBnYWxsZXJ5IHRoYXQg c2hvd3MgZml2ZSB0aHVtYnMgcGVyIHBhZ2U6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9 JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7 ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5 IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICBmb3JtPSZxdW90O2dhbGxlcnkmcXVv dDsgcGFnZWZvcm09JnF1b3Q7Z2FsbGVyeV9uYXYmcXVvdDsKICBsaW1pdD0mcXVvdDs1JnF1 b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgJiM4MjE2O2dhbGxlcnkmIzgyMTc7 IGZvcm0gaXMgaWRlbnRpY2FsIHRvIHRoZSBvbmUgaW4gPGEgaHJlZj0iI2VnNCI+ZXhhbXBs ZSA0PC9hPiwgd2hpbGUgeW91ciBnYWxsZXJ5X25hdiBmb3JtIG1pZ2h0IGxvb2sgbGlrZSB0 aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtk aXYgY2xhc3M9JnF1b3Q7dG90YWwmcXVvdDsmZ3Q7IyBvZiBwaWNzOiB7dG90YWxpbWFnZXN9 Jmx0Oy9kaXYmZ3Q7CiAgICAge25hdmZpcnN0fSB7bmF2cHJldn0KICAgICB7bmF2ZWFybGll cn0ge25hdnRoaXN9IHtuYXZsYXRlcn0KICAgICB7bmF2bmV4dH0ge25hdmxhc3R9CjwvY29k ZT48L3ByZT4KCgk8cD5UaGF0IG1pZ2h0IHJlbmRlciBzb21ldGhpbmcgc2ltaWxhciB0byB0 aGlzIGJlbG93IHRoZSB0aHVtYnM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+IyBvZiBwaWNzOiAzOAogICAgIEZpcnN0ICZsdDsgMSAyIDMgNCA1IDYg NyA4ICZndDsgTGFzdAo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZXM6PC9wPgoKCTx1bD4KCQk8 bGk+VXNlIHtuYXZ0aGlzdXJsfSBpZiB5b3Ugd2FudCB0aGUgY3VycmVudCBwYWdlIGh5cGVy bGlua2VkPC9saT4KCQk8bGk+VGhlIGN1cnJlbnQgaXRlbSBhbHdheXMgaGFzIGEgY2xhc3Mg b2YgJiM4MjIwO2N1cnJlbnQmIzgyMjE7PC9saT4KCQk8bGk+VXNlIHRoZSA8Y29kZT5uYXZ3 cmFwdGFnPC9jb2RlPiwgPGNvZGU+bmF2YnJlYWs8L2NvZGU+LCBhbmQgPGNvZGU+bmF2Y2xh c3M8L2NvZGU+IHRhZyBhdHRyaWJ1dGVzIHRvIHNwZWNpZnkgaXRlbXMgdG8gd3JhcCBhcm91 bmQgdGhlIGVudGlyZSBwYWdlZm9ybS4gVGhlIGRlZmF1bHRzIGFyZTogPGNvZGU+dWw8L2Nv ZGU+LCA8Y29kZT5saTwvY29kZT4sIGFuZCA8Y29kZT5zbWRfZ2FsbGVyeV9uYXY8L2NvZGU+ IHJlc3BlY3RpdmVseTwvbGk+CgkJPGxpPllvdSBjYW4gbGFiZWwgbmF2Zmlyc3QsIG5hdmxh c3QsIG5hdnByZXYsIG5hdm5leHQgYW5kIG5hdnRoaXMgYnkgc3BlY2lmeWluZyB0aGVtIGxp a2UgdGhpczogPGNvZGU+e25hdnByZXY6UHJldmlvdXN9PC9jb2RlPiAodGhlICYjODIxNjs6 JiM4MjE3OyBkZWxpbWl0ZXIgaW4gdGhpcyBjYXNlIGlzIHRoZSBpdGVtIHNwZWNpZmllZCBi eSBwYXJhbWRlbGltKTwvbGk+CgkJPGxpPm5hdmVhcmxpZXIgYW5kIG5hdmxhdGVyIHdpbGwg YnkgZGVmYXVsdCBzaG93IGFsbCBwYWdlcyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBjdXJyZW50 IG9uZS4gWW91IGNhbiBvdmVycmlkZSB0aGlzIGJ5IHNwZWNpZnlpbmcgdGhlIG51bWJlciBv ZiBwYWdlcyB5b3Ugd2FudCB0byBzaG93IGVpdGhlciBzaWRlLiBlLmcuIGlmIHlvdSB3ZXJl IG9uIHBhZ2UgOSBvZiAxNSwge25hdmVhcmxpZXI6NH0ge25hdmxhdGVyOjN9IHdvdWxkIHNo b3cgPGNvZGU+Jmx0OyZsdDsgNSA2IDcgOCA5IDEwIDExIDEyICZndDsmZ3Q7PC9jb2RlPjwv bGk+Cgk8L3VsPgoKCTxoNCBpZD0iZWc2Ij5FeGFtcGxlIDY6IG9uY2hhbmdlPC9oND4KCgk8 cD5JZiB5b3Ugd2FudCB0byBzaW11bGF0ZSBtdWx0aXBsZSBnYWxsZXJpZXMgZnJvbSBvbmUg c21kX2dhbGxlcnkgdGFnIHlvdSBjYW4gdXNlIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiB0byAm IzgyMjA7d2F0Y2gmIzgyMjE7IGZvciB3aGVuIGNlcnRhaW4gYXR0cmlidXRlcyBvZiBpbWFn ZXMgY2hhbmdlIGFuZCBpbnNlcnQgc3BlY2lhbCB0YWdzIDxlbT5vbmx5IHdoZW4gc29tZXRo aW5nIGNoYW5nZXM8L2VtPi4gSW4gdGhpcyByZWdhcmQgaXQgYWN0cyBsaWtlIGEgc291cGVk LXVwIHZlcnNpb24gb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4mIzgyMTc7cyBi dWlsdC1pbiA8Y29kZT4mbHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+IHRhZy48L3A+ CgoJPHA+WW91IGNhbiB3YXRjaCB0aGUgdXN1YWwgdGhpbmdzIGxpa2UgPGNvZGU+Y2F0ZWdv cnk8L2NvZGU+LCA8Y29kZT5hdXRob3I8L2NvZGU+LCA8Y29kZT53aWR0aDwvY29kZT4sIDxj b2RlPmhlaWdodDwvY29kZT4sIDxjb2RlPmV4dDwvY29kZT5lbnNpb24gYW5kIHNvIG9uLiBI ZXJlJiM4MjE3O3MgYW4gZXhhbXBsZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5CiAgICAgY2F0ZWdvcnk9JnF1b3Q7 YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgICAgb25jaGFu Z2U9JnF1b3Q7Y2F0ZWdvcnlfdGl0bGUmcXVvdDsKICAgICBvbmNoYW5nZXdyYXB0YWc9JnF1 b3Q7aDMmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNpbmNlIHRoZSBwbHVnaW4g bm9ybWFsbHkgc29ydHMgYnkgY2F0ZWdvcnksIHRoaXMgd2lsbCBoYXZlIHRoZSBlZmZlY3Qg b2YgYWRkaW5nIG9uZSByZXBsYWNlbWVudCB0YWcgPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5 X3RpdGxlfTwvY29kZT4gYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSB0aHVtYiBsaXN0 IGFuZCBhbHNvIHdoZW4gdGhlIGNhdGVnb3J5IHN3aXRjaGVzIGZyb20gJiM4MjE2O2JpcmRz JiM4MjE3OyB0byAmIzgyMTY7ZmlzaCYjODIxNzsuIFRodXMgeW91ciBnYWxsZXJ5IGZvcm0g Y291bGQgYmU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ e29uY2hhbmdlOmNhdGVnb3J5X3RpdGxlfQombHQ7YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7 IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7 L2EmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHdvdWxkIG1ha2UgdHdvIGxpZ2h0Ym94 YWJsZSBzZXRzIG9mIHRodW1ibmFpbHMgd2l0aCBhIGhlYWRpbmcgMyBhYm92ZSBlYWNoIGdy b3VwIGNvbnRhaW5pbmcgdGhlIGNhdGVnb3J5IHRpdGxlLjwvcD4KCgk8cD5Ob3RlIHRoYXQg aWYgeW91IGFkZCA8Y29kZT50aHVtYmxpbWl0PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIHRo ZSBzbWRfZ2FsbGVyeSB0YWcgeW91IGNhbiBzaG93IGp1c3Qgb25lIHRodW1ibmFpbCBpbiBl YWNoIGdyb3VwLCB3aXRoIGhlYWRpbmdzIGFib3ZlIGVhY2ggdGh1bWIuIFZpc2l0b3JzIGNs aWNraW5nIHRoZSB0aHVtYiB3aWxsIGxhdW5jaCB0aGUgbGlnaHRib3ggYW5kIGJlIGFibGUg dG8gYnJvd3NlIHRoZSByZWxldmFudCBjYXRlZ29yeS48L3A+CgoJPHA+QW4gZXh0cmEgcGFp ciBvZiByZXBsYWNlbWVudCB0YWdzIGFyZSBhdmFpbGFibGUgaWYgeW91IHdpc2ggdG8gd3Jh cCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzIHRvIGdyb3VwIHRoZW0uIFVzZSB0aGUgPGNvZGU+ Z3JvdXB0YWc8L2NvZGU+IGFuZCA8Y29kZT5ncm91cGNsYXNzPC9jb2RlPiBhdHRyaWJ1dGVz IHRvIHNldCB1cCB0aGUgc3lzdGVtLCB0aGVuIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyBj YWxsZWQgPGNvZGU+Z3JvdXB0YWdzdGFydDwvY29kZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5k PC9jb2RlPiBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5IGFyZSBjb25kaXRpb25hbCBhbmQgYXJl IG9ubHkgcG9wdWxhdGVkIHdoZW4gdGhlIGF0dHJpYnV0ZSB5b3UgYXJlIHNvcnRpbmcgYnkg Y2hhbmdlcy4gVXNlIGl0IGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGlkPSZxdW90Oz9hcnRpY2xl X2ltYWdlJnF1b3Q7CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9y bT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7Y2F0ZWdvcnlfdGl0 bGUmcXVvdDsKICAgICBvbmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVvdDsKICAgICBncm91 cHRhZz0mcXVvdDtkaXYmcXVvdDsgZ3JvdXBjbGFzcz0mcXVvdDtib3gmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ e29uY2hhbmdlOmNhdGVnb3J5X3RpdGxlfQp7Z3JvdXB0YWdzdGFydH0KJmx0O2EgaHJlZj0m cXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZn dDsKe29iamVjdH0KJmx0Oy9hJmd0Owp7Z3JvdXB0YWdlbmR9CjwvY29kZT48L3ByZT4KCgk8 cD5Ob3RlIHRoYXQgeW91IGNhbiBtb3ZlIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2Rl PiB0byBzdXJyb3VuZCB0aGUgPGNvZGU+b25jaGFuZ2U8L2NvZGU+ZCB0aXRsZSBpZiB5b3Ug d2lzaC4gVGhpcyBpcyB3aHkgaXQgaXMgbWFkZSBhcyBhIHJlcGxhY2VtZW50IHRhZyBhbmQg bm90IGEgJiM4MjE2O25vcm1hbCYjODIxNzsgPGNvZGU+d3JhcHRhZzwvY29kZT47IHRvIGdp dmUgeW91IHRoZSBmbGV4aWJpbGl0eSB0byBwbGFjZSBpdCB3aGVyZSB5b3UgbGlrZS48L3A+ CgoJPGgzIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDM+CgoJPHA+QWxsIGF2YWlsYWJs ZSB2ZXJzaW9ucyBhbmQgY2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUuPC9wPgoKCTxwPjxzdHJv bmc+QmV0YTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZlYiAwOCB8IDAuMSB8IElu aXRpYWwgcmVsZWFzZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+CgkJ PGxpPjE5IEZlYiAwOCB8IDAuMiB8IEFkZGVkIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0 cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9MTcyNDU5I3AxNzI0NTkiPntnYWxsZXJ5 aWR9PC9hPiAodGhhbmtzIHJsb2FkZXJybykgYW5kIHNvbWUgc2tlbGV0b24gZG9jczwvbGk+ Cgk8L3VsPgoKCTxwPjxzdHJvbmc+T2ZmaWNpYWw8L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxs aT4xMSBNYXIgMDggfCAwLjMgfCBPZmZpY2lhbCBwdWJsaWMgcmVsZWFzZS4gRml4ZWQgc2ls bHkgZW1wdHkgZmllbGQgYnVnOyBhZGRlZCB7Y291bnRlcn0sIHtpbmRleH0gYW5kIHRoZSB0 b3RhbHMgKGFsbCB0aGFua3MgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNv bS92aWV3dG9waWMucGhwP3BpZD0xNzM0OTAjcDE3MzQ5MCI+amFrb2I8L2E+KTwvbGk+CgkJ PGxpPjE1IE1hciAwOCB8IDAuMzEgfCBGaXhlZCBhIGNvdXBsZSBvZiB1bmRlZmluZWQgaW5k ZXhlcyBhbmQgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9w aWMucGhwP3BpZD0xNzQ4MTgjcDE3NDgxOCI+YWRkZWQge2NhdGVnb3J5X3RpdGxlfTwvYT4g KHRoYW5rcyA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3Bp Yy5waHA/cGlkPTE3NDgyMCNwMTc0ODIwIj5qc3R1YmJzPC9hPik8L2xpPgoJCTxsaT4xNyBN YXIgMDggfCAwLjMyIHwgRml4ZWQgYW5vdGhlciA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4 dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/cGlkPTE3NDk0NyNwMTc0OTQ3Ij51bmRlZmlu ZWQgaW5kZXg8L2E+IGFuZCA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29t L3ZpZXd0b3BpYy5waHA/cGlkPTE3NDk2MSNwMTc0OTYxIj5yZW1vdmVkIGJvZ3VzIGNhbGwg dG8gc21kX2xpYjwvYT4gKGJvdGggdGhhbmtzIHNlY3VuZGFyKTwvbGk+CgkJPGxpPjIxIE1h ciAwOCB8IDAuMzMgfCBEaWQgdjAuMzEgcHJvcGVybHksIGluY2x1ZGluZyB0YWJsZSBwcmVm aXggKHRoYW5rcyA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0 b3BpYy5waHA/cGlkPTE3NTMwMiNwMTc1MzAyIj5uYXJkbzwvYT4pPC9saT4KCQk8bGk+MDEg QXByIDA4IHwgMC4zNCB8IEZpeGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5TUUw8L3NwYW4+IHBh cmVudGhlc2lzIGJ1ZyA7IGFkZGVkIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVy bi5jb20vdmlld3RvcGljLnBocD9waWQ9MTc1NjM3I3AxNzU2MzciPmVtcHR5Y2xhc3MgYW5k IHttYXhpbWFnZXN9PC9hPiAodGhhbmtzIHRoZV9naG9zdCk8L2xpPgoJCTxsaT4wOCBBcHIg MDggfCAwLjQgfCBDaGFuZ2VkIHRodW1iIHRvIGFsbG93IHRodW1iL2Z1bGxzaXplIHN3YXBw aW5nIDsgQWRkZWQgdGh1bWJjaGFuZ2UsIHRodW1iY2hhbmdld3JhcHRhZywgdGh1bWJjaGFu Z2VjbGFzcywge3RodW1iaW5kZXh9LCB7dGh1bWJjb3VudGVyfSBhbmQgdGhlIHtjaGFuZ2Vk Oip9IHJlcGxhY2VtZW50IHRhZ3MgKHRoYW5rcyBmdWxzKTwvbGk+CgkJPGxpPjI2IE1heSAw OCB8IDAuNDEgfCBGaXhlZCBEaXJlY3Rvcnkgc2VwYXJhdG9yICh0aGFua3MgY3VkYSkgOyBh ZGRlZCByYXcgcGFnZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPnMgdG8gdGhlIG5h diByZXBsYWNlbWVudCBhcnJheSBhbmQgbWFkZSB0aGUgbmF2IGFycmF5IGF2YWlsYWJsZSBp biB0aGUgc3RhbmRhcmQgcmVwbGFjZW1lbnRzIGFycmF5ICh0aGFua3MgdmlzdWFscGVvcGxl KTwvbGk+CgkJPGxpPjI3IE1heSAwOCB8IDAuNDIgfCBBZGRlZCBwYWdlcG9zIGFuZCBtYWRl IHBhZ2UgYmxvY2tzIGluZGVwZW5kZW50IG9mIHRodW1iIGJsb2NrICh0aGFua3MgZHVjaGFt cCk8L2xpPgoJCTxsaT4xMCBKdW4gMDggfCAwLjQzIHwgRml4ZWQgc29ydD0mIzgyMjA7Zml4 ZWQmIzgyMjE7IHdoZW4gdXNpbmcgbGltaXQgKHRoYW5rcyByb2Jpbjc0NikgOyBhZGRlZCBw ZXItZ3JvdXAgb25jaGFuZ2Ugd3JhcHBpbmcgYW5kIGFsbG93ZWQgZml4ZWQgc29ydGluZyBv ZiBjYXRlZ29yaWVzICh0aGFua3MganN0dWJicykgOyBkZXByZWNhdGVkIHRodW1iY2hhbmdl KiBhbmQgcmVuYW1lZCBhcyBvbmNoYW5nZSogOyBmaXhlZCAkaWR4IGNvdW50ZXIgcHJvYmxl bTwvbGk+Cgk8L3VsPgoKCTxoMyBpZD0iY3JlZGl0cyI+Q3JlZGl0czwvaDM+CgoJPHA+VGhp cyBwbHVnaW4gd291bGRuJiM4MjE3O3QgaGF2ZSBleGlzdGVkIHdpdGhvdXQgdGhlIGF3ZXNv bWUgbWluZCBvZiBSb2JlcnQgV2V0emxtYXlyLiBIaXMgd2V0X2Zvcl9lYWNoX2ltYWdlIHBs dWdpbiBpcyB0cnVlIGdlbml1czsgdGhpcyBzaW1wbHkgc3RhbmRzIG9uIHRoZSBzaG91bGRl cnMgb2YgdGhhdCBpZGVhIGFuZCByb2xscyBpbiBhIHNvdXBlZCB1cCB2ZXJzaW9uIG9mIHRo ZSB0aHVtYm5haWwgZ2VuZXJhdGlvbiBlbmdpbmUgZnJvbSBzbWRfc2xpbWJveC4gVG8gdGhh dCBlbmQsIHRoZSBwbHVnaW4gaXMgYWxzbyBpbmRlYnRlZCB0byBhbnlvbmUgd2hvIGhhcyBw b3N0ZWQgZmVhdHVyZXMgb3IgYnVnIHJlcG9ydHMgdG8gbWUgb3IgdGhlIHNtZF9zbGltYm94 IHRocmVhZC4gWW91JiM4MjE3O3JlIGFsbCBtYXJ2ZWxsb3VzLjwvcD4KCgk8cD48L2Rpdj48 L3A+CjwhLS0gLS0tIEJFR0lOIFBMVUdJTiBDU1MgLS0tIC0tPgo8c3R5bGUgdHlwZT0idGV4 dC9jc3MiPgojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjQ1IDt9CiNzbWRfaGVscCBjb2Rl IHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNv dXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVs cCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAj OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46 MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21k X2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNz bWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFk ZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIw cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7 IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjNjkzOyBmb250OiBib2xkIDEycHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9 CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0 dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVw cGVyY2FzZTsgfQojc21kX2hlbHAgLmF0dC1uYW1lIHsgZm9udC13ZWlnaHQ6Ym9sZDsgfQoj c21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5 OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBw YWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVy OjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qt c3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIGxpIHsgbWFyZ2luLWxlZnQ6MzVweDsg fQojc21kX2hlbHAgLmJyZWFrIHsgbWFyZ2luLXRvcDo1cHg7IH0KPC9zdHlsZT4KPCEtLSAt LS0gRU5EIFBMVUdJTiBDU1MgLS0tIC0tPgoiO3M6MzoibWQ1IjtzOjMyOiIxN2E2ZTgyNTMw OTBiZGE4NjUyNWFlM2E2ZDIwZjRkYiI7fQ==