# Name: smd_gallery v0.45 # 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 LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjQ1IjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6Mjg3Mzk6ImZ1bmN0aW9uIHNtZF9n 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 eHBfaW1hZ2UsIHR4cF9jYXRlZ29yeScsICgoJGNhdGVnb3J5KSA/ICd0eHBfY2F0ZWdvcnku bmFtZSA9IHR4cF9pbWFnZS5jYXRlZ29yeSBBTkQgJyA6ICcnKS4gJ3R4cF9jYXRlZ29yeS50 eXBlPSJpbWFnZSIgQU5EICcgLiRjbGF1c2UgLicgTElNSVQgMCwnLiAkbWF4bGltaXQsICRk ZWJ1Zyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZz ZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdp bmcpOw0KCX0NCg0KCS8vIElzIHBvc3Qtb3JkZXJpbmcgcmVxdWlyZWQ/IERvIGl0DQoJaWYg KCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7DQoJfSBlbHNlIGlmIChjb3VudCgkcG9z dE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRlIHRoZSByb3dzIGludG8gY29sdW1ucyB0 aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgkcnMgYXMgJGtleSA9PiAkcm93KSB7DQoJ CQkkY29sX2lkWyRrZXldID0gJHJvd1snaWQnXTsNCgkJCSRjb2xfbmFtZVska2V5XSA9ICRy b3dbJ25hbWUnXTsNCgkJCSRjb2xfY2FwdGlvblska2V5XSA9ICRyb3dbJ2NhcHRpb24nXTsN CgkJCSRjb2xfYWx0WyRrZXldID0gJHJvd1snYWx0J107DQoJCQkkY29sX2NhdGVnb3J5WyRr ZXldID0gJHJvd1snY2F0ZWdvcnknXTsNCgkJCSRjb2xfZGF0ZVska2V5XSA9ICRyb3dbJ2Rh dGUnXTsNCgkJCSRjb2xfZXh0WyRrZXldID0gJHJvd1snZXh0J107DQoJCQkkY29sX2F1dGhv clska2V5XSA9ICRyb3dbJ2F1dGhvciddOw0KCQkJJGNvbF93WyRrZXldID0gJHJvd1sndydd Ow0KCQkJJGNvbF9oWyRrZXldID0gJHJvd1snaCddOw0KCQkJJGNvbF90aHVtYm5haWxbJGtl eV0gPSAkcm93Wyd0aHVtYm5haWwnXTsNCgkJfQ0KCQkvLyBNYWtlIHVwIGFuIGFycmF5X211 bHRpc29ydCBhcmcgbGlzdCBhbmQgZXhlY3V0ZSBpdA0KCQlmb3IgKCRpZHggPSAwOyAkaWR4 IDwgY291bnQoJHBvc3RPcmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNv bF8nLiRwb3N0T3JkZXJbJGlkeF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9y ZGVyWyRpZHhdWydzb3J0J107DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQo Jy5pbXBsb2RlKCIsICIsJHNvcnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7 DQoJfQ0KDQoJLy8gSXMgZml4ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1v cmRlciB0aGUgJHJzDQoJaWYgKCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJh eSgpOw0KCQkkaWdub3JlTGlzdCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5 KCk7DQoJCS8vIFN1Y2sgb3V0IHRoZSBmaXhlZCBpdGVtcyBmaXJzdC4gSURzIHRoZW4gY2F0 ZWdvcmllcw0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGlkaW5jKTsgJGlkeCsr KSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCRpZCAmJiBkb1F1b3Rl KCRyb3dbJ2lkJ10pID09ICRpZGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAk cm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQkJYnJlYWs7DQoJ CQkJfQ0KCQkJfQ0KCQl9DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkY2F0aW5j KTsgJGlkeCsrKSB7DQoJCQlmb3JlYWNoKCRycyBhcyAkcm93KSB7DQoJCQkJaWYgKCRjYXRl Z29yeSAmJiBkb1F1b3RlKCRyb3dbJ2NhdGVnb3J5J10pID09ICRjYXRpbmNbJGlkeF0pIHsN CgkJCQkJJG9yZGVyZWRSU1tdID0gJHJvdzsNCgkJCQkJJGlnbm9yZUxpc3RbXSA9ICRyb3db J2lkJ107DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJCS8vIFRhY2sgb24gdGhlIHJlbWFpbmluZyBy b3dzDQoJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCWlmICghaW5fYXJyYXkoJHJvd1sn aWQnXSwgJGlnbm9yZUxpc3QpKSB7DQoJCQkJJHJlbWFpbmluZ1JTW10gPSAkcm93Ow0KCQkJ fQ0KCQl9DQoJCSRycyA9IGFycmF5X21lcmdlKCRvcmRlcmVkUlMsICRyZW1haW5pbmdSUyk7 DQoJfQ0KDQoJLy8gR3JhYiB0aGUgcG9ydGlvbiBvZiB0aGUgcmVjb3JkIHNldCBhY3R1YWxs eSByZXF1aXJlZCB0byBpdGVyYXRlIG92ZXINCgkkcnMgPSBhcnJheV9zbGljZSgkcnMsICRv ZmZzZXQsICgoJGRpcmVjdG9yeSkgPyAkZGlybGltaXQgOiAoKCRsaW1pdD09MCkgPyAkbWF4 bGltaXQgOiAkbGltaXQpKSk7DQoNCgkvLyBIYW5kbGUgdGh1bWJzaXplIC0gb2YgbGltaXRl ZCB1c2Ugbm93IGJ1dCBzdGlsbCBhdmFpbGFibGUNCgkkdGh1bWJXaWR0aCA9ICR0aHVtYkhl aWdodCA9ICcnOw0KCSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9ICcnOw0KCWlmICgk dGh1bWJzaXplKSB7DQoJCSR0aHVtYlNpemVzID0gZG9fbGlzdCgkdGh1bWJzaXplLCAkZGVs aW0pOw0KCQlpZiAoY291bnQoJHRodW1iU2l6ZXMpID09IDEpIHsNCgkJCSR0aHVtYldpZHRo ID0gJHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6 ZXNbMF0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJT aXplc1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09 ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJfSBlbHNlIHsNCgkJCSR0aHVtYldp ZHRoID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMF0pOw0KCQkJ JHRodW1iSGVpZ2h0ID0gZXJlZ19yZXBsYWNlKCJbXjAtOV0iLCAnJywgJHRodW1iU2l6ZXNb MV0pOw0KCQkJJHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXpl c1swXSk7DQoJCQkkdGh1bWJXVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYldpZHRo ICE9ICcnKSA/ICR0aHVtYldVbml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IGVyZWdfcmVw bGFjZSgiWzAtOV0iLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1iSFVuaXRzID0g KCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0gJycpID8gJHRodW1iSFVuaXRzIDog JHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gQ29sbGF0aW9uIGRlZmVycyBwYXJzaW5nIHRoZSBm b3JtIGZvciBlYWNoIHJldHVybmVkIGl0ZW0uDQoJLy8gSW5zdGVhZCBpdCBvdXRwdXRzIHRo ZSBkYXRhIGFzIGEgbGlzdCBhdCB0aGUgZW5kIChpdGVtcyBtYXkgYmUgaW5kaXZpZHVhbGx5 IHF1b3RlZCBvciBleHRyYWN0ZWQgaWYgcmVxdWlyZWQpDQoJLy9UT0RPIDogQWRkIEFMV0FZ UyBzd2l0Y2ggYXMgYSBzaG9ydGN1dCB0byBzcGVjaWZ5IHRoYXQgYWxsIG1hdGNoaW5nIGl0 ZW1zIChyZWdhcmRsZXNzIG9mICMxLCAjMiwgIzMgZXRjKSBhcmUgdG8gYmUgcXVvdGVkDQoJ aWYgKCRjb2xsYXRlKSB7DQoJCSRkYmxRdW90ZSA9ICRzZ2xRdW90ZSA9IGFycmF5KCdTTURO T05FJyk7DQoJCSRjb2xsYXRlT3B0cyA9IGRvX2xpc3QoJGNvbGxhdGUsICRkZWxpbSk7DQoJ CWZvcmVhY2ggKCRjb2xsYXRlT3B0cyBhcyAkb3B0aW9uKSB7DQoJCQkkaW5kZXhlcyA9IGRv X2xpc3QoJG9wdGlvbiwgJHBhcmFtZGVsaW0pOw0KCQkJJGNvbFR5cGUgPSBhcnJheV9zaGlm dCgkaW5kZXhlcyk7DQoJCQkvLyBTdXBwbHlpbmcgJ3F1b3RlJyBvbiBpdHMgb3duIHdpbGwg ZW1wdHkgdGhlIHJlbGV2YW50IGFycmF5LCBpbXBseWluZyAiQUxMIiBmaWVsZHMgYXJlIHRv IGJlIHF1b3RlZA0KCQkJc3dpdGNoICgkY29sVHlwZSkgew0KCQkJCWNhc2UgInNnbHF1b3Rl IjoNCgkJCQkJJHNnbFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2Ug ImRibHF1b3RlIjoNCgkJCQljYXNlICJxdW90ZSI6DQoJCQkJCSRkYmxRdW90ZSA9ICRpbmRl eGVzOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8vIENvbWJvcyBhcmUgdXNl ci1kZWZpbmVkIGNvbWJpbmF0aW9ucyBvZiByZXBsYWNlbWVudCBtb2RpZmllcnMgKGUuZy4g aWRleHQ6IHtpZH17ZXh0fSwgLi4uDQoJJGNvbWJvcyA9IGFycmF5KCk7DQoJaWYgKCRjb21i bykgew0KCQkkY29tYm8gPSBkb19saXN0KCRjb21ibywgJGRlbGltKTsNCgkJZm9yZWFjaCAo JGNvbWJvIGFzICRuZXdEZWYpIHsNCgkJCWxpc3QoJGRlZlBhcnRzLCAkdW53YW50ZWQpID0g c21kX2RvTGlzdCgkbmV3RGVmLCBmYWxzZSwgJycsIGZhbHNlLCAkcGFyYW1kZWxpbSk7DQoJ CQkkZGVmTmFtZSA9ICJ7Ii5hcnJheV9zaGlmdCgkZGVmUGFydHMpLiJ9IjsNCgkJCSRjb21i b3NbJGRlZk5hbWVdID0gJGRlZlBhcnRzWzBdOw0KCQl9DQoJfQ0KCWlmICgkZGVidWcgPiAx KSB7DQoJCWVjaG8gIisrIENPTUJPcyArKyI7DQoJCWRtcCgkY29tYm9zKTsNCgl9DQoJLy8g Q29uc3RydWN0IHRoZSBvdXRwdXQNCgkkdGh1bWJvdXQgPSBhcnJheSgpOw0KCSRncm91cG91 dCA9IGFycmF5KCk7DQoJJG5hdm91dCA9IGFycmF5KCk7DQoJJG91dCA9IGFycmF5KCk7DQoJ JGNvbGxhdGlvbnMgPSBhcnJheSgpOw0KCSRjaElkZW50aWZpZXIgPSAoJHRodW1iY2hhbmdl KSA/ICJjaGFuZ2VkIiA6ICJvbmNoYW5nZSI7IC8vIFRPRE86IEZpeCB3aGVuICR0aHVtYmNo YW5nZSBpcyByZW1vdmVkDQoNCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hvICIrKyBSRUNP UkQgU0VUICsrIjsNCgkJZG1wKCRycyk7DQoJfQ0KCWlmICgkZGVidWcgPiAzKSB7DQoJCWVj aG8gIisrIEFWQUlMQUJMRSAnPycgVkFSUyArKyI7DQoJCWRtcCgkcHJldGV4dCk7DQoJCWRt cCgkdGhpc2FydGljbGUpOw0KCX0NCg0KCWlmKCRycykgew0KCQkkaWR4ID0gMDsNCgkJJGN0 ciA9IDE7DQoJCSR0aHVtYklkeCA9IDA7DQoJCSR0aHVtYkN0ciA9IDE7DQoJCSRudW1JbWFn ZXMgPSBjb3VudCgkcnMpOw0KCQkkcmVwYWdlbWVudHMgPSBhcnJheSgpOw0KDQoJCS8vIFNl dCB1cCB0aGUgcGFnaW5nIGZlYXR1cmVzIGlmIHJlcXVpcmVkDQoJCWlmICgoJGxpbWl0ID4g MCkgJiYgJHBhZ2luZykgew0KCQkJJG5leHQgPSAoJG51bVBhZ2VzID4gMSAmJiAkdGh1bVBh Z2UgIT0gJG51bVBhZ2VzKTsNCgkJCSRwcmV2ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1Q YWdlID4gMSk7DQoNCgkJCS8vIFJlcGxhY2UgYW55IHBhZ2luZyBpbmZvIGluIHRoZSBxdWVy eSBzdHJpbmcNCgkJCSRwcmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVz dF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlLTEpOw0KCQkJJG5leHRQYWdlID0gc21kX2Fk ZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBhZ2UrMSk7 DQoJCQkkdGhpc1BhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10s ICRnYWxsSUQsICR0aHVtUGFnZSk7DQoJCQkkZmlyc3RQYWdlID0gc21kX2FkZFFTVmFyKCRw cmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAxKTsNCgkJCSRsYXN0UGFnZSA9IHNt ZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJG51bVBhZ2Vz KTsNCg0KCQkJLy8gTGFiZWxzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcGxhY2VtZW50 IHRhZyBhZnRlciBhIHBhcmFtZGVsaW0uDQoJCQkvLyAnZWFybGllcicgYW5kICdsYXRlcicg ZG9uJ3QgaGF2ZSBsYWJlbHMuIEFueXRoaW5nIHNwZWNpZmllZCBhZnRlciBwYXJhbWRlbGlt IGlzIHRoZSBtYXggbnVtYmVyIG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5ID0gYWxsIHBhZ2Vz DQoJCQkkbGFiZWwgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICdGaXJzdCcsDQoJ CQkJCSd7bmF2cHJldn0nID0+ICcmbGFxdW87JywNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4g JycsDQoJCQkJCSd7bmF2dGhpc30nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0aGlzdXJs fScgPT4gJHRodW1QYWdlLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJycsDQoJCQkJCSd7bmF2 bmV4dH0nID0+ICcmcmFxdW87JywNCgkJCQkJJ3tuYXZsYXN0fScgPT4gJ0xhc3QnLA0KCQkJ CSk7DQoNCgkJCSRsYWJlbFJFID0gJy9ceyhuYXZbYS16XSspJy4kcGFyYW1kZWxpbS4nKC4r PylcfS8nOw0KCQkJJG51bUxhYmVscyA9IHByZWdfbWF0Y2hfYWxsKCRsYWJlbFJFLCAkcGFn ZWZvcm0sICRsYWJlbHMpOw0KDQoJCQlmb3IgKCRsYWJlbEN0ciA9IDA7ICRsYWJlbEN0ciA8 ICRudW1MYWJlbHM7ICRsYWJlbEN0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kbGFi ZWxzWzFdWyRsYWJlbEN0cl0uJ30nOw0KCQkJCSRsYWJlbFskZmllbGRuYW1lXSA9ICRsYWJl bHNbMl1bJGxhYmVsQ3RyXTsNCgkJCQkkcGFnZWZvcm0gPSBzdHJfcmVwbGFjZSgkbGFiZWxz WzBdWyRsYWJlbEN0cl0sICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nLCAkcGFnZWZv cm0pOw0KCQkJfQ0KDQoJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCWVjaG8gIisrIFBBR0lO RyBMQUJFTFMgKysiOw0KCQkJCWRtcCgkbGFiZWwpOw0KCQkJfQ0KDQoJCQkvLyBHZW5lcmF0 ZSAnZWFybGllcicgYW5kICdsYXRlcicgbGlzdHMNCgkJCSRudW1FYXJsaWVyID0gaW50dmFs KCRsYWJlbFsne25hdmVhcmxpZXJ9J10pOw0KCQkJJG51bUxhdGVyID0gaW50dmFsKCRsYWJl bFsne25hdmxhdGVyfSddKTsNCgkJCSRudW1FYXJsaWVyID0gKCRudW1FYXJsaWVyICYmICgk dGh1bVBhZ2UtJG51bUVhcmxpZXIgPiAxKSkgPyAkbnVtRWFybGllciA6ICR0aHVtUGFnZS0x Ow0KCQkJJG51bUxhdGVyID0gKCRudW1MYXRlciAmJiAoJHRodW1QYWdlKyRudW1MYXRlciA8 ICRudW1QYWdlcykpID8gJG51bUxhdGVyIDogJG51bVBhZ2VzLSR0aHVtUGFnZTsNCgkJCSRu YXZFYXJsaWVyID0gJG5hdkxhdGVyID0gYXJyYXkoKTsNCgkJCWZvciAoJGNvZCA9ICR0aHVt UGFnZS0kbnVtRWFybGllcjsgJGNvZCA8ICR0aHVtUGFnZTsgJGNvZCsrKSB7DQoJCQkJJG5h dkVhcmxpZXJbXSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVz dF91cmknXSwgJGdhbGxJRCwgJGNvZCkuJyI+Jy4kY29kLic8L2E+JzsNCgkJCX0NCgkJCWZv ciAoJGNvZCA9ICR0aHVtUGFnZSsxOyAkY29kIDw9ICR0aHVtUGFnZSskbnVtTGF0ZXI7ICRj b2QrKykgew0KCQkJCSRuYXZMYXRlcltdID0gJzxhIGhyZWY9Iicuc21kX2FkZFFTVmFyKCRw cmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4nIj4nLiRjb2QuJzwvYT4n Ow0KCQkJfQ0KCQkJJG5hdkVhcmxpZXIgPSBkb1dyYXAoJG5hdkVhcmxpZXIsICcnLCAkbmF2 YnJlYWssICcnKTsNCgkJCSRuYXZMYXRlciA9IGRvV3JhcCgkbmF2TGF0ZXIsICcnLCAkbmF2 YnJlYWssICcnKTsNCg0KCQkJLy8gTWFrZSB1cCB0aGUgcmVwYWdlbWVudHMgYXJyYXkgZm9y IHBhZ2Vmb3JtDQoJCQkkcmVwYWdlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0n ID0+ICgoJHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJGZpcnN0UGFnZS4nIj4nLiRsYWJl bFsne25hdmZpcnN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25h dmZpcnN0fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2cHJldn0n ID0+ICgoJHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJHByZXZQYWdlLiciPicuJGxhYmVs Wyd7bmF2cHJldn0nXS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZw cmV2fSddLCAkbmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2ZWFybGllcn0n ID0+ICRuYXZFYXJsaWVyLA0KCQkJCQkne25hdnRoaXN9JyA9PiBkb1RhZygkbGFiZWxbJ3tu YXZ0aGlzfSddLCAkbmF2YnJlYWssICdjdXJyZW50ICcuJGVtcHR5Y2xhc3MpLA0KCQkJCQkn e25hdnRoaXN1cmx9JyA9PiBkb1RhZygnPGEgaHJlZj0iJy4kdGhpc1BhZ2UuJyI+Jy4kbGFi ZWxbJ3tuYXZ0aGlzdXJsfSddLic8L2E+JywgJG5hdmJyZWFrLCAnY3VycmVudCcpLA0KCQkJ CQkne25hdmxhdGVyfScgPT4gJG5hdkxhdGVyLA0KCQkJCQkne25hdm5leHR9JyA9PiAoKCRu ZXh0KSA/IGRvVGFnKCc8YSBocmVmPSInLiRuZXh0UGFnZS4nIj4nLiRsYWJlbFsne25hdm5l eHR9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bmV4dH0nXSwg JG5hdmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAoKCRuZXh0 KSA/IGRvVGFnKCc8YSBocmVmPSInLiRsYXN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmxhc3R9 J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bGFzdH0nXSwgJG5h dmJyZWFrLCAkZW1wdHljbGFzcykpLA0KCQkJCQkne25hdnRoaXNwYWdldXJsfScgPT4gJHRo aXNQYWdlLA0KCQkJCQkne25hdm5leHRwYWdldXJsfScgPT4gKCgkbmV4dCkgPyAkbmV4dFBh Z2UgOiAnJyksDQoJCQkJCSd7bmF2cHJldnBhZ2V1cmx9JyA9PiAoKCRwcmV2KSA/ICRwcmV2 UGFnZSA6ICcnKSwNCgkJCQkJJ3tuYXZmaXJzdHBhZ2V1cmx9JyA9PiAkZmlyc3RQYWdlLA0K CQkJCQkne25hdmxhc3RwYWdldXJsfScgPT4gJGxhc3RQYWdlLA0KCQkJCQkne3RvdGFsaW1h Z2VzfScgPT4gJG51bUltYWdlcywNCgkJCQkJJ3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2Vz LA0KCQkJCQkne21heGltYWdlc30nID0+ICRhbGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJCS8v IFBlcmZvcm0gdGhlIHN1YnN0aXR1dGlvbnMNCgkJCQkkbmF2b3V0W10gPSBwYXJzZShzdHJ0 cigkcGFnZWZvcm0sICRyZXBhZ2VtZW50cykpOw0KCQl9DQoNCgkJLy8gRm9yIGV2ZXJ5IGlt YWdlIGluIHRoZSBnYWxsZXJ5Li4uDQoJCWZvcmVhY2goJHJzIGFzICRrZXkgPT4gJHJvdykg ew0KCQkJaWYgKCRkaXJlY3RvcnkpIHsNCgkJCQkkdXJsUGF0aCA9ICRyb3dbJ3BhdGgnXS4n Lyc7DQoJCQl9IGVsc2Ugew0KCQkJCSR1cmxQYXRoID0gaHUuJGltZ19kaXIuJy8nOw0KCQkJ fQ0KCQkJJHRoZVRodW1iID0gJHVybFBhdGggLiAkcm93WydpZCddIC4gJHRodW1ibW9kIC4g JHJvd1snZXh0J107DQoJCQkkZnVsbFNpemUgPSAkdXJsUGF0aCAuICRyb3dbJ2lkJ10gLiAk ZnVsbG1vZCAuJHJvd1snZXh0J107DQoNCgkJCS8vIERvIHdlIG5lZWQgdG8gcmVzZXQgdGhl IHRodW1iIGNvdW50ZXIgdGhpcyB0aW1lPw0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0cyBhcyAk cmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJaWYgKCRyb3dbJHJlc2V0T3B0XSAhPSAk cmVzZXRWYWwpIHsNCgkJCQkJJHRodW1iSWR4ID0gMDsNCgkJCQkJJHRodW1iQ3RyID0gMTsN CgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBJcyBhIHRodW1iL3RleHQgb2Jq ZWN0IHJlcXVpcmVkIHRoaXMgdGltZT8NCgkJCSRvYmplY3QgPSAnJzsNCgkJCWlmICgkdGh1 bWJJZHggPj0gJHRodW1ib2Zmc2V0ICYmICR0aHVtYklkeCA8ICR0aHVtYm9mZnNldCskdGh1 bWJsaW1pdCkgew0KCQkJCXN3aXRjaCAoJHR5cGUpIHsNCgkJCQkJY2FzZSAnaW1hZ2UnOg0K CQkJCQkJJG9iamVjdCA9ICgkdGV4dCkgPyAkdGV4dCA6ICc8aW1nIHNyYz0iJy4kdGhlVGh1 bWIuJyInIC4oKCRyb3dbJ2FsdCddKSA/ICcgYWx0PSInLiRyb3dbJ2FsdCddLiciJyA6ICcn KSAuKCgkdGh1bWJXaWR0aCkgPyAnIHdpZHRoPSInLiR0aHVtYldpZHRoLiR0aHVtYldVbml0 cy4nIicgOiAnJykgLigoJHRodW1iSGVpZ2h0KSA/ICcgaGVpZ2h0PSInLiR0aHVtYkhlaWdo dC4kdGh1bWJIVW5pdHMuJyInIDogJycpIC4nIC8+JzsNCgkJCQkJCWJyZWFrOw0KCQkJCX0N CgkJCX0NCg0KCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBhcnJheQ0KCQkJJHJl cGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkne2lkfScgPT4gJHJvd1snaWQnXSwNCgkJCQkJ J3tuYW1lfScgPT4gJHJvd1snbmFtZSddLA0KCQkJCQkne2V4dH0nID0+ICRyb3dbJ2V4dCdd LA0KCQkJCQkne2NhdGVnb3J5fScgPT4gJHJvd1snY2F0ZWdvcnknXSwNCgkJCQkJJ3tjYXRl Z29yeV90aXRsZX0nID0+ICRyb3dbJ2NhdGVnb3J5X3RpdGxlJ10sDQoJCQkJCSd7YXV0aG9y fScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1bWJ9JyA9PiAkcm93Wyd0aHVt Ym5haWwnXSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNpemUsDQoJCQkJCSd7dGh1bWJ1cmx9 JyA9PiAkdGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRofScgPT4gJHVybFBhdGgsDQoJCQkJ CSd7aW1hZ2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNpemUpLA0KCQkJCQkne3RodW1iZGVm fScgPT4gYmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJJ3thbHR9JyA9PiAkcm93WydhbHQn XSwNCgkJCQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRpb24nXSwNCgkJCQkJJ3t0aHVtYndp ZHRofScgPT4gJHRodW1iV2lkdGgsDQoJCQkJCSd7dGh1bWJoZWlnaHR9JyA9PiAkdGh1bWJI ZWlnaHQsDQoJCQkJCSd7dGh1bWJ3dW5pdHN9JyA9PiAkdGh1bWJXVW5pdHMsDQoJCQkJCSd7 dGh1bWJodW5pdHN9JyA9PiAkdGh1bWJIVW5pdHMsDQoJCQkJCSd7d2lkdGh9JyA9PiAkcm93 Wyd3J10sDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHJvd1snaCddLA0KCQkJCQkne2RhdGV9JyA9 PiAkcm93WydkYXRlJ10sDQoJCQkJCSd7b2JqZWN0fScgPT4gJG9iamVjdCwNCgkJCQkJJ3tn YWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2luZGV4fScgPT4gJGlkeCwNCgkJCQkJ J3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0aHVtYmluZGV4fScgPT4gJHRodW1iSWR4 LA0KCQkJCQkne3RodW1iY291bnRlcn0nID0+ICR0aHVtYkN0ciwNCgkJCQkJJ3t0b3RhbGlt YWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7bWF4aW1hZ2VzfScgPT4gJGFsbEltYWdl cywNCgkJCQkpOw0KDQoJCQkvLyBBcHBlbmQgYW55IGNoYW5nZWQgaXRlbXMgdGhhdCBhcmUg cmVxdWlyZWQNCgkJCSRlbmR0YWcgPSBmYWxzZTsNCgkJCWZvcmVhY2ggKCRyZXNldE9wdHMg YXMgJHJlc2V0T3B0ID0+ICRyZXNldFZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3snLiRj aElkZW50aWZpZXIuJHBhcmFtZGVsaW0uJHJlc2V0T3B0Lid9J10gPSAoJHRodW1iSWR4ID09 IDApID8gZG9UYWcoJHJvd1skcmVzZXRPcHRdLCAkb25jaGFuZ2V3cmFwdGFnLCAkb25jaGFu Z2VjbGFzcykgOiAnJzsNCgkJCQkvLyBEbyBhIHNuZWFreSAoeXVrKSBsb29rYWhlYWQNCgkJ CQlpZiAoaXNzZXQoJHJzWyRrZXkrMV0pKSB7DQoJCQkJCWlmKCRyc1ska2V5KzFdWyRyZXNl dE9wdF0gIT0gJHJvd1skcmVzZXRPcHRdKSB7DQoJCQkJCQkkZW5kdGFnID0gdHJ1ZTsNCgkJ CQkJfQ0KCQkJCX0gZWxzZSB7DQoJCQkJCSRlbmR0YWcgPSB0cnVlOyAvLyBMYXN0IGltYWdl DQoJCQkJfQ0KCQkJfQ0KDQoJCQkkcmVwbGFjZW1lbnRzWyd7Z3JvdXB0YWdlbmR9J10gPSAo JGdyb3VwdGFnICYmICRlbmR0YWcpID8gJzwvJyAuICRncm91cHRhZyAuICc+JyA6ICcnOw0K CQkJJHJlcGxhY2VtZW50c1sne2dyb3VwdGFnc3RhcnR9J10gPSAoJGdyb3VwdGFnICYmICR0 aHVtYklkeCA9PSAwKSA/ICc8JyAuICRncm91cHRhZyAuICgoJGdyb3VwY2xhc3MpID8gJyBj bGFzcz0iJy4kZ3JvdXBjbGFzcy4nIicgOiAnJykgLiAnPicgOiAnJzsNCg0KCQkJLy8gQXBw ZW5kIGFueSBjb21ib3MNCgkJCWZvcmVhY2ggKCRjb21ib3MgYXMgJGRlZk5hbWUgPT4gJG5l d0RlZikgew0KCQkJCWlmICghYXJyYXlfa2V5X2V4aXN0cygkZGVmTmFtZSwgJHJlcGxhY2Vt ZW50cykpIHsNCgkJCQkJJHJlcGxhY2VtZW50c1skZGVmTmFtZV0gPSBzdHJ0cigkbmV3RGVm LCAkcmVwbGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIFNvbG9zIGFyZSBpdGVt cyBpbiB0aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1aXJlIGRldGFpbHMgZnJvbSBhIHNwZWNp ZmljIHJvdy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0aW9uDQoJCQkvLyBtb2RlLCB0aGV5IGFy ZSBhZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5IG9uIGFuIGFzLW5lZWRlZCBiYXNp cyB0byBzYXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xvUkUgPSAnL1x7KFthLXowLTldKykjJy4k Y3RyLidcfS8nOw0KCQkJJG51bVNvbG9zID0gcHJlZ19tYXRjaF9hbGwoJHNvbG9SRSwgJHRo aW5nLCAkc29sb3MpOw0KCQkJZm9yICgkc29sb0N0ciA9IDA7ICRzb2xvQ3RyIDwgJG51bVNv bG9zOyAkc29sb0N0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kc29sb3NbMV1bJHNv bG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCQkkZ3JhYmZpZWxkID0gJ3snLiRzb2xvc1sxXVsk c29sb0N0cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVudHNbJGZpZWxkbmFtZV0gPSAkcmVwbGFj ZW1lbnRzWyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJCQkvLyBBZGQgdGhlIG5hdmlnYXRpb24g aXRlbXMgaWYgdGhleSdyZSBkZWZpbmVkDQoJCQlpZiAoY291bnQoJHJlcGFnZW1lbnRzKSA+ IDApIHsNCgkJCQkkcmVwbGFjZW1lbnRzID0gYXJyYXlfbWVyZ2UoJHJlcGFnZW1lbnRzLCAk cmVwbGFjZW1lbnRzKTsNCgkJCX0NCg0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hv ICIrKyBSRVBMQUNFTUVOVFMgOiBJTUFHRSAiLiRjdHIuIiArKyI7DQoJCQkJZG1wKCRyZXBs YWNlbWVudHMpOw0KCQkJfQ0KDQoJCQkvLyBJbiBjb2xsYXRlIG1vZGUgdGhlIGZvcm0gaXMg b25seSBwYXJzZWQgYXQgdGhlIGVuZDogYnVpbGQgYSBjb2xsb3NhbCBtdWx0aS1kaW1lbnNp b24gYXJyYXkgb2YgYWxsIGl0ZW1zIGhlcmUNCgkJCWlmICgkY29sbGF0ZSkgew0KCQkJCWZv cmVhY2ggKCRyZXBsYWNlbWVudHMgYXMgJGRlZk5hbWUgPT4gJGRlZlZhbCkgew0KCQkJCQkk Y29sbGF0aW9uc1skZGVmTmFtZV1bXSA9ICRkZWZWYWw7DQoJCQkJfQ0KCQkJfSBlbHNlIHsN CgkJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJHJlcGxhY2VtZW50cykp Ow0KCQkJfQ0KDQoJCQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHZhbHVlcyBzbyB3 ZSBrbm93IGlmIHRoZXkgY2hhbmdlIG5leHQgdGltZQ0KCQkJZm9yZWFjaCAoJHJlc2V0T3B0 cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJJHJlc2V0T3B0c1skcmVzZXRP cHRdID0gJHJvd1skcmVzZXRPcHRdOw0KCQkJfQ0KCQkJJHRodW1iSWR4Kys7DQoJCQkkdGh1 bWJDdHIrKzsNCgkJCSRpZHgrKzsNCgkJCSRjdHIrKzsNCgkJfQ0KCQlpZiAoJGNvbGxhdGUp IHsNCgkJCWZvcmVhY2ggKCRjb2xsYXRpb25zIGFzICRpdGVtID0+ICRsaXN0KSB7DQoJCQkJ Ly8gUXVvdGUgdGhlIGxpc3RzIGlmIHJlcXVpcmVkDQoJCQkJJGxpc3QgPSAoZW1wdHkoJGRi bFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJGRibFF1b3RlKSkgPyBkb0FycmF5KCRsaXN0 LCAnc21kX2RvRGJsUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRsaXN0ID0gKGVtcHR5KCRzZ2xR dW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRzZ2xRdW90ZSkpID8gZG9BcnJheSgkbGlzdCwg J2RvUXVvdGUnKSA6ICRsaXN0Ow0KCQkJCSRjb2xsYXRpb25zWyRpdGVtXSA9IGltcGxvZGUo JGRlbGltLCAkbGlzdCk7DQoJCQl9DQoJCQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8g IisrIENPTExBVElPTlMgKysiOw0KCQkJCWRtcCgkY29sbGF0aW9ucyk7DQoJCQl9DQoJCQkk dGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGluZywgJGNvbGxhdGlvbnMpKTsNCgkJfQ0K DQoJCS8vIFRhY2sgb24gdGhlIHBhZ2luZyBmcm9tIGVhcmxpZXIgaWYgaXQncyB0byBnbyBh ZnRlcndhcmRzDQoJCWlmICgoJGxpbWl0ID4gMCkgJiYgJHBhZ2luZykgew0KCQkJaWYgKCRk ZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgUkVQTEFDRU1FTlRTICsrIjsNCgkJ CQlkbXAoJHJlcGFnZW1lbnRzKTsNCgkJCX0NCgkJfQ0KCX0NCg0KCS8vIEFkZCB0aGUgcGFn aW5nIHRvIHRoZSBvdXRwdXQgaWYgaXQncyB0byBnbyBhYm92ZSB0aGUgdGh1bWJzDQoJaWYg KCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCWlmIChpbl9hcnJheSgiYWJvdmUiLCAk cGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAkbmF2d3JhcHRhZywg JycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCgkkb3V0W10gPSBkb1dyYXAoJHRodW1ib3V0 LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0KDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAk cGFnaW5nKSB7DQoJCWlmIChpbl9hcnJheSgiYmVsb3ciLCAkcGFnZW91dCkpIHsNCgkJCSRv dXRbXSA9IGRvV3JhcCgkbmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJ CX0NCgl9DQoNCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hvICIrKyBGSU5BTCBPVVRQVVQg KysiOw0KCQlkbXAoJG91dCk7DQoJfQ0KDQoJcmV0dXJuIGpvaW4oIiAiLCAkb3V0KTsNCn0N Cg0KLy8gUmV0dXJuIGFuIGV4cGFuZGVkIGxpc3Qgb2YgaXRlbXM6DQovLyAxKSBBbnl0aGlu ZyBjb250YWluaW5nICc/JyBvciAnIScgaXMgY2hlY2tlZCBmb3IgYSBtYXRjaCB3aXRoIGEg VFhQIGZpZWxkDQovLyAyKSBBbnkgcmFuZ2VzIG9mIGl0ZW1zIGFyZSBleHBhbmRlZCAoZS5n LiA0LTcgPSA0LDUsNiw3KQ0KLy8gMykgVFhQIGZpZWxkcyBtYXkgdGhlbXNlbHZlcyBiZSBs aXN0cyBvciByYW5nZXMNCi8vIDQpIEFueXRoaW5nIHRoYXQgaXMgbm90IGEgVFhQIGZpZWxk IGlzIHVzZWQgdmVyYmF0aW0NCi8vIDUpIFRoZSBpdGVtcyBhcmUgcmV0dXJuZWQgYXMgMiBs aXN0czsgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24NCi8vIEFyZ3M6DQovLyAgbHN0ID0gdGhl IGxpc3QgYXMgYSBkZWxpbWl0ZWQgc3RyaW5nDQovLyAgcm5nID0gd2hldGhlciB0byBhbGxv dyByYW5nZXMgb3Igbm90IChib29sKQ0KLy8gIHN1YiA9IHRoZSB0eXBlIG9mIHN1YmNhdGVn b3J5IHRvIHRyYXZlcnNlIChpbWFnZSwgZmlsZSwgbGluaywgYXJ0aWNsZSwgbm9uZT0iIikg YW5kIGhvdyBtYW55IGxldmVscyB0byBnbyBkb3duIChlLmcuIGltYWdlOjIpDQovLyAgcXRl ID0gd2hldGhlciB0byBxdW90ZSBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5IG9yIG5vdCAoYm9v bCkNCi8vICBkbG0gPSB0aGUgZGVsaW1pdGVyIChzdHJpbmcpDQppZiAoIWZ1bmN0aW9uX2V4 aXN0cygic21kX2RvTGlzdCIpKSB7DQpmdW5jdGlvbiBzbWRfZG9MaXN0KCRsc3QsICRybmc9 dHJ1ZSwgJHN1Yj0iIiwgJHF0ZT10cnVlLCAkZGxtPSIsIikgew0KCWdsb2JhbCAkdGhpc2Fy dGljbGUsICRwcmV0ZXh0Ow0KDQoJJGluYyA9ICRleGMgPSBhcnJheSgpOw0KCSRsc3QgPSBk b19saXN0KCRsc3QsICRkbG0pOw0KCSRtb2RSRSA9ICcvKFw/fFwhKShbQS1aYS16MC05X1wt IF0rKS8nOw0KCWZvcmVhY2ggKCRsc3QgYXMgJGl0ZW0pIHsNCgkJJG1vZCA9IDA7IC8vIDAg PSBpbmNsdWRlLCAxID0gZXhjbHVkZQ0KCQkkbnVtTW9kcyA9IHByZWdfbWF0Y2hfYWxsKCRt b2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCQlmb3IgKCRtb2RDdHIgPSAwOyAkbW9kQ3RyIDwg JG51bU1vZHM7ICRtb2RDdHIrKykgew0KCQkJLy8gbW9kICJ0eXBlIiBpcyBnb3Zlcm5lZCBi eSB0aGUgZmlyc3Qgb25lIGZvdW5kIG9ubHkuIGkuZS4gaWYgImFydGljbGUtP2MhcyIgd2Fz IHVzZWQgaW4gb25lIGZpZWxkDQoJCQkvLyBpdCB3b3VsZCBiZSBhbiAiaW5jbHVkZSIgb2Yg dGhlIHdvcmQgImFydGljbGUtIiBwbHVzIHRoZSBjYXRlZ29yeSBhbmQgc2VjdGlvbiBjb25j YXRlbmF0ZWQNCgkJCSRtb2QgPSAoJG1vZHNbMV1bMF0gPT09ICIhIikgPyAxIDogMDsNCgkJ CSRtb2RDaGFyID0gJG1vZHNbMV1bJG1vZEN0cl07DQoJCQkkbW9kSXRlbSA9IHRyaW0oJG1v ZHNbMl1bJG1vZEN0cl0pOw0KCQkJJGxvd2l0ZW0gPSBzdHJ0b2xvd2VyKCRtb2RJdGVtKTsN CgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRsb3dpdGVtLCAkcHJldGV4dCkpIHsNCgkJCQkk aXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkcHJldGV4dFskbG93aXRl bV0sICRpdGVtKTsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRsb3dpdGVt XSkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAkdGhp c2FydGljbGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCQl9IGVsc2Ugew0KCQkJCSRpdGVtID0g c3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICRtb2RJdGVtLCAkaXRlbSk7DQoJCQl9 DQoJCX0NCg0KCQkvLyBIYW5kbGUgcmFuZ2VzIG9mIHZhbHVlcw0KCQlpZiAoJHJuZyAmJiBw cmVnX21hdGNoKCcvXihcZCspXC0oXGQrKSQvJywgJGl0ZW0pKSB7DQoJCQlsaXN0KCRsbywg JGhpKSA9IGV4cGxvZGUoIi0iLCAkaXRlbSwgMik7DQoJCQkkaXRlbSA9IGltcGxvZGUoJGRs bSwgcmFuZ2UoJGxvLCAkaGkpKTsNCgkJfQ0KDQoJCS8vIEl0ZW0gbWF5IGJlIGVtcHR5OyBp Z25vcmUgaXQgaWYgc28NCgkJaWYgKCRpdGVtKSB7DQoJCQkkaXRlbSA9IGRvX2xpc3QoJGl0 ZW0sICRkbG0pOw0KCQkJLy8gSGFuZGxlIHN1Yi1jYXRlZ29yaWVzDQoJCQlpZiAoJHN1Yikg ew0KCQkJCWxpc3QoJHN1YnR5cGUsICRsZXZlbCkgPSBleHBsb2RlKCI6IiwgJHN1Yik7DQoJ CQkJJGxldmVsID0gKGVtcHR5KCRsZXZlbCkpID8gMCA6ICRsZXZlbDsNCgkJCQkkbGV2ZWwg PSAoc3RydG9sb3dlcigkbGV2ZWwpPT0iYWxsIikgPyA5OTk5OSA6ICRsZXZlbDsNCgkJCQlm b3JlYWNoICgkaXRlbSBhcyAkY2F0KSB7DQoJCQkJCSRjYXRzID0gZ2V0VHJlZShkb3NsYXNo KCRjYXQpLCAkc3VidHlwZSk7DQoJCQkJCWZvcmVhY2ggKCRjYXRzIGFzICRqZHggPT4gJHZh bCkgew0KCQkJCQkJaWYgKCRjYXRzWyRqZHhdWydsZXZlbCddIDw9ICRsZXZlbCkgew0KCQkJ CQkJCSRpdGVtW10gPSAkY2F0c1skamR4XVsnbmFtZSddOw0KCQkJCQkJfQ0KCQkJCQl9DQoJ CQkJfQ0KCQkJfQ0KDQoJCQkvLyBRdW90ZSBpZiBhc2tlZA0KCQkJJGl0ZW0gPSAoJHF0ZSkg PyBkb0FycmF5KCRpdGVtLCAnZG9RdW90ZScpIDogJGl0ZW07DQoJCQlpZiAoJG1vZCA9PT0g MCkgew0KCQkJCSRpbmMgPSBhcnJheV91bmlxdWUoYXJyYXlfbWVyZ2UoJGluYywgJGl0ZW0p KTsNCgkJCX0gZWxzZSB7DQoJCQkJJGV4YyA9IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgk ZXhjLCAkaXRlbSkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBhcnJheSgkaW5jLCAkZXhj KTsNCn0NCn0NCg0KLy8gQWx0ZXJuYXRpdmUgdG8gdGhlIGNvcmUncyBkb1F1b3RlKCkuIFRo aXMgb25lIGRibC1xdW90ZXMgaW5zdGVhZCBvZiBzZ2wtcXVvdGVzDQppZiAoIWZ1bmN0aW9u X2V4aXN0cygic21kX2RvRGJsUXVvdGUiKSkgew0KZnVuY3Rpb24gc21kX2RvRGJsUXVvdGUo JHZhbCkgew0KCXJldHVybiAnIicuJHZhbC4nIic7DQp9DQp9DQoNCi8vIFdvcmsgb3V0IHdo aWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9uIGFuZCByZXR1cm4gdGhlIHJlbGV2YW50IGlu Zm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwgJGxpbWl0LCAkb2Zmc2V0 LCAkcGFnaW5nKSB7DQoJJG51bVRodW1zID0gY291bnQoJHJzKTsNCglpZiAoKCRsaW1pdCA+ IDApICYmICRwYWdpbmcpIHsNCgkJJG51bVBhZ2VzID0gKCRudW1UaHVtcyA+IDApID8gY2Vp bCgkbnVtVGh1bXMvJGxpbWl0KSA6IDE7DQoJCSR0aHVtUGFnZSA9ICghZ3BzKCRnYWxsSUQp KSA/IDEgOiBncHMoJGdhbGxJRCk7DQoJCSRvZmZzZXQgPSAoJHRodW1QYWdlIC0gMSkgKiAk bGltaXQ7DQoJfSBlbHNlIHsNCgkJLy8gTm8gcGFnaW5nIHJlcXVpcmVkDQoJCSRudW1QYWdl cyA9IDE7DQoJCSR0aHVtUGFnZSA9IDE7DQoJfQ0KCXJldHVybiBhcnJheSgkbnVtVGh1bXMs ICRudW1QYWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KTsNCn0NCg0KLy8gUmVhZCB0aGUgZ2l2 ZW4gZGVsaW1pdGVkIGRpcmVjdG9yaWVzIGFuZCBnZXQgYWxsIGZpbGVzIHRoYXQgbWF0Y2gu DQovLyBHbyBkb3duIGFzIG1hbnkgc3ViZGlyIGxldmVscyBhcyBnaXZlbiBpbiB0aGUgJHN1 YiBwYXJhbWV0ZXINCmZ1bmN0aW9uIHNtZF9kb0RpcmVjdG9yeSgkbHN0LCAkbHZsPTAsICRz dWI9MCwgJG1hdGNoPSIiLCAkZGxtPSIsIiwgJGN0cj0wKSB7DQoJbGlzdCgkZGlyaW5jLCAk ZGlyZXhjKSA9IHNtZF9kb0xpc3QoJGxzdCwgZmFsc2UsICRzdWIsIGZhbHNlLCAkZGxtKTsN CglsaXN0KCRtYXRjaGluYywgJG1hdGNoZXhjKSA9IHNtZF9kb0xpc3QoJG1hdGNoLCBmYWxz ZSwgJycsIGZhbHNlLCAkZGxtKTsNCgkkbWF0Y2hpbmMgPSAiLioiIC4oKCRtYXRjaGluYykg PyAiKCIgLmltcGxvZGUoInwiLCRtYXRjaGluYykuIikrLioiIDogIiIpOw0KCSRtYXRjaGV4 YyA9ICgkbWF0Y2hleGMpID8gIi4qKCIgLmltcGxvZGUoInwiLCRtYXRjaGV4YykuIikrLioi IDogInNtZF9nbHJ5XyIubXRfcmFuZCgpOw0KDQoJJHN1YiA9IChlbXB0eSgkc3ViKSkgPyAw IDogJHN1YjsNCgkkc3ViID0gKHN0cnRvbG93ZXIoJHN1Yik9PSJhbGwiKSA/IDk5OTk5IDog JHN1YjsNCgkkZmlsZUxpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRkaXJpbmMgYXMgJGRp cikgew0KCQlpZiAoJGhhbmRsZSA9IEBvcGVuZGlyKCRkaXIpKSB7DQoJCQl3aGlsZSAoKCRm aWxlID0gQHJlYWRkaXIoJGhhbmRsZSkpICE9PSBmYWxzZSkgew0KCQkJCSRmdWxscGF0aCA9 ICRkaXIuRFMuJGZpbGU7DQoJCQkJaWYgKHByZWdfbWF0Y2goIi8iLiRtYXRjaGluYy4iLyIs ICRmdWxscGF0aCkgJiYgIXByZWdfbWF0Y2goIi8iLiRtYXRjaGV4Yy4iLyIsICRmdWxscGF0 aCkpIHsNCgkJCQkJaWYgKGlzX2RpcigkZnVsbHBhdGgpKSB7DQoJCQkJCQlpZiAoKCRmaWxl ID09ICIuIikgfHwgKCRmaWxlPT0gIi4uIikgfHwgKGluX2FycmF5KCRmaWxlLCAkZGlyZXhj KSkgfHwgKCRsdmwgPj0gJHN1YikpIHsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJCX0gZWxz ZSB7DQoJCQkJCQkJLy8gUmVjdXJzZSB0aGUgc3ViZGlyLiBOb3RlIHRoYXQgdGhlICchJyBp cyB0ZW1wb3JhcmlseSBhZGRlZCBiYWNrIHRvIGVhY2ggZGlyZXhjIGl0ZW0NCgkJCQkJCQkk dG1wID0gJGRpcmV4YzsgLy8gRG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBhcnJheQ0K CQkJCQkJCWFycmF5X3Vuc2hpZnQoJHRtcCwgJGZ1bGxwYXRoKTsNCgkJCQkJCQkkc3ViRmls ZXMgPSBzbWRfZG9EaXJlY3RvcnkoaW1wbG9kZSgkZGxtLiIhIiwgJHRtcCksICRsdmwrMSwg JHN1YiwgJG1hdGNoLCAkZGxtLCAkY3RyKTsNCgkJCQkJCQkkZmlsZUxpc3QgPSBhcnJheV9t ZXJnZSgkZmlsZUxpc3QsICRzdWJGaWxlcyk7DQoJCQkJCQkJJGN0ciArPSBjb3VudCgkc3Vi RmlsZXMpOw0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2Ugew0KCQkJ CQkJJGZpbGVzdGF0ID0gc3RhdCgkZnVsbHBhdGgpOw0KCQkJCQkJJGltZ3NpemUgPSBnZXRp bWFnZXNpemUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsncGF0aCddID0g JGRpcjsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnbmFtZSddID0gYmFzZW5hbWUoJGZ1bGxw YXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaWQnXSA9IHByZWdfcmVwbGFjZSgnL1wu LiskLycsICcnLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2FsdCddID0gJyc7 DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhcHRpb24nXSA9ICcnOw0KCQkJCQkJJHBhcnRz ID0gZXhwbG9kZShEUywgJGRpcik7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhdGVnb3J5 J10gPSAoY291bnQoJHBhcnRzKSA+IDEpID8gZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRm aWxlTGlzdFskY3RyXVsnYXV0aG9yJ10gPSBzdHJ2YWwoJGZpbGVzdGF0Wyd1aWQnXSk7DQoJ CQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2RhdGUnXSA9IHN0cmZ0aW1lKCIlWS0lbS0lZCAlSDol TTolUyIsICRmaWxlc3RhdFsnY3RpbWUnXSk7DQoJCQkJCQkkcGFydHMgPSBleHBsb2RlKCIu IiwgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydleHQnXSA9IChjb3VudCgkcGFy dHMpID4gMSkgPyAiLiIuZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3Ry XVsndyddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMF0pIDog Jyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2gnXSA9IChpc19hcnJheSgkaW1nc2l6ZSkp ID8gc3RydmFsKCRpbWdzaXplWzFdKSA6ICcnOw0KCQkJCQl9DQoJCQkJCSRjdHIrKzsNCgkJ CQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRoYW5kbGUpIHsNCgkJCUBjbG9zZWRpcigkaGFuZGxl KTsNCgkJfQ0KCX0NCglyZXR1cm4gJGZpbGVMaXN0Ow0KfQ0KDQppZiAoIWZ1bmN0aW9uX2V4 aXN0cygic21kX3JlbW92ZVFTVmFyIikpIHsNCmZ1bmN0aW9uIHNtZF9yZW1vdmVRU1Zhcigk dXJsLCAka2V5KSB7DQoJJHVybCA9IHByZWdfcmVwbGFjZSgnLyguKikoXD98JiknIC4gJGtl eSAuICc9W14mXSs/KCYpKC4qKS9pJywgJyQxJDIkNCcsICR1cmwgLiAnJicpOw0KCSR1cmwg PSBzdWJzdHIoJHVybCwgMCwgLTEpOw0KCXJldHVybiAoJHVybCk7DQp9DQp9DQoNCmlmICgh ZnVuY3Rpb25fZXhpc3RzKCJzbWRfYWRkUVNWYXIiKSkgew0KZnVuY3Rpb24gc21kX2FkZFFT VmFyKCR1cmwsICRrZXksICR2YWx1ZSkgew0KCSR1cmwgPSBzbWRfcmVtb3ZlUVNWYXIoJHVy bCwgJGtleSk7DQoJaWYgKHN0cnBvcygkdXJsLCAnPycpID09PSBmYWxzZSkgew0KCQlyZXR1 cm4gKCR1cmwgLiAnPycgLiAka2V5IC4gJz0nIC4gJHZhbHVlKTsNCgl9IGVsc2Ugew0KCQly ZXR1cm4gKCR1cmwgLiAnJicgLiAka2V5IC4gJz0nIC4gJHZhbHVlKTsNCgl9DQp9DQp9Ijtz OjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxwIjtzOjQxNjUxOiIJPHA+PGRpdiBpZD0ic21k X2hlbHAiPjwvcD4KCgk8aDEgaWQ9InRvcCI+c21kX2dhbGxlcnk8L2gxPgoKCTxoMiBpZD0i Y29udGVudHMiPkNvbnRlbnRzPC9oMj4KCgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNmZWF0dXJl cyI+RmVhdHVyZXM8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2F1dGhvciI+QXV0aG9yPC9h PjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3Rh bGxhdGlvbjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjdXNhZ2UiPlRhZyB1c2FnZTwvYT4K CTx1bD4KCQk8bGk+PGEgaHJlZj0iI3NtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvYT48L2xp PgoJCTxsaT48YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5HYWxsZXJ5IGZvcm08L2E+Cgk8dWw+ CgkJPGxpPjxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+UmVwbGFjZW1lbnQgdGFnczwvYT48L2xp PgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjcGFnaW5nX2Zvcm0iPlBhZ2luZyBmb3Jt PC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQgdGFn czwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjY29tYm9zIj5Db21ib3M8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NvbGxhdGVfbW9kZSI+Q29sbGF0ZSBtb2RlPC9h PjwvbGk+Cgk8L3VsPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNleGFtcGxlcyI+RXhhbXBsZXM8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NoYW5nZWxvZyI+Q2hhbmdlbG9nPC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNjcmVkaXRzIj5DcmVkaXRzPC9hPjwvbGk+Cgk8L3VsPgoKCTxo MiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8dWw+CgkJPGxpPlN1cHBvcnRzIGFs bCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1dHVyZSBnYWxsZXJ5IHNjcmlwdHMgaW5jbHVk aW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9vbHRpcCwgbGlnaHRib3gsIGxpdGVib3gsIHNs aW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBzbGlkZXNob3csIGZhbmN5em9vbSwgZXRjPC9s aT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwv c3Bhbj4gZGF0YWJhc2UgKG9yIG9wdGlvbmFsbHkgYSBsaXN0IG9mIGRpcmVjdG9yaWVzKSB0 aGF0IG1hdGNoIGNhdGVnb3JpZXMgb3IgSURzPC9saT4KCQk8bGk+VXNlIGFydGljbGUgZmll bGRzIHRvIGhvbGQgbGlzdHMgb2YgaW1hZ2UgY2F0ZWdvcmllcy9JRHMgZm9yIGFydGljbGUt c3BlY2lmaWMgZ2FsbGVyaWVzPC9saT4KCQk8bGk+TXVsdGktbGV2ZWwgc3ViLWNhdGVnb3J5 IHN1cHBvcnQ8L2xpPgoJCTxsaT5HYWxsZXJ5IGxheW91dCBpcyBkZWZpbmVkIGluIGEgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybTwvbGk+CgkJPGxpPkRpcmVjdC1hY2Nl c3MgcGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBsYXlvdXQgb2YgcGFnaW5nIGZl YXR1cmVzIGlzIGNvbnRyb2xsZWQgYnkgYSBzZWNvbmQgZm9ybTwvbGk+CgkJPGxpPlVzZXMg YSB0YWctcmVwbGFjZW1lbnQgc3lzdGVtIGxpa2UgdGhlIHdldF9mb3JfZWFjaF9pbWFnZSBw bHVnaW48L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImF1dGhvciI+QXV0aG9yPC9oMj4KCgk8cD48 YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29u PC9hPi4gRm9yIG90aGVyIHNvZnR3YXJlIGJ5IG1lLCBvciB0byBtYWtlIGEgZG9uYXRpb24s IHNlZSB0aGUgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBw YWdlPC9hPi48L3A+CgoJPGgyIGlkPSJpbnN0YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3Rh bGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBsdWdpbiBmcm9tIGVpdGhlciA8YSBo cmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTU3L3NtZF9nYWxsZXJ5Ij50 ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgc29mdHdhcmUgcGFnZSBhYm92ZSwgcGFzdGUg dGhlIGNvZGUgaW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4g LSZndDsgUGx1Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlz aXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGlj LnBocD9pZD0yNjQ4MiI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJl cG9ydCBvbiB0aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJ PHA+VG8gcmVtb3ZlIHRoZSBwbHVnaW4sIHNpbXBseSBkZWxldGUgaXQgZnJvbSB0aGUgQWRt aW4tJmd0O1BsdWdpbnMgdGFiLjwvcD4KCgk8aDIgaWQ9InVzYWdlIj5Vc2FnZTwvaDI+CgoJ PHA+Rm9yIHNvbWUgaWRlYXMgb24gdXNhZ2Ugc2NlbmFyaW9zLCBzZWUgdGhlIDxhIGhyZWY9 IiNleGFtcGxlcyI+ZXhhbXBsZXM8L2E+LjwvcD4KCgk8cD5UaGUgZ2VuZXJhbCBpZGVhIGlz IHRoYXQgdGhpcyBwbHVnaW4gYWN0cyBhcyBhIGZsZXhpYmxlIGltYWdlIGZpbHRlcjsgbm90 aGluZyBtb3JlLiBUaGUgcGx1Z2luIG9wdGlvbnMgZ292ZXJuIHdoYXQgaW1hZ2VzIGFyZSBw dWxsZWQgb3V0IG9mIHRoZSBkYXRhYmFzZSBhbmQgdGhleSBhcmUgc29ydGVkIGludG8gd2hh dGV2ZXIgb3JkZXIgeW91IGxpa2UuPC9wPgoKCTxwPkFmdGVyIHRoYXQsIGVhY2ggaW1hZ2Ug JiM4MjEyOyBvbmUgYnkgb25lICYjODIxMjsgaGFzIGFsbCBpdHMgYXR0cmlidXRlcyBwYXNz ZWQgdG8gdGhlIDxjb2RlPmZvcm08L2NvZGU+IG9mIHlvdXIgY2hvaWNlOyB5b3Ugc2ltcGx5 IGNob29zZSB0byBkaXNwbGF5IHdoaWNoZXZlciBpbWFnZSBhdHRyaWJ1dGVzIHlvdSBsaWtl IGluIHRoaXMgZm9ybS4gVGhpcyBtZWFucyBhbnkgaW1hZ2UgYXR0cmlidXRlcyBjYW4gYmUg JiM4MjIwO2luamVjdGVkJiM4MjIxOyBkaXJlY3RseSBpbnRvIGFueSBtYXJrdXA7IGl0IGNv dWxkIGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MsIGl0IGNvdWxkIGJl IGNvbnRlbnQsIGl0IGNvdWxkIGJlIGphdmFzY3JpcHQsIG9yIDxzcGFuIGNsYXNzPSJjYXBz Ij5DU1M8L3NwYW4+OyBhbnl0aGluZy4gUGFnaW5hdGlvbiB3b3JrcyB0aGUgc2FtZSB3YXks IGFsbG93aW5nIHlvdSB0byBzcGVjaWZ5IGhvdyB1c2VycyBjYW4gc3RlcCB0aHJvdWdoIHlv dXIgaW1hZ2UgZ2FsbGVyaWVzLjwvcD4KCgk8cD5UaGVyZSBpcyBhbHNvIGEgc3BlY2lhbCBt b2RlIGNhbGxlZCAmIzgyMjA7Y29sbGF0ZSYjODIyMTsgdGhhdCBhbGxvd3MgeW91IHRvIGNv bGxlY3QgYWxsIGltYWdlIGF0dHJpYnV0ZXMgdG9nZXRoZXIgaW50byBhIHNlcmllcyBvZiBi aWcgbG9uZyBsaXN0cyA8ZW0+d2l0aG91dDwvZW0+IGNhbGxpbmcgdGhlIGZvcm0gZXZlcnkg dGltZS4gVGhlIGZvcm0gaXMgdGhlbiBvbmx5IHByb2Nlc3NlZCBvbmNlIGF0IHRoZSBlbmQu PC9wPgoKCTxwPkJldHdlZW4gdGhlc2UgdHdvIG1vZGVzIHlvdSA8ZW0+c2hvdWxkPC9lbT4g YmUgYWJsZSB0byByZWFsaXNlIGFueSBnYWxsZXJ5aW5nIHNvbHV0aW9uOyBub3cgYW5kIGlu IGZ1dHVyZS48L3A+CgoJPGgzIGNsYXNzPSJ0YWcgIiBpZD0ic21kX2dhbGxlcnkiPnNtZF9n YWxsZXJ5PC9oMz4KCgk8cCBjbGFzcz0idGFnLXN1bW1hcnkiPlBsYWNlIG9uZSBvciBtb3Jl IHNtZF9nYWxsZXJ5IHRhZ3MgaW4gYW55IGFydGljbGUsIHBhZ2Ugb3IgZm9ybSwgc3VwcGx5 IGFueSBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnMgdG8gY29uZmlndXJlIGl0IGFuZCB1c2Ug YSBmb3JtIHRvIGRlZmluZSBob3cgdGhlIGdhbGxlcnkgaXMgZGlzcGxheWVkLjwvcD4KCgk8 aDQgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IGxpc3Qgb2YgaW1hZ2UgSURzIHRvIGRpc3BsYXku IE1heSBiZSBpbnRlZ2VycyBvciByYW5nZXMsIGZvciBleGFtcGxlIDxjb2RlPmlkPSZxdW90 OzUsIDQyLCA4LTExJnF1b3Q7PC9jb2RlPiB3b3VsZCBncmFiIGltYWdlcyA1LCA4LCA5LCAx MCwgMTEgYW5kIDQyLiBVc2UgYW4gZXhjbGFtYXRpb24gbWFyayBpbiBmcm9udCBvZiBhIG51 bWJlciBvciByYW5nZSB0byBleGNsdWRlIHRob3NlIGltYWdlcy4gVXNlIGEgcXVlc3Rpb24g bWFyayBhbmQgdGhlIG5hbWUgb2YgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBm aWVsZCB0byByZWFkIHRoZSBsaXN0IG9mIGltYWdlIElEcyBmcm9tIHRoYXQgZmllbGQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDogbGlzdCBvZiBp bWFnZSBjYXRlZ29yaWVzIHRvIGRpc3BsYXkuIFlvdSBtYXkgc3BlY2lmeSBmaXhlZC1uYW1l IGNhdGVnb3JpZXMgKGUuZy4gJiM4MjIwO2FuaW1hbHMmIzgyMjE7KSBvciBhIHF1ZXN0aW9u IG1hcmsgZm9sbG93ZWQgYnkgYW4gYXJ0aWNsZSBmaWVsZCBuYW1lLiBlLmcuIDxjb2RlPmNh dGVnb3J5PSZxdW90O2FuaW1hbHMsIGFydC0/aWQmcXVvdDs8L2NvZGU+IHdvdWxkIGdyYWIg YWxsIGltYWdlcyBmcm9tIGNhdGVnb3J5ICYjODIyMDthbmltYWxzJiM4MjIxOyBhbmQgY2F0 ZWdvcnkgJiM4MjIwO2FydC00MiYjODIyMTsgKGFzc3VtaW5nIHRoZSBjdXJyZW50IGFydGlj bGUgaGFzIGFuIGlkIG9mIDQyKS48ZGl2IGNsYXNzPSJicmVhayI+VXNlIGFuIGV4Y2xhbWF0 aW9uIG1hcmsgdG8gZXhjbHVkZSB0aGUgZ2l2ZW4gY2F0ZWdvcnkgb3IgZmllbGQuIEZpZWxk cyBtYXkgdGhlbXNlbHZlcyBjb250YWluIGxpc3RzIG9mIGNhdGVnb3JpZXMuIFRoZSA8Y29k ZT4/PC9jb2RlPiBmaWVsZCBuYW1lcyBtYXkgYmUgY29tYmluZWQgKGUuZy4gP3MtP2FydGlj bGVfaW1hZ2UpIGJ1dCBiZSBhd2FyZSB0aGF0IGN1c3RvbSBmaWVsZCBuYW1lcyBtYXkgY29u dGFpbiBzcGFjZXM8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3VibGV2 ZWw8L3NwYW4+IDogYW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7 bGV2ZWxzJiM4MjE3OyBkb3duIHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnku IHN1YmxldmVsPSYjODIyMDswJiM4MjIxOyAodGhlIGRlZmF1bHQpIGlzIG9ubHkgdGhlIHRv cC1sZXZlbDsgMSA9IHRvcC1sZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNhdDsgMiA9IHRvcC1s ZXZlbCBwbHVzIHRoZSBuZXh0IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4gc3VibGV2ZWw9JiM4 MjIwO2FsbCYjODIyMTsgaXMgYWxsIHN1Yi1jYXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnNvcnQ8L3NwYW4+IDogcmUtb3JkZXIgdGhlIGltYWdlcyBieSA8Y29kZT5jYXRl Z29yeTwvY29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+bmFtZTwvY29kZT4sIDxjb2RlPmRh dGU8L2NvZGU+LCA8Y29kZT5pZDwvY29kZT4sIGZpbGUgPGNvZGU+ZXh0PC9jb2RlPmVuc2lv biwgPGNvZGU+YWx0PC9jb2RlPiwgPGNvZGU+Y2FwdGlvbjwvY29kZT4sIDxjb2RlPmF1dGhv cjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0PC9jb2RlPiwgPGNv ZGU+aGFzdGh1bWI8L2NvZGU+IGluIGVpdGhlciA8Y29kZT5hc2M8L2NvZGU+ZW5kaW5nIG9y IDxjb2RlPmRlc2M8L2NvZGU+ZW5kaW5nIG9yZGVyLiBUd28gc3BlY2lhbCBjYXNlcyBleGlz dDogPGNvZGU+Zml4ZWQ8L2NvZGU+IG1haW50YWlucyB0aGUgb3JkZXIgeW91IHNwZWNpZmll ZCBpbiB0aGUgaWQgYW5kL29yIGNhdGVnb3J5IGF0dHJpYnV0ZSwgd2hpbGUgPGNvZGU+cmFu ZG9tPC9jb2RlPiBzaHVmZmxlcyB0aGUgb3JkZXIuPGRpdiBjbGFzcz0iYnJlYWsiPk5vdGUg dGhhdCBpZiA8Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYXMgdGhlIGZpcnN0IGl0ZW0g aW4gdGhlIGxpc3QsIHJhbmRvbSBpbWFnZXMgd2lsbCBiZSBwdWxsZWQgZnJvbSB0aGUgZGF0 YWJhc2UgYW5kIHRoZXkgd2lsbCB0aGVuIGJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9y ZGVyIGxpc3RlZCBhZnRlciBpdC4gSWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFu eXdoZXJlIGVsc2UgaW4gdGhlIGxpc3QsIGFueSBzb3J0IGl0ZW1zIGJlZm9yZSBpdCB3aWxs IGRldGVybWluZSB0aGUgb3JkZXIgb2YgZGF0YSBwdWxsZWQgZnJvbSB0aGUgZGF0YWJhc2Us IGFuZCB0aGUgcmVzdWx0cyB3aWxsIHRoZW4gYmUgb3JkZXJlZCByYW5kb21seSAoaW4gdGhh dCBjYXNlLCBhbnkgaXRlbXMgbGlzdGVkIGFmdGVyIHJhbmRvbSB3aWxsIGJlIGlnbm9yZWQu IDxjb2RlPmZpeGVkPC9jb2RlPiBpcywgaG93ZXZlciwgc3RpbGwgaG9ub3VyZWQpPC9kaXY+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhp bXVtIG51bWJlciBvZiBpbWFnZXMgdG8gc2hvdyA8ZW0+cGVyIHBhZ2U8L2VtPi4gMCBvciBv bWl0dGVkID0gdW5saW1pdGVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1heGxp bWl0PC9zcGFuPiA6IHRoZSBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZSB0byBw dWxsIGZyb20gdGhlIGRhdGFiYXNlLiAwIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFuPiA6IHNraXAgdGhpcyBtYW55 IGltYWdlcyBhbmQgc3RhcnQgY291bnRpbmcgdGhlcmVhZnRlcjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj50aHVtYmxpbWl0PC9zcGFuPiA6IHRoZSBtYXhpbXVtIG51bWJlciBv ZiB0aHVtYm5haWxzIHRvIHNob3cuIDAgb3Igb21pdHRlZCA9IGFsbCB0aHVtYnMuIE5vdGUg dGhhdCB0aGlzIGRpZmZlcnMgZnJvbSBsaW1pdDsgeW91IGNhbiBsYXVuY2ggYSAyMC1pbWFn ZSBnYWxsZXJ5IGJ1dCBvbmx5IHNob3cgMSB0aHVtYm5haWwgb24gdGhlIHBhZ2U8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJvZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlz IG1hbnkgdGh1bWJzIGJlZm9yZSBkaXNwbGF5aW5nIDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+ IHRodW1ibmFpbHM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b25jaGFuZ2U8L3Nw YW4+IDogYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gJiM4MjIwO3dhdGNoJiM4MjIxOy4gSXQg dGVsbHMgdGhlIHBsdWdpbiB0aGF0IHlvdSB3YW50IHRvIGJlIG5vdGlmaWVkIHdoZW4gaXRl bXMgaW4gdGhpcyBsaXN0IGNoYW5nZSBjb21wYXJlZCB0byB0aGUgcHJldmlvdXMgaW1hZ2Uu IFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGFz IHlvdXIgPGNvZGU+c29ydDwvY29kZT4gcGFyYW1ldGVyIG9yIHlvdSBtYXkgZ2V0IHNvbWUg ZnJlYWt5IHJlc3VsdHMhIEl0IGRlZmF1bHRzIHRvIDxjb2RlPmNhdGVnb3J5PC9jb2RlPi48 ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBpcyB2ZXJ5IHVzZWZ1bCBmb3Igc3BsaXR0aW5nIGdh bGxlcmllcyBhdCBldmVyeSBjaGFuZ2UgaW4gY2F0ZWdvcnkgYW5kIGRpc3BsYXlpbmcgdGhl IGNhdGVnb3J5IHRpdGxlIGFib3ZlIGVhY2ggZ3JvdXAuIEl0ZW1zIHlvdSB3YXRjaCBhcmUg YWRkZWQgdG8gdGhlIGxpc3Qgb2YgcmVwbGFjZW1lbnQgdGFncyBhbmQgYXJlIGF2YWlsYWJs ZSBieSBwdXR0aW5nICYjODIyMDtvbmNoYW5nZTomIzgyMjE7IGluIGZyb250IG9mIHRoZWly IG5hbWUgKGUuZy4gPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5fTwvY29kZT4gJiM4MjEyOyBz ZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3IgbW9yZSkuIFRoZSBjb2xvbiBk ZWxpbWl0ZXIgY2FuIGJlIGNoYW5nZWQgd2l0aCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPjwv ZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZXdyYXB0YWc8L3Nw YW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGFueSA8Y29kZT5vbmNoYW5nZTwv Y29kZT4gZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZywgZS5nLiA8Y29kZT5vbmNoYW5nZXdy YXB0YWc9JnF1b3Q7aDMmcXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0PC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9uY2hhbmdlY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2YgYW55IG9uY2hhbmdlIGVs ZW1lbnRzIHlvdSBhcmUgd2F0Y2hpbmcuIERlZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+Z3JvdXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRv IG1ha2UgYXZhaWxhYmxlIGFzIGEgcmVwbGFjZW1lbnQgc28geW91IGNhbiB3cmFwIGdyb3Vw cyBvZiBlbGVtZW50cyBhdCBlYWNoIDxjb2RlPm9uY2hhbmdlPC9jb2RlPi4gRGVmYXVsdCBp cyB1bnNldC4gU2VlIDxjb2RlPmdyb3VwdGFnc3RhcnQ8L2NvZGU+IC8gPGNvZGU+Z3JvdXB0 YWdlbmQ8L2NvZGU+IDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwv YT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z3JvdXBjbGFzczwvc3Bhbj4gOiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBvZiBhbnkgPGNv ZGU+Z3JvdXB0YWc8L2NvZGU+LiBEZWZhdWx0IGlzIHVuc2V0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnRleHQ8L3NwYW4+IDogZGlzcGxheSB0aGUgZ2l2ZW4gdGV4dCBpbnN0 ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0ZXh0IGNhbiBjb250YWluIDxjb2RlPj88L2NvZGU+ IGFydGljbGUgZmllbGRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1iPC9z cGFuPiA6IGlmIHlvdSB3aXNoIHRoZSBmdWxsc2l6ZSBpbWFnZXMgZGlzcGxheWVkIGFzIHRo dW1ibmFpbHMsIG9yIGlmIHlvdSB3YW50IHRoZSB0aHVtYm5haWwgZ2FsbGVyeSB0byB1c2Ug dGhlIGZ1bGxzaXplIGltYWdlcywgc3BlY2lmeSBpdCB3aXRoIHRoaXMgYXR0cmlidXRlLiBV c2UgPGNvZGU+dGh1bWI9JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8gc3BlY2lmeSB0aGF0IGJv dGggZnVsbHNpemUgaW1hZ2UgYW5kIHRodW1ibmFpbCBkaXNwbGF5IHRoZSAmIzgyMTY7dCYj ODIxNzsgKHRodW1ibmFpbCkgaW1hZ2UuIFVzZSA8Y29kZT50aHVtYj0mcXVvdDswJnF1b3Q7 PC9jb2RlPiB0byBzcGVjaWZ5IHRoYXQgYm90aCBmdWxsc2l6ZSBhbmQgdGh1bWJuYWlscyB1 c2UgdGhlIGZ1bGwgc2l6ZSBpbWFnZXMuIFlvdSBjYW4gYWxzbyBjaG9vc2Ugb25lIG9yIHRo ZSBvdGhlciBieSBnaXZpbmcgdGhpcyBhdHRyaWJ1dGUgdHdvIG51bWJlcnMgc2VwYXJhdGVk IGJ5IGEgY29sb24uPGRpdiBjbGFzcz0iYnJlYWsiPkZvciAmIzgyMTY7bm9ybWFsJiM4MjE3 OyBvcGVyYXRpb24gJiM4MjEyOyBpLmUuIGZ1bGxzaXplIGltYWdlIGlzIGZ1bGwgc2l6ZSwg dGh1bWJuYWlsIGlzICB0aHVtYiBzaXplZCAmIzgyMTI7IHNwZWNpZnkgPGNvZGU+dGh1bWI9 JnF1b3Q7MDoxJnF1b3Q7PC9jb2RlPi4gVG8gcmV2ZXJzZSB0aGlzLCB1c2UgPGNvZGU+dGh1 bWI9JnF1b3Q7MTowJnF1b3Q7PC9jb2RlPi4gTm90ZSB0aGF0IDxjb2RlPjE6MTwvY29kZT4g YW5kIDxjb2RlPjA6MDwvY29kZT4gYWxzbyB3b3JrIHRvIHNldCBib3RoIGltYWdlcyB0byB0 aGUgc2FtZSBzaXplIGlmIHlvdSBwcmVmZXIgdGhhdCBzeW50YXg8L2Rpdj48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJzaXplPC9zcGFuPiA6IHRha2VzIG9uZSBvciB0 d28gY29tbWEtc2VwYXJhdGVkIG51bWJlcnMgdG8gc3BlY2lmeSB3aWR0aCBhbmQvb3IgaGVp Z2h0IG9mIGFsbCB5b3VyIGdhbGxlcnkgdGh1bWJuYWlscy4gVGhlIGRlZmF1bHQgaXMgaW4g cGl4ZWxzIGlmIHlvdSBkb24mIzgyMTc7dCBzcGVjaWZ5IHVuaXRzLiBNaXNzaW5nIG91dCBv bmUgb3IgdGhlIG90aGVyIHBhcmFtZXRlciAoaS5lLiBoYXZpbmcgYW4gJiM4MjIwO2VtcHR5 JiM4MjIxOyBwYXJhbWV0ZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb21tYSkgd2lsbCBvbmx5 IHNldCBvbmUgb2YgdGhlIGRpbWVuc2lvbnMuIFVzZSBhIHNpbmdsZSB2YWx1ZSB0byBtYWtl IHNxdWFyZSB0aHVtYnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bh bj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIGxh eW91dCB5b3VyIG1hdGNoaW5nIGltYWdlcy4gV2l0aG91dCB0aGlzIGF0dHJpYnV0ZSB0aGUg cGx1Z2luIGFjdHMgYXMgYSBjb250YWluZXIgdGFnPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnBhZ2Vmb3JtPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiBmb3JtIHVzZWQgdG8gc3BlY2lmeSB0aGUgbGF5b3V0IG9mIHlvdXIgcGFnaW5nIG5h dmlnYXRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnaW5nPC9zcGFuPiA6 IHN3aXRjaCBwYWdpbmcgb24gd2l0aG91dCBoYXZpbmcgdG8gc3BlY2lmeSBhIHBhZ2Vmb3Jt LiBXaGVuIHRoaXMgaXMgdXNlZCwgYWxsIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdlIHJl cGxhY2VtZW50IHRhZ3M8L2E+IGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIDxhIGhyZWY9IiNy ZXBfZ2FsbGVyeSI+Z2FsbGVyeSByZXBsYWNlbWVudCB0YWdzPC9hPiBhcyB3ZWxsPC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhZ2Vwb3M8L3NwYW4+IDogdGhlIHBvc2l0aW9u IG9mIHRoZSBwYWdpbmcgYmxvY2suIE9wdGlvbnMgYXJlIDxjb2RlPmJlbG93PC9jb2RlPiAo dGhlIGRlZmF1bHQpLCA8Y29kZT5hYm92ZTwvY29kZT4sIG9yIGJvdGggb2YgdGhlbSBzZXBh cmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmdhbGxlcnlpZDwvc3Bhbj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ug c2hvdWxkIG5ldmVyIG5lZWQgdGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5p cXVlIElEIGJhc2VkIG9uIHRoZSBzdXBwbGllZCBhdHRyaWJ1dGVzLiBJbiB0aGUgdW5saWtl bHkgZXZlbnQgdGhhdCB0d28gaWRlbnRpY2FsIElEcyBhcmUgZ2VuZXJhdGVkIHlvdSBjYW4g b3ZlcnJpZGUgdGhlIElEIGZvciBhIGdhbGxlcnkgd2l0aCB0aGlzIGF0dHJpYnV0ZS48ZGl2 IGNsYXNzPSJicmVhayI+SW50ZXJuYWxseSB0aGUgcGx1Z2luIGdlbmVyYXRlcyBhIDMyLWNo YXJhY3RlciBoYXNoIHN0cmluZyBmb3IgZWFjaCB0YWcsIHRoZW4gcGlja3MgYSA0LWNoYXIg Y29kZSBmcm9tIHRoaXMgc3RyaW5nIChpdCB0YWtlcyBldmVyeSA2dGggY2hhcmFjdGVyIGJ5 IGRlZmF1bHQpLiBZb3UgY2FuIHN1cHBseSBhIHVuaXF1ZSBmaXhlZCBzdHJpbmcgKGUuZy4g PGNvZGU+Z2FsbGVyeWlkPSZxdW90O015R2FsJnF1b3Q7PC9jb2RlPikgb3IgZ2l2ZSBpdCBh IHF1ZXN0aW9uIG1hcmsgYW5kIDIgbnVtYmVycyBzZXBhcmF0ZWQgYnkgYSBjb2xvbiAoZS5n LiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzU6NCZxdW90OzwvY29kZT4pLiBUaGUgZmlyc3Qg bnVtYmVyIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZpbmFsIHN0cmluZyB0byBnZW5lcmF0ZSwg dGhlIHNlY29uZCBudW1iZXIgaXMgaG93IG1hbnkgY2hhcmFjdGVycyB0byBza2lwIGluIHRo ZSAzMi1jaGFyIHN0cmluZyBlYWNoIHRpbWUgaXQgcGlja3Mgb25lLjwvZGl2PjxkaXYgY2xh c3M9ImJyZWFrIj5JbiB0aGlzIGNhc2UgaXQgZ2VuZXJhdGVzIGEgNS1jaGFyYWN0ZXIgc3Ry aW5nIGZyb20gdGhlIGNoYXJhY3RlcnMgaXQgZmluZHMgYXQgcG9zaXRpb25zIDEsNSw5LDEz LCBhbmQgMTcuIElmIHlvdSBvbWl0IHRoZSAybmQgbnVtYmVyIChlLmcuIDxjb2RlPmdhbGxl cnlpZD0mcXVvdDs/NiZxdW90OzwvY29kZT4pIGl0IHdpbGwgYXNzdW1lIGl0JiM4MjE3O3Mg YW4gaW5jcmVtZW50IG9mIDE8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgdGhlIGVudGly ZSBnYWxsZXJ5LCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4g RGVmYXVsdCBpcyB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwv c3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFjaCB0aHVtYm5haWwuIERl ZmF1bHQgaXMgdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3Nw YW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2Yg dGhlIGVudGlyZSBnYWxsZXJ5LiBEZWZhdWx0IGlzIHVuc2V0PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPm5hdndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1 cnJvdW5kIHRoZSBlbnRpcmUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LCBlLmcuIDxjb2RlPndy YXB0YWc9JnF1b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyAmIzgyMjA7dWwmIzgy MjE7PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm5hdmJyZWFrPC9zcGFuPiA6IHRo ZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIGl0ZW0gd2l0aGluIHRoZSA8Y29kZT5w YWdlZm9ybTwvY29kZT4uIERlZmF1bHQgaXMgJiM4MjIwO2xpJiM4MjIxOzwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZjbGFzczwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9 ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBvZiB0aGUgbmF2aWdhdGlvbiB3cmFwdGFn LiBEZWZhdWx0IGlzICYjODIyMDtzbWRfZ2FsbGVyeV9uYXYmIzgyMjE7PC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPmVtcHR5Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgb2YgdGhlIG5hdmlnYXRpb24gaXRlbXMg dGhhdCBhcmUgPGVtPm5vdDwvZW0+IGxpbmtzLiBEZWZhdWx0IGlzICYjODIyMDtlbXB0eSYj ODIyMTs8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGVsaW08L3NwYW4+IDogY2hh bmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgYXR0cmlidXRlIGxpc3RzLiBEZWZh dWx0IGlzIGNvbW1hICgsKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYXJhbWRl bGltPC9zcGFuPiA6IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5aW5nIGludGVy LXBhcmFtZXRlciBhdHRyaWJ1dGVzLiBEZWZhdWx0IGlzIGNvbG9uICg6KTwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5jb2xsYXRlPC9zcGFuPiA6IHN3aXRjaCB0aGUgcGx1Z2lu IGludG8gPGEgaHJlZj0iI2NvbGxhdGVfbW9kZSI+Y29sbGF0ZSBtb2RlPC9hPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb21ibzwvc3Bhbj4gOiBzcGVjaWZ5IHlvdXIgb3du IDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+ZGlyZWN0b3J5PC9zcGFuPiA6IHJlYWQgaW1hZ2VzIGZy b20gYSBsaXN0IG9mIGRpcmVjdG9yaWVzIChvciA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPnMpIGluc3RlYWQgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRh dGFiYXNlICg8c3Ryb25nPmV4cGlyaW1lbnRhbDwvc3Ryb25nPik8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+bWF0Y2g8L3NwYW4+IDogbGltaXQgdGhlIGltYWdlcyBhbmQgZGly ZWN0b3JpZXMgY2hvc2VuIGluIDxjb2RlPmRpcmVjdG9yeTwvY29kZT4gbW9kZS4gR2l2ZSBh IGxpc3Qgb2Ygd29yZHMgdG8gaW5jbHVkZSBvciAhZXhjbHVkZSBhbmQgYW55IG1hdGNoaW5n IGZpbGVzIG9yIGRpcmVjdG9yaWVzIHdpbGwgYmUgY2hvc2VuIG9yIGlnbm9yZWQsIHJlc3Bl Y3RpdmVseS4gVGhlIG1hdGNoIHRlcm1zIGFyZSBhdXRvbWF0aWNhbGx5IGFzc3VtZWQgdG8g YmUgJiM4MjIwO3dpbGQmIzgyMjE7IHNvIGFueSBwYXJ0IG9mIHRoZSBmaWxlIG5hbWUgLyBw YXRoIHdpbGwgdHJpZ2dlciB0aGUgbWF0Y2g8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+ZGVidWc8L3NwYW4+IDogdHVybiBvbiBkaWFnbm9zdGljcy4gVmFyeWluZyBsZXZlbHMg b2YgdmVyYm9zaXR5IGZyb20gMCAobm9uZSkgdG8gNCAoYSBsb3QpPC9saT4KCTwvdWw+CgoJ PGgzIGlkPSJnYWxsZXJ5X2Zvcm0iPkdhbGxlcnkgZm9ybTwvaDM+CgoJPHA+VGhlIDxjb2Rl PmZvcm08L2NvZGU+IGlzIHdoZXJlIHlvdSBkZXNpZ24gd2hhdCBldmVyeSB0aHVtYm5haWwg d2lsbCBsb29rIGxpa2Ugb24gdGhlIHNjcmVlbi4gWW91IGRvIHRoaXMgYnkgc3BlY2lmeWlu ZyBtYXJrdXAgb3IgdGFncyBhcyBub3JtYWwuIEluIGtleSBwbGFjZXMgd2hlcmUgeW91IHdh bnQsIHNheSwgYW4gaW1hZ2UgSUQgLyBhbHQgdGFnIC8gaW1hZ2Ugd2lkdGggdG8gYmUgZGlz cGxheWVkLCB5b3Ugc3BlY2lmeSBzcGVjaWFsIDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVw bGFjZW1lbnQgdGFnczwvYT4uIFRoZXNlIGFyZSByZXBsYWNlZCBmb3IgZWFjaCBpbWFnZSBp biB0dXJuLCB0aHVzIGJ1aWxkaW5nIHVwIHRoZSBnYWxsZXJ5LjwvcD4KCgk8cD5JbiBjb2xs YXRlIG1vZGUsIHRoZSBpbWFnZSBkZXRhaWxzIGFyZSBpbnN0ZWFkIG1hZGUgaW50byBsaXN0 cy4gVGhlIGZvcm0gaXMgb25seSBwcm9jZXNzZWQgb25jZSBhbmQgdGhlIHJlcGxhY2VtZW50 IHRhZ3Mgb3V0cHV0IHRoZSBlbnRpcmUgbGlzdC48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIg aWQ9InJlcF9nYWxsZXJ5Ij5SZXBsYWNlbWVudCB0YWdzOiBnYWxsZXJ5PC9oND4KCgk8dWw+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57aWR9PC9zcGFuPiA6IGltYWdlIElEIChvciwg aW4gZGlyZWN0b3J5IG1vZGUsIHRoZSBmaWxlbmFtZSB3aXRob3V0IGl0cyBleHRlbnNpb24p PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYW1lfTwvc3Bhbj4gOiBmdWxsIGlt YWdlIGZpbGVuYW1lIGFzIGRlZmluZWQgaW4gdGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1 ZGluZyBleHRlbnNpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2V4dH08L3Nw YW4+IDogZmlsZSBleHRlbnNpb24sIGluY2x1ZGluZyBkb3Q8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e2NhdGVnb3J5fTwvc3Bhbj4gOiBpbWFnZSBjYXRlZ29yeSBuYW1lPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntjYXRlZ29yeV90aXRsZX08L3NwYW4+IDog aW1hZ2UgY2F0ZWdvcnkgdGl0bGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2F1 dGhvcn08L3NwYW4+IDogd2hvIHVwbG9hZGVkIHRoZSBpbWFnZTwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57dXJsfTwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiBvZiB0aGUgZnVsbHNpemUgaW1hZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e3RodW1idXJsfTwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBv ZiB0aGUgdGh1bWJuYWlsPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZXBh dGh9PC9zcGFuPiA6IGRpcmVjdG9yeSB0aGUgaW1hZ2UgaXMgaW48L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e2ltYWdlZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUg cGFydCBvZiB0aGUgaW1hZ2UgKGUuZy4gNS5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPnt0aHVtYmRlZn08L3NwYW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2Yg dGhlIHRodW1ibmFpbCAoZS5nLiA1dC5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnthbHR9PC9zcGFuPiA6IGFsdCB0ZXh0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnt0aXRsZX08L3NwYW4+IDogY2FwdGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57ZGF0ZX08L3NwYW4+IDogaW1hZ2UgdXBsb2FkIGRhdGU8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+e3dpZHRofTwvc3Bhbj4gOiBpbWFnZSB3aWR0aDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj57aGVpZ2h0fTwvc3Bhbj4gOiBpbWFnZSBoZWlnaHQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1id2lkdGh9PC9zcGFuPiA6IHRodW1i bmFpbCB3aWR0aCAoaWYgZGVmaW5lZDogc2VlIDxjb2RlPnRodW1ic2l6ZTwvY29kZT4pPC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtaGVpZ2h0fTwvc3Bhbj4gOiB0aHVt Ym5haWwgaGVpZ2h0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYnd1bml0 c308L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIHVuaXRzIChlLmcuIHB4LCAlLCBlbSBldGMp PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmh1bml0c308L3NwYW4+IDog dGh1bWJuYWlsIGhlaWdodCB1bml0czwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 aGFzdGh1bWJ9PC9zcGFuPiA6IGlmIHRoZSBpbWFnZSBoYXMgYW4gYXNzb2NpYXRlZCB0aHVt Ym5haWwgb3Igbm90PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntnYWxsZXJ5aWR9 PC9zcGFuPiA6IGdhbGxlcnkgaWQgeW91IG9yIHRoZSBwbHVnaW4gYXNzaWduZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e29iamVjdH08L3NwYW4+IDogYSBzcGVjaWFsIGl0 ZW0gY29udGFpbmluZyBlaXRoZXIgdGhlIDxjb2RlPnRleHQ8L2NvZGU+IE9SIHRoZSBpbWFn ZSB0YWcgb2YgdGhlIGNvcnJlc3BvbmRpbmcgdGh1bWJuYWlsLCBidXQgPGVtPm9ubHk8L2Vt PiBpZiA8Y29kZT50aHVtYmxpbWl0PC9jb2RlPiBhbGxvd3MgaXQuIGUuZy4gaWYgPGNvZGU+ dGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0aGlzIHZhcmlhYmxlIGlzIG9ubHkg c2V0IGZvciB0aGUgZmlyc3QgdGh1bWJuYWlsIGluIHRoZSBsaXN0OyBldmVyeSBvdGhlciB0 aW1lIGl0IGlzIGVtcHR5PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntjb3VudGVy fTwvc3Bhbj4gOiBpbWFnZSBjb3VudGVyLCBzdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVu dGluZyBlYWNoIHRpbWU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2luZGV4fTwv c3Bhbj4gOiBpbmRleCBjb3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkgbm90 IG11Y2ggdXNlKTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJjb3VudGVy fTwvc3Bhbj4gOiB0aHVtYm5haWwgaW1hZ2UgY291bnRlciwgc3RhcnRpbmcgZnJvbSAxLiBO b3RlIGl0IGlzICYjODIxNjtyZXNldCYjODIxNzsgd2hlbmV2ZXIgYW4gZWxlbWVudCBnaXZl biBpbiA8Y29kZT5vbmNoYW5nZTwvY29kZT4gZGlmZmVycyBmcm9tIHRoZSBwcmV2aW91cyBp dGVtPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmluZGV4fTwvc3Bhbj4g OiBpbmRleCBjb3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkgbm90IG11Y2gg dXNlKS4gSXQgaXMgcmVzZXQgbGlrZSA8Y29kZT57dGh1bWJjb3VudGVyfTwvY29kZT48L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFsaW1hZ2VzfTwvc3Bhbj4gOiB0b3Rh bCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhpcyBwYWdlPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPnttYXhpbWFnZXN9PC9zcGFuPiA6IGFic29sdXRlIG1heGltdW0g bnVtYmVyIG9mIGltYWdlcyBhY3Jvc3MgYWxsIHBhZ2VzPC9saT4KCTwvdWw+CgoJPHA+SW4g YWRkaXRpb24sIGlmIGVpdGhlciA8Y29kZT5wYWdpbmc9JnF1b3Q7MSZxdW90OzwvY29kZT4g b3IgPGNvZGU+cGFnZWZvcm08L2NvZGU+IGhhdmUgYmVlbiBzcGVjaWZpZWQsIGFsbCB0aGUg PGEgaHJlZj0iI3JlcF9wYWdpbmciPnBhZ2luZyByZXBsYWNlbWVudCB0YWdzPC9hPiBhcmUg YXZhaWxhYmxlIHRvby4gSWYgdGhvc2UgYXJlbiYjODIxNzt0IGVub3VnaCwgeW91IGNhbiA8 YSBocmVmPSIjY29tYm9zIj5jcmVhdGUgeW91ciBvd248L2E+IGJ5IGdyb3VwaW5nIGNvbWJp bmF0aW9ucyBvZiB0aGUgYWJvdmUsIG9wdGlvbmFsbHkgd2l0aCBhcnRpY2xlIHZhcmlhYmxl cyBzdWNoIGFzIDxjb2RlPj9leGNlcnB0PC9jb2RlPiwgPGNvZGU+P2tleXdvcmRzPC9jb2Rl PiwgPGNvZGU+P2FydGljbGVfaW1hZ2U8L2NvZGU+LCBldGMuPC9wPgoKCTxwPk90aGVyIHRh Z3MgYXJlIGFkZGVkIGRlcGVuZGluZyBpZiB5b3UgYXJlIHdhdGNoaW5nIGZvciA8Y29kZT5v bmNoYW5nZTwvY29kZT4gZWxlbWVudHMsIG9yIGlmIHlvdSBoYXZlIHNwZWNpZmllZCBhIDxj b2RlPmdyb3VwdGFnPC9jb2RlPi4gSWYgeW91IGFkZGVkIDxjb2RlPm9uY2hhbmdlPSZxdW90 O2F1dGhvciwgY2F0ZWdvcnkmcXVvdDs8L2NvZGU+IHRoZW4gZXZlcnkgdGltZSB0aGUgYXV0 aG9yIG9yIGNhdGVnb3J5IGNoYW5nZWQgY29tcGFyZWQgdG8gdGhlIHByZXZpb3VzIGltYWdl LCBvbmUgb3IgdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIHdvdWxkIGJlY29tZSBhdmFpbGFi bGU7IG5hbWVseSA8Y29kZT57b25jaGFuZ2U6YXV0aG9yfTwvY29kZT4gYW5kIDxjb2RlPntv bmNoYW5nZTpjYXRlZ29yeSk8L2NvZGU+LjwvcD4KCgk8cD5JZiB5b3UgdXNlZCA8Y29kZT5n cm91cHRhZz0mcXVvdDtkaXYmcXVvdDs8L2NvZGU+IGFzIHdlbGwsIHlvdSB3b3VsZCBiZSBn aXZlbiB0d28gbmV3IHJlcGxhY2VtZW50IHRhZ3MgbGFiZWxsZWQgPGNvZGU+Z3JvdXB0YWdz dGFydDwvY29kZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPi4gU2VlICYjODIyMDtl eGFtcGxlIDYmIzgyMjE7I2VnNiBmb3IgZGV0YWlscy48L3A+CgoJPGgzIGlkPSJwYWdpbmdf Zm9ybSI+UGFnaW5nIGZvcm08L2gzPgoKCTxwPkFkZCBnYWxsZXJ5IG5hdmlnYXRpb24gdG8g eW91ciBwYWdlLiBXb3JrcyBpbiBhIHNpbWlsYXIgbWFubmVyIHRvIHRoZSA8YSBocmVmPSIj Z2FsbGVyeV9mb3JtIj5nYWxsZXJ5IGZvcm08L2E+OiBhIHNlcmllcyBvZiA8YSBocmVmPSIj cmVwX3BhZ2luZyI+UmVwbGFjZW1lbnQgVGFnczwvYT4gZ292ZXJuIHdoaWNoIGdhbGxlcnkg bmF2aWdhdGlvbiBpdGVtcyBhcmUgYXZhaWxhYmxlLiBZb3UgY291bGQgY2hvb3NlIHRvIG9u bHkgc2hvdyBuZXh0L3ByZXYuIE9yIHBlcmhhcHMgMXN0IHBhZ2UvbGFzdCBwYWdlLiBPciBu dW1iZXJlZCBwYWdlIGxpbmtzLjwvcD4KCgk8aDQgY2xhc3M9ImF0dHMgIiBpZD0icmVwX3Bh Z2luZyI+UmVwbGFjZW1lbnQgdGFnczogcGFnaW5nPC9oND4KCgk8dWw+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj57bmF2Zmlyc3R9PC9zcGFuPiA6IGZpcnN0IHBhZ2UgKGRlZmF1bHQg bGFiZWw6ICYjODIyMDtGaXJzdCYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntuYXZwcmV2fTwvc3Bhbj4gOiBwcmV2aW91cyBwYWdlIChkZWZhdWx0IGxhYmVsOiAm IzgyMjA7JmxhcXVvOyYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntu YXZlYXJsaWVyfTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1iZXJzIGJlZm9yZSB0aGUgY3VycmVu dCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlzdXJsfTwvc3Bh bj4gOiBjdXJyZW50IHBhZ2Ugd2l0aCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IGxpbmsgdG8gaXRzZWxmPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZ0aGlz fTwvc3Bhbj4gOiBjdXJyZW50IHBhZ2Ugd2l0aG91dCBhIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IGxpbms8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdmxhdGVy fTwvc3Bhbj4gOiBhbnkgcGFnZSBudW1iZXJzIGFmdGVyIHRoZSBjdXJyZW50IHBhZ2U8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdm5leHR9PC9zcGFuPiA6IG5leHQgcGFn ZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwOyZyYXF1bzsmIzgyMjE7KTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj57bmF2bGFzdH08L3NwYW4+IDogbGFzdCBwYWdlIChkZWZhdWx0 IGxhYmVsOiAmIzgyMjA7TGFzdCYjODIyMTspPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntuYXZmaXJzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+ VVJMPC9zcGFuPiB0byBmaXJzdCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PntuYXZwcmV2cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8 L3NwYW4+IHRvIHByZXZpb3VzIHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwv c3Bhbj4gdG8gY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntu YXZuZXh0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3Nw YW4+IHRvIG5leHQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bGFz dHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0 byBsYXN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RvdGFsaW1hZ2Vz fTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQgb24gdGhlIGN1cnJl bnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dG90YWxwYWdlc308L3Nw YW4+IDogdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoaXMgY29sbGVjdGlvbjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiBhYnNvbHV0ZSBt YXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwvbGk+Cgk8L3VsPgoK CTxwPlRoZSBjdXJyZW50IHBhZ2UgaGFzIGEgZml4ZWQgY2xhc3Mgb2YgJiM4MjE2O2N1cnJl bnQmIzgyMTc7IGFuZCBlYWNoIGl0ZW0gaXMsIGJ5IGRlZmF1bHQsIGEgPGNvZGU+Jmx0O2xp Jmd0OzwvY29kZT4gZm9yIGVhc3kgc3R5bGluZy4gVG8gYXZvaWQgYSB6aWxsaW9uIG9wdGlv bnMsIGN1c3RvbSBsYWJlbHMgYXJlIGRlZmluZWQgZGlyZWN0bHkgaW4gdGhlIGZvcm0gaXRz ZWxmLiBUbyBsYWJlbCB0aGUgbGluayB0aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBmaXJzdCBw YWdlIG9mIHRoZSBnYWxsZXJ5IGFzICYjODIyMDsxc3QmIzgyMjE7LCB1c2U6PC9wPgoKCTxw Pjxjb2RlPntuYXZmaXJzdDoxc3R9PC9jb2RlPjwvcD4KCgk8cD5XaXRoIHRoaXMgc3ludGF4 IHlvdSBjYW4gbGFiZWwgbmF2Zmlyc3QsIG5hdmxhc3QsIG5hdnByZXYsIG5hdm5leHQgYW5k IG5hdnRoaXMgKHRoZSAmIzgyMTY7OiYjODIxNzsgZGVsaW1pdGVyIGluIHRoaXMgY2FzZSBp cyBzcGVjaWZpZWQgYnkgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4pLiBZb3UgY2FuIHVzZSB0 aGlzIG1lY2hhbmlzbSB0byByZWFkIDxzcGFuIGNsYXNzPSJjYXBzIj5NTFA8L3NwYW4+IHNu aXBwZXRzLCBlLmc6PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDojI2ZpcnN0TGFiZWwjI308 L2NvZGU+PC9wPgoKCTxwPllvdSBjYW4gb3ZlcnJpZGUgdGhlIG51bWJlciBvZiBpdGVtcyBk aXNwbGF5ZWQgYnkgbmF2ZWFybGllciBhbmQgbmF2bGF0ZXIgYnkgc3BlY2lmeWluZyBhIGNv bG9uIGFuZCBhIG51bWJlci4gU28gdG8gb25seSBzaG93IDIgaXRlbXMgdG8gdGhlIGxlZnQg b2YgdGhlIGN1cnJlbnQgcGFnZSBhbmQgMyBpdGVtcyB0byB0aGUgcmlnaHQsIHVzZSA8Y29k ZT57bmF2ZWFybGllcjoyfSB7bmF2bGF0ZXI6M308L2NvZGU+IGluIHlvdXIgZm9ybS4gSWYg eW91IHdlcmUgb24gcGFnZSA5IG9mIDE1LCB7bmF2ZWFybGllcjo0fSB7bmF2bGF0ZXI6M30g d291bGQgc2hvdyA8Y29kZT4mbHQ7Jmx0OyA1IDYgNyA4IDkgMTAgMTEgMTIgJmd0OyZndDs8 L2NvZGU+PC9wPgoKCTxwPkN1cnJlbnRseSA8Y29kZT57bmF2ZWFybGllcn08L2NvZGU+IGFu ZCA8Y29kZT57bmF2bGF0ZXJ9PC9jb2RlPiBvbmx5IGRpc3BsYXkgYXJhYmljIG51bWVyYWxz LiBBbnkgaWRlYXMgb24gaG93IHRvIG9mZmVyIG90aGVyIGNoYXJhY3RlciBzZXRzIGdyZWF0 bHkgYXBwcmVjaWF0ZWQuPC9wPgoKCTxoMyBpZD0iY29tYm9zIj5Db21ib3M8L2gzPgoKCTxw PklmIHRoZSBidWlsdC1pbiA8YSBocmVmPSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRh Z3M8L2E+IGFyZW4mIzgyMTc7dCBlbm91Z2ggZm9yIHlvdXIgbmVlZHMgb3IgeW91IGZpbmQg eW91cnNlbGYgcmVwZWF0aW5nIHRoZSBzYW1lIGNvbWJpbmF0aW9uIGFuZCB3YW50IHRvIHNh dmUgeW91cnNlbGYgc29tZSB0eXBpbmcsIHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duIHJlcGxh Y2VtZW50IHRhZ3MuIFRoZSBzeW50YXggaXM6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90 O25ld3RhZzE6ZGVmaW5pdGlvbiwgbmV3dGFnMjpkZWZpbml0aW9uLCAuLi4mcXVvdDs8L2Nv ZGU+PC9wPgoKCTxwPiYjODIxNjtkZWZpbml0aW9uJiM4MjE3OyBjYW4gYmUgYW55IGZpeGVk IHRleHQsIGFueSBleGlzdGluZyByZXBsYWNlbWVudCB0YWcsIG9yIGFueSA8Y29kZT4/PC9j b2RlPiBhcnRpY2xlIHZhcmlhYmxlIHNvIHlvdSBjYW4gZ2V0IHJlYWxseSB3aWxkIGhlcmUs IGZvciBleGFtcGxlOjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdpbjpmb3VuZCBp biA/cyBbdGFnZ2VkIHdpdGggP2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9yfV0mcXVvdDs8 L2NvZGU+PC9wPgoKCTxwPk9uY2UgZGVmaW5lZCwgPGNvZGU+e2ltZ2lufTwvY29kZT4gaXMg YXZhaWxhYmxlIHRvIHlvdXIgZ2FsbGVyeSA8Y29kZT5mb3JtPC9jb2RlPiBhbmQgbWlnaHQg YmUgcmVwbGFjZWQgd2l0aCAmIzgyMjA7Zm91bmQgaW4gem9vIFt0YWdnZWQgd2l0aCB6ZWJy YSwgYWZyaWNhLCBzdHJpcGVzLiBQaG90byBieSBCbG9rZV0mIzgyMjE7LiAkcHJldGV4dCBp cyBhbHNvIGF2YWlsYWJsZSBmb3IgdGhvc2UgZ2Vla3Mgd2hvIGtub3cgd2hhdCYjODIxNztz IGluIGl0ICh0ZW1wb3JhcmlseSB1c2UgPGNvZGU+ZGVidWc9JnF1b3Q7NCZxdW90OzwvY29k ZT4gdG8gdmlldyBhbGwgYXZhaWxhYmxlIGFydGljbGUgdmFyaWFibGVzKS48L3A+CgoJPHA+ T25lIHRoaW5nIHRvIHdhdGNoIG91dCBmb3IgaXMgdGhhdCB0aGUgc3BhY2UgY2hhcmFjdGVy IGlzbiYjODIxNzt0IG5lY2Vzc2FyaWx5IGEgZGVsaW1pdGVyIGZvciA8Y29kZT4/PC9jb2Rl PiB2YXJpYWJsZXMgKGJlY2F1c2UgY3VzdG9tIGZpZWxkcyBjYW4gaGF2ZSBzcGFjZXMgaW4g dGhlbSkuIFNvIDxjb2RlPmNvbWJvPSZxdW90O2RvZXNub3R3b3JrOj9zIGluID9jYXRlZ29y eTEmcXVvdDs8L2NvZGU+IHdpbGwgbG9vayBmb3IgYSB2YXJpYWJsZSBsYWJlbGxlZCAmIzgy MjA7cyBpbiYjODIyMTsgYW5kIG9uZSBjYWxsZWQgJiM4MjIwO2NhdGVnb3J5MSYjODIyMTsu IE9ubHkgb25lIG9mIHRob3NlIGV4aXN0cyEgQ2xldmVyIHVzZSBvZiBwYXJlbnRoZXNlcyBv ciBvdGhlciBwdW5jdHVhdGlvbiBjYW4gd29yayByb3VuZCB0aGlzLjwvcD4KCgk8aDMgaWQ9 ImNvbGxhdGVfbW9kZSI+Q29sbGF0ZSBtb2RlPC9oMz4KCgk8cD5JZiB5b3Ugd2FudCB0byBn ZXQgPGVtPnJlYWxseTwvZW0+IGZ1bmt5IHlvdSBjYW4gcHV0IHRoZSBwbHVnaW4gaW50byBh IDJuZCBtb2RlIGNhbGxlZCAmIzgyMjA7Y29sbGF0aW9uIG1vZGUmIzgyMjE7LiBUaGlzIG1l YW5zIHlvdXIgY2hvc2VuIGZvcm0gaXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gZXhlY3V0ZWQg Zm9yIGV2ZXJ5IGltYWdlOyBpdCBpcyBvbmx5IHVzZWQgb25jZSBhdCB0aGUgdmVyeSBlbmQg b2YgdGhlIGxpc3QsIGFmdGVyIGFsbCBpbWFnZXMgaGF2ZSBiZWVuIGludGVybmFsbHkgJiM4 MjIwO2NvbGxlY3RlZCYjODIyMTsuIEluIGVmZmVjdCwgdGhlIHBsdWdpbiBidWlsZHMgdXAg YSBnaWFudCBhcnJheSBvZiBhbGwgbWF0Y2hpbmcgaW1hZ2VzIHJlYWR5IGZvciB5b3UgdG8g b3V0cHV0IHRoZW0gYWxsIGluIG9uZSBnby4gVGhpcyBpcyB2ZXJ5IGhhbmR5IGZvciBkb2lu ZyBzbGlkZXNob3dzIGFuZCBpcyBiZXN0IGV4cGxhaW5lZCBieSBleGFtcGxlOjwvcD4KCgk8 cD48Y29kZT5jb2xsYXRlPSZxdW90OzEmcXVvdDs8L2NvZGU+PC9wPgoKCTxwPnN3aXRjaGVz IGNvbGxhdGlvbiBtb2RlIG9uLiBJZiB0aGUgcGx1Z2luIG1hdGNoZWQgNCBpbWFnZXMgYW5k IHlvdSB3ZXJlIHRvIHVzZSB0aGUgcmVwbGFjZW1lbnQgdGFnIDxjb2RlPntuYW1lfTwvY29k ZT4gaW4geW91ciBmb3JtIGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiB7bmFtZX0KPC9jb2RlPjwv cHJlPgoKCTxwPnlvdSBtaWdodCBnZXQgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+ PGNvZGUgY2xhc3M9ImJsb2NrIj5UaGUgbWF0Y2hpbmcgaW1hZ2VzOiBoZXJvbi5qcGcscGVu Z3Vpbi5qcGcsZW11LmpwZyxwdWZmaW4uanBnCjwvY29kZT48L3ByZT4KCgk8cD5Tb21ldGlt ZXMgaXQmIzgyMTc7cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBwdXQgcXVvdGVzIGFyb3VuZCBl YWNoIGl0ZW0gc28geW91IGNhbiB0ZWxsIGNvbGxhdGUgbW9kZSB0byBkbyB0aGF0IGluc3Rl YWQ6PC9wPgoKCTxwPjxjb2RlPmNvbGxhdGU9JnF1b3Q7cXVvdGU6e25hbWV9JnF1b3Q7PC9j b2RlPjwvcD4KCgk8cD5Zb3Ugd291bGQgdGhlbiBnZXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczogJnF1b3Q7aGVy b24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5qcGcmcXVv dDssJnF1b3Q7cHVmZmluLmpwZyZxdW90Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIGRlbGlt aXRlciAoYSBjb21tYSBpbiB0aGlzIGNhc2UpIGNhbiBiZSBvdmVycmlkZGVuIHdpdGggdGhl IDxjb2RlPmRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuIFlvdSBtYXkgdXNlIDxjb2RlPnNnbHF1 b3RlPC9jb2RlPiB0byB3cmFwIHNpbmdsZSBxdW90ZXMgcm91bmQgdGhlIGl0ZW1zLCBvciAm IzgyMjA7ZGJscXVvdGUmIzgyMjE7IGFzIGEgc3lub255bSBmb3IgJiM4MjIwO3F1b3RlJiM4 MjIxOyBpZiB5b3UgcHJlZmVyLiBZb3UgY2FuIHF1b3RlIG1vcmUgdGhhbiBvbmUgdGhpbmcg YXQgb25jZSBieSBzcGVjaWZ5aW5nIHRoZSBpdGVtcyBhcyBhIGRlbGltaXRlZCBsaXN0Ojwv cD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1b3RlOntuYW1lfTp7YWx0fTp7aW1naW59 JnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD5ZZXMsIHlvdSBjYW4gdXNlIGNvbWJvcyEgVGhlIGRl bGltaXRlciB1c2VkIGJldHdlZW4gaXRlbXMgY2FuIGJlIG92ZXJyaWRlbiB3aXRoIHRoZSA8 Y29kZT5wYXJhbWRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxwPlRoZSBzZWNvbmQg c3BlY2lhbCBmZWF0dXJlIG9mIGNvbGxhdGlvbiBtb2RlIGlzIHRoYXQgeW91IGRvIG5vdCBo YXZlIHRvIGFsd2F5cyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0LiBZb3UgY2FuIGdyYWIgaW5k aXZpZHVhbCBlbnRpdGllcyBmcm9tIHdpdGhpbiB0aGUgaW50ZXJuYWwgYXJyYXkgYnkgdXNp bmcgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiB0aHVzOjwvcD4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntuYW1lfSBtaWdodCBvdXRwdXQgJnF1b3Q7 aGVyb24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZxdW90O2VtdS5qcGcm cXVvdDssJnF1b3Q7cHVmZmluLmpwZyZxdW90OyAoYXMgYmVmb3JlKQoobmFtZSMxfSB3b3Vs ZCBvbmx5IG91dHB1dCBoZXJvbi5qcGcKKG5hbWUjM30gd291bGQgb25seSBvdXRwdXQgZW11 LmpwZwo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHdoZW4gcHVsbGluZyBvdXQgaW5k aXZpZHVhbCBlbnRyaWVzIHRoZXkgPHN0cm9uZz5kbyBub3Q8L3N0cm9uZz4gZ2V0IHF1b3Rl cyBhZGRlZCB0byB0aGVtLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91IHVzZWQgPGNvZGU+ cXVvdGU8L2NvZGU+IG9yIG5vdC4gVGhpcyBpcyBiZWNhdXNlIGl0IGlzIGEgc2luZ2xlIGl0 ZW0gc28geW91IGNhbiBlYXNpbHkgcHV0IHRoZSBxdW90ZXMgaW4gdGhlIGZvcm0gaXRzZWxm ICh2aXo6IDxjb2RlPiZxdW90O3tuYW1lIzJ9JnF1b3Q7PC9jb2RlPik8L3A+CgoJPHA+TWVz c2luZyBhcm91bmQgd2l0aCBwdWxsaW5nIG91dCBpbmRpdmlkdWFsIGl0ZW1zIGFuZCBsaXN0 cyBjYW4geWllbGQgc29tZSB2ZXJ5IGludGVyZXN0aW5nIHJlc3VsdHMgYW5kIGFsbG93cyBz b21lIGNvbXBsZXRlbHkgd2Fja3kgZ2FsbGVyaWVzIHRvIGJlIGdlbmVyYXRlZC4gVHJ5IGNv bWJpbmluZyBzbWRfZ2FsbGVyeSB0YWdzIHdpdGggPGNvZGU+Jmx0O3R4cDppZl9kaWZmZXJl bnQmZ3Q7PC9jb2RlPiBmb3IgYSByZWFsIG1pbmQgc2NyYW1ibGUgOi0pPC9wPgoKCTxoMiBp ZD0iZXhhbXBsZXMiPkV4YW1wbGVzPC9oMj4KCgk8cD5UaGUgZXhhbXBsZXMgYWxsIHVzZSB0 aGUgY2xhc3NpYyB6b28gd2Vic2l0ZS4gTGV0JiM4MjE3O3Mgc3BlY2lmeSBzb21lIHBpY3R1 cmVzIHRvIHB1bGwgb3V0IG9mIHRoZSBkYXRhYmFzZTo8L3A+CgoJPGg0IGlkPSJlZzEiPkV4 YW1wbGUgMTogc2ltcGxlIC8gbGlnaHRib3hlZCBnYWxsZXJ5PC9oND4KCjxwcmUgY2xhc3M9 ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdv cnk9JnF1b3Q7YW5pbWFscyZxdW90OyBzdWJsZXZlbD0mcXVvdDthbGwmcXVvdDsgZm9ybT0m cXVvdDtnYWxsZXJ5JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHB1bGxz IG91dCBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYW5pbWFscyBjYXRlZ29yeSwgaW5jbHVkaW5n IGFsbCBzdWItY2F0ZWdvcmllcywgYW5kIHBhc3NlcyB0aGVtIHRvIHRoZSBmb3JtIGNhbGxl ZCAmIzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9yIHByb2Nlc3NpbmcuIFRoZSBmb3JtIGNvdWxk IGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtp bWcgY2xhc3M9JnF1b3Q7YW5pbWFnZSZxdW90OyBzcmM9JnF1b3Q7e3VybH0mcXVvdDsgYWx0 PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7YWNhcHRpb24m cXVvdDsmZ3Q7e3RpdGxlfSZsdDsvZGl2Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBt ZWFucywgZm9yIGV2ZXJ5IG1hdGNoZWQgaW1hZ2UsIHN1YnN0aXR1dGUgaXRzIDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+LCBhbHQgYW5kIHRpdGxlIHRhZ3MgaW50byB0aGUgcmVs ZXZhbnQgcGxhY2VzLiBUaHVzIHlvdSBnZXQgYSBzZXJpZXMgb2YgaW1hZ2VzIG9uIHRoZSBw YWdlLCB3aGljaCB5b3UgY2FuIHN0eWxlIGFjY29yZGluZ2x5LjwvcD4KCgk8cD5Gb3IgYSBt b3JlIGZhbmN5IG91dHB1dCB1c2luZywgc2F5LCBzbGltYm94LCB5b3UgY291bGQgbG9hZCB0 aGUgcmVsZXZhbnQgbGlicmFyaWVzIGFuZCBzdHlsZXMgaW4gdGhlIDxjb2RlPiZsdDtoZWFk Jmd0OzwvY29kZT4gb2YgeW91ciBwYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQm cXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZn dDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1 b3Q7L2pzL3NsaW1ib3guanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtsaW5rIHJl bD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDsgaHJl Zj0mcXVvdDsvY3NzL3NsaW1ib3guY3NzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5UaGVuIHlvdXIgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvcm0gY291bGQgYmU6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2EgcmVsPSZxdW90 O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9 JnF1b3Q7e2FsdH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxl fSZxdW90OyBoZWlnaHQ9JnF1b3Q7e2hlaWdodH0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRo fSZxdW90OyZndDsKICZsdDt0eHA6dGh1bWJuYWlsIGlkPSZxdW90O3tpZH0mcXVvdDsgLyZn dDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Vm9pbGEhIFVzaW5nIHRoZSBzYW1l IHNtZF9nYWxsZXJ5IHRhZyB5b3UgaGF2ZSBjaGFuZ2VkIHRoZSB3YXkgdGhlIGdhbGxlcnkg cmVuZGVycyBmcm9tIGEgc2ltcGxlIGxpc3QgdG8gYSBmdWxsLWZlYXR1cmVkIHNsaW1ib3gu IFdpdGggdmlydHVhbGx5IHRoZSBzYW1lIGZvcm0geW91IGNhbiBzd2l0Y2ggdGhlIG91dHB1 dCB0byB0aGlja2JveCwgbGlnaHRib3gsIGxpdGVib3gsIG1vb25ib3ggb3Igd2hhdGV2ZXIt eW91LWxpa2UtYm94IGRlcGVuZGluZyBvbiB3aGljaCBsaWJyYXJpZXMgeW91IGxvYWQuIEZv bGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5b3VyIGZhdm91cml0ZSBlZmZlY3QgYW5kIHBs dWcgaXQgaW50byBzbWRfZ2FsbGVyeS48L3A+CgoJPGg0IGlkPSJlZzIiPkV4YW1wbGUgMjog bGF1bmNoIGZyb20gb25lIGltYWdlPC9oND4KCgk8cD5BIGNvbW1vbiByZXF1ZXN0IGlzIHRv IGJlIGFibGUgdG8gJiM4MjIwO2xhdW5jaCYjODIyMTsgYSBzbGltYm94IGdhbGxlcnkgZnJv bSBhIHNpbmdsZSBpbWFnZSBvciB0ZXh0IGxpbmsuIFVzaW5nIGEgc2luZ2xlIGltYWdlOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAgIGlkPSZxdW90Oz9h cnRpY2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVsPSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09 JnF1b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxpbWl0PSZxdW90OzEmcXVvdDsgLyZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0aGlzIHRpbWUgd2UgYXJlIGFkZGluZyB0byB0 aGUgZ2FsbGVyeSB0aGUgaW1hZ2UocykgcHVsbGVkIGZyb20gdGhlIGFydGljbGUgaW1hZ2Ug ZmllbGQgb2YgdGhlIGN1cnJlbnQgYXJ0aWNsZS4gVGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNw ZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+IHJlcGxhY2VtZW50IHRhZyBzbyBpdCBvbmx5 IGRpc3BsYXlzIHRoZSB0aHVtYm5haWwgaWYgdGhlIHZhbHVlIG9mIHRodW1ibGltaXQgaGFz IDxzdHJvbmc+bm90PC9zdHJvbmc+IGJlZW4gcmVhY2hlZDo8L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSByZWw9JnF1b3Q7bGlnaHRib3gtc21k JnF1b3Q7IGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1 cmUgb2Yge3RpdGxlfSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+Q2hhbmdlIHRoZSBzdGFydCBpbWFnZSBieSBzcGVjaWZ5aW5nIDxjb2RlPnRo dW1ib2Zmc2V0PC9jb2RlPiAmIzgyMTI7IG5vdGUgdGhpcyB3aWxsIGFsc28gc3RhcnQgdGhl IGxpZ2h0Ym94IGVmZmVjdCBmcm9tIHRoZSBpbWFnZSB5b3UgY2hvb3NlLiBJZiB5b3Ugd2Fu dCB0byBzdGFydCBvbiBhIHNwZWNpZmljIGltYWdlIGluIHBvc2l0aW9uIDEsIHVzZSB0aGUg PGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBicmluZyBpdCB0byB0aGUgdG9wIG9mIHRo ZSBsaXN0LCBvciBjaGFuZ2UgdGhlIHNvcnQgb3JkZXIuPC9wPgoKCTxwPklmIHlvdSB3YW50 ZWQgdG8gbGF1bmNoIHRoZSBnYWxsZXJ5IGZyb20gYSB0ZXh0IGxpbmssIGFkZCA8Y29kZT50 ZXh0PSZxdW90O0NsaWNrIHRvIHN0YXJ0IGxpZ2h0Ym94JnF1b3Q7PC9jb2RlPi48L3A+CgoJ PGg0IGlkPSJlZzMiPkV4YW1wbGUgMzogcG9wdXAgZ2FsbGVyeTwvaDQ+CgoJPHA+VG8gYWNo aWV2ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byByc3NfdGh1bWJwb3AsIGFkZCBhbiBpbWFnZSBh bmQgY2FwdGlvbiBwbGFjZWhvbGRlciBvdXRzaWRlIHRoZSBjYWxsIHRvIHNtZF9nYWxsZXJ5 LCB0aGVuIGluY2x1ZGUgeW91ciBzbWRfZ2FsbGVyeSB0YWcgYXMgdXN1YWwuIFRoaXMgdGlt ZSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGFsbCB0aGUgcGljdHVyZXMgZnJvbSB0aGUg Y2F0ZWdvcmllcyB1cCB0byB0d28gbGV2ZWxzIGJlbG93IGJvdGggJiM4MjIwO2FuaW1hbHMm IzgyMjE7LCBwbHVzIHdoaWNoZXZlciBjYXRlZ29yaWVzIGFyZSBsaXN0ZWQgaW4gPGNvZGU+ bXlfY3VzdG9tX2ZpZWxkPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUg Y2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVv dDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxs Y2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgc3Vi bGV2ZWw9JnF1b3Q7MiZxdW90OwogICAgIGNhdGVnb3J5PSZxdW90O2FuaW1hbHMsID9teV9j dXN0b21fZmllbGQmcXVvdDsKICAgICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlRoZSBnYWxsZXJ5IGZvcm0gbG9va3Mgc2NhcnkgYnV0IGlz IG9ubHkgYSB0aHVtYm5haWwgaW1hZ2Ugc3Vycm91bmRlZCBieSBhIHNpbXBsZSBhbmNob3Ig dGFnIHdpdGggdHdvIGFjdGlvbnMgYXNzaWduZWQgdG8gaXQ6IGEgbW91c2VvdmVyIHRvIGNv cHkgdGhlIHBpY3R1cmUgYW5kIGNhcHRpb24gaW50byB0aGUgcGxhY2Vob2xkZXI7IGFuZCBh IG1vdXNlb3V0IHRvIHJlbW92ZSB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgdGl0bGU9JnF1 b3Q7e3RpdGxlfSZxdW90OwogICAgIG9ubW91c2VvdmVyPSZxdW90O2RvY3VtZW50LmdldEVs ZW1lbnRCeUlkKCYjMzk7ZnVsbHNpemUmIzM5Oykuc3JjID0gdGhpcy5ocmVmOwogICAgIGRv Y3VtZW50LmdldEVsZW1lbnRCeUlkKCYjMzk7ZnVsbGNhcHRpb24mIzM5OykuaW5uZXJIVE1M ID0gdGhpcy50aXRsZTsgcmV0dXJuIGZhbHNlOyZxdW90OwogICAgIG9ubW91c2VvdXQ9JnF1 b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6ZSYjMzk7KS5zcmMgPSAm IzM5Oy9pbWFnZXMvMTcuanBnJiMzOTs7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo JiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSAmIzM5OyYjMzk7OyByZXR1cm4g ZmFsc2U7JnF1b3Q7Jmd0OwogICZsdDtpbWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsg YWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZndDsKPC9jb2RlPjwvcHJlPgoK CTxwPk5vdGUgdGhlcmUgYXJlIG11Y2ggbmVhdGVyIHdheXMgb2YgZG9pbmcgdGhpcyAoalF1 ZXJ5PykgYW5kIGl0JiM4MjE3O3Mgbm90IHJlY29tbWVuZGVkIHRvIHVzZSB0aGlzIGZvcm0g aW4gYSBsaXZlIHNpdGUsIGJ1dCBpdCBnaXZlcyBhIGZsYXZvdXIgb2Ygd2hhdCBpcyBwb3Nz aWJsZS48L3A+CgoJPGg0IGlkPSJlZzQiPkV4YW1wbGUgNDogc2xpZGVzaG93PC9oND4KCgk8 cD5UaGlzIG9uZSB1c2VzIGNvbGxhdGUgbW9kZSBidXQgaXMgbm90IG11Y2ggbW9yZSBkaWZm aWN1bHQgdG8gdW5kZXJzdGFuZC4gSW4geW91ciA8Y29kZT4mbHQ7aGVhZCZndDs8L2NvZGU+ IHNlY3Rpb246PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+ Jmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7 L2pzL21vb3Rvb2xzLmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0OwombHQ7c2NyaXB0IHR5 cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvc2xpZGVzaG93 LmpzJnF1b3Q7Jmd0OyZsdDsvc2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIHRh Zzo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9nYWxsZXJ5CiAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0m cXVvdDtnYWxsZXJ5JnF1b3Q7CiAgY29tYm89JnF1b3Q7aW1nbGlzdDp7aWR9e2V4dH0mcXVv dDsKICBjb2xsYXRlPSZxdW90O3F1b3RlOntpbWdsaXN0fTp7YWx0fSZxdW90OyAvJmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBwdWxscyBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYmly ZHMgYW5kIGZpc2ggY2F0ZWdvcmllcy4gQWx0aG91Z2ggdGVjaG5pY2FsbHkgdW5uZWNlc3Nh cnksIGEgY29tYm8gaGFzIGJlZW4gZGVmaW5lZCB0byBzaG93IGhvdyBpdCBjYW4gYmUgdXNl ZC4gVGhpcyBjb21ibyBpcyBjYWxsZWQgPGNvZGU+aW1nbGlzdDwvY29kZT4gYW5kIGlzIGRl ZmluZWQgYXMgdGhlIGltYWdlJiM4MjE3O3MgSUQgbnVtYmVyIHBsdXMgaXRzIGV4dGVuc2lv bi4gV2UgdXNlIHRoaXMgaW4gdGhlIGNvbGxhdGUgYXR0cmlidXRlIGFuZCB0ZWxsIGl0IHRv IHB1dCBkb3VibGUgcXVvdGVzIHJvdW5kIGV2ZXJ5IGl0ZW0gaW4gJiM4MjE2O2ltZ2xpc3Qm IzgyMTc7IGFuZCAmIzgyMTY7YWx0JiM4MjE3Oy4gVGhlbiB3ZSBjYW4gcHV0IHRoZXNlIHZh bHVlcyBpbnRvIHRoZSBuZWNlc3NhcnkgamF2YXNjcmlwdCB0byBnZW5lcmF0ZSB0aGUgc2xp ZGVzaG93OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDtkaXYgY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7IGlkPSZxdW90O3NsaWRlc2hvdzEm cXVvdDsmZ3Q7CiAmbHQ7aW1nIHNyYz0mcXVvdDsmbHQ7dHhwOnNpdGVfdXJsIC8mZ3Q7aW1h Z2VzL3tpZCMxfS5qcGcmcXVvdDsKICAgICBhbHQ9JnF1b3Q7e2FsdCMxfSZxdW90OyB3aWR0 aD0mcXVvdDt7d2lkdGgjMX0mcXVvdDsgaGVpZ2h0PSZxdW90O3toZWlnaHQjMX0mcXVvdDsg LyZndDsKJmx0Oy9kaXYmZ3Q7CjwvY29kZT4KPGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2Ny aXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7Jmd0OwpteVNob3cxID0gbmV3 IFNsaWRlc2hvdygmcXVvdDtzbGlkZXNob3cxJnF1b3Q7LAogIHsgaHU6ICZxdW90OyZsdDt0 eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMvJnF1b3Q7LAogICAgaW1hZ2VzOiBbe2ltZ2xpc3R9 XSwKICAgIGNhcHRpb25zOiBbe2FsdH1dLAogICAgY2xhc3NlczogWyZxdW90O3ByZXYmcXVv dDssJnF1b3Q7bmV4dCZxdW90OywmcXVvdDthY3RpdmUmcXVvdDtdLAogICAgdHlwZTogJnF1 b3Q7ZmFkZSZxdW90OwogIH0pOwombHQ7L3NjcmlwdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxw Pk5vdGUgdGhhdCB0aGUgaW5pdGlhbCBwb3J0aW9uIChpbiB0aGUgZGl2IGFuZCBpbWcgdGFn cykgdXNlcyB0aGUgJiM4MjE2OyMmIzgyMTc7IG5vdGF0aW9uIGJlY2F1c2Ugd2Ugb25seSB3 YW50IHRvIGRpc3BsYXkgb25lIGltYWdlIHRvICYjODIyMDtzdGFydCYjODIyMTsgdGhlIHNs aWRlc2hvdy4gSW4gdGhpcyBjYXNlIHdlJiM4MjE3O3JlIHVzaW5nIHRoZSBmaXJzdCBpbWFn ZSBpbiB0aGUgbGlzdCwgYnV0IHlvdSBjYW4gY2hhbmdlIHRoZSAjMSBmb3IgIzQyIGlmIHlv dSB3YW50ZWQgdG8gc2hvdyB0aGUgZm9ydHktc2Vjb25kIGltYWdlIGluc3RlYWQhIFRoZSBw YXJ0IGluIHRoZSBzY3JpcHQgdGFnIHVzZXMgdGhlIGZ1bGwsIHF1b3RlZCBsaXN0cyBiZWNh dXNlIHRoYXQmIzgyMTc7cyB0aGUgZm9ybWF0IHRoZSBqYXZhc2NyaXB0IHJlcXVpcmVzLjwv cD4KCgk8aDQgaWQ9ImVnNSI+RXhhbXBsZSA1OiBwYWdpbmF0aW9uPC9oND4KCgk8cD5UbyBh ZGQgcGFnaW5nIHRvIGEgZ2FsbGVyeSB5b3UgdXNlIHRoZSA8Y29kZT5saW1pdDwvY29kZT4g YXR0cmlidXRlIHRvIHNob3cgYSBudW1iZXIgb2YgdGh1bWJzIHBlciBwYWdlLiBGb3IgYSBw YWdlZCB0aHVtYnBvcCBnYWxsZXJ5IHRoYXQgc2hvd3MgZml2ZSB0aHVtYnMgcGVyIHBhZ2U6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBp ZD0mcXVvdDtmdWxsc2l6ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVv dDsgLyZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9z cGFuJmd0OwombHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVv dDsKICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgcGFnZWZvcm09JnF1b3Q7Z2FsbGVyeV9u YXYmcXVvdDsKICBsaW1pdD0mcXVvdDs1JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5UaGUgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvcm0gaXMgaWRlbnRpY2FsIHRvIHRoZSBv bmUgaW4gPGEgaHJlZj0iI2VnNCI+ZXhhbXBsZSA0PC9hPiwgd2hpbGUgeW91ciBnYWxsZXJ5 X25hdiBmb3JtIG1pZ2h0IGxvb2sgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtkaXYgY2xhc3M9JnF1b3Q7dG90YWwmcXVvdDsm Z3Q7IyBvZiBwaWNzOiB7dG90YWxpbWFnZXN9Jmx0Oy9kaXYmZ3Q7CiAgICAge25hdmZpcnN0 fSB7bmF2cHJldn0KICAgICB7bmF2ZWFybGllcn0ge25hdnRoaXN9IHtuYXZsYXRlcn0KICAg ICB7bmF2bmV4dH0ge25hdmxhc3R9CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IG1pZ2h0IHJl bmRlciBzb21ldGhpbmcgc2ltaWxhciB0byB0aGlzIGJlbG93IHRoZSB0aHVtYnM6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+IyBvZiBwaWNzOiAzOAog ICAgIEZpcnN0ICZsdDsgMSAyIDMgNCA1IDYgNyA4ICZndDsgTGFzdAo8L2NvZGU+PC9wcmU+ CgoJPGg0IGlkPSJlZzYiPkV4YW1wbGUgNjogb25jaGFuZ2U8L2g0PgoKCTxwPklmIHlvdSB3 YW50IHRvIHNpbXVsYXRlIG11bHRpcGxlIGdhbGxlcmllcyBmcm9tIG9uZSBzbWRfZ2FsbGVy eSB0YWcgeW91IGNhbiB1c2UgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IHRvICYjODIyMDt3YXRj aCYjODIyMTsgZm9yIHdoZW4gY2VydGFpbiBhdHRyaWJ1dGVzIG9mIGltYWdlcyBjaGFuZ2Ug YW5kIGluc2VydCBzcGVjaWFsIHRhZ3MgPGVtPm9ubHkgd2hlbiBzb21ldGhpbmcgY2hhbmdl czwvZW0+LiBJbiB0aGlzIHJlZ2FyZCBpdCBhY3RzIGxpa2UgYSBzb3VwZWQtdXAgdmVyc2lv biBvZiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGJ1aWx0LWluIDxj b2RlPiZsdDt0eHA6aWZfZGlmZmVyZW50Jmd0OzwvY29kZT4gdGFnLjwvcD4KCgk8cD5Zb3Ug Y2FuIHdhdGNoIHRoZSB1c3VhbCB0aGluZ3MgbGlrZSA8Y29kZT5jYXRlZ29yeTwvY29kZT4s IDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+aGVpZ2h0 PC9jb2RlPiwgPGNvZGU+ZXh0PC9jb2RlPmVuc2lvbiBhbmQgc28gb24uIEhlcmUmIzgyMTc7 cyBhbiBleGFtcGxlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2dhbGxlcnkKICAgICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlz aCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtj YXRlZ29yeV90aXRsZSZxdW90OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90 OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+U2luY2UgdGhlIHBsdWdpbiBub3JtYWxseSBz b3J0cyBieSBjYXRlZ29yeSwgdGhpcyB3aWxsIGhhdmUgdGhlIGVmZmVjdCBvZiBhZGRpbmcg b25lIHJlcGxhY2VtZW50IHRhZyA8Y29kZT57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9PC9j b2RlPiBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgdGhlIHRodW1iIGxpc3QgYW5kIGFsc28g d2hlbiB0aGUgY2F0ZWdvcnkgc3dpdGNoZXMgZnJvbSAmIzgyMTY7YmlyZHMmIzgyMTc7IHRv ICYjODIxNjtmaXNoJiM4MjE3Oy4gVGh1cyB5b3VyIGdhbGxlcnkgZm9ybSBjb3VsZCBiZTo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57b25jaGFuZ2U6 Y2F0ZWdvcnlfdGl0bGV9CiZsdDthIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsgcmVsPSZxdW90 O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsmZ3Q7CntvYmplY3R9CiZsdDsvYSZndDsKPC9j b2RlPjwvcHJlPgoKCTxwPlRoYXQgd291bGQgbWFrZSB0d28gbGlnaHRib3hhYmxlIHNldHMg b2YgdGh1bWJuYWlscyB3aXRoIGEgaGVhZGluZyAzIGFib3ZlIGVhY2ggZ3JvdXAgY29udGFp bmluZyB0aGUgY2F0ZWdvcnkgdGl0bGUuPC9wPgoKCTxwPk5vdGUgdGhhdCBpZiB5b3UgYWRk IDxjb2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdG8gdGhlIHNtZF9nYWxs ZXJ5IHRhZyB5b3UgY2FuIHNob3cganVzdCBvbmUgdGh1bWJuYWlsIGluIGVhY2ggZ3JvdXAs IHdpdGggaGVhZGluZ3MgYWJvdmUgZWFjaCB0aHVtYi4gVmlzaXRvcnMgY2xpY2tpbmcgdGhl IHRodW1iIHdpbGwgbGF1bmNoIHRoZSBsaWdodGJveCBhbmQgYmUgYWJsZSB0byBicm93c2Ug dGhlIHJlbGV2YW50IGNhdGVnb3J5LjwvcD4KCgk8cD5BbiBleHRyYSBwYWlyIG9mIHJlcGxh Y2VtZW50IHRhZ3MgYXJlIGF2YWlsYWJsZSBpZiB5b3Ugd2lzaCB0byB3cmFwIHRoZSBvYmpl Y3RzIHRoZW1zZWx2ZXMgdG8gZ3JvdXAgdGhlbS4gVXNlIHRoZSA8Y29kZT5ncm91cHRhZzwv Y29kZT4gYW5kIDxjb2RlPmdyb3VwY2xhc3M8L2NvZGU+IGF0dHJpYnV0ZXMgdG8gc2V0IGl0 IHVwLCB0aGVuIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyBjYWxsZWQgPGNvZGU+Z3JvdXB0 YWdzdGFydDwvY29kZT4gYW5kIDxjb2RlPmdyb3VwdGFnZW5kPC9jb2RlPiBiZWNvbWUgYXZh aWxhYmxlLiBUaGV5IGFyZSBjb25kaXRpb25hbCBhbmQgYXJlIG9ubHkgcG9wdWxhdGVkIHdo ZW4gdGhlIGF0dHJpYnV0ZXMgeW91IGFyZSB3YXRjaGluZy9zb3J0aW5nIGJ5IGNoYW5nZS4g VXNlIGl0IGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1 b3Q7CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVvdDsgZm9ybT0mcXVvdDtn YWxsZXJ5JnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7Y2F0ZWdvcnlfdGl0bGUmcXVvdDsK ICAgICBvbmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVvdDsKICAgICBncm91cHRhZz0mcXVv dDtkaXYmcXVvdDsgZ3JvdXBjbGFzcz0mcXVvdDtib3gmcXVvdDsgLyZndDsKPC9jb2RlPjwv cHJlPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+e29uY2hhbmdl OmNhdGVnb3J5X3RpdGxlfQp7Z3JvdXB0YWdzdGFydH0KJmx0O2EgaHJlZj0mcXVvdDt7dXJs fSZxdW90OyByZWw9JnF1b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVj dH0KJmx0Oy9hJmd0Owp7Z3JvdXB0YWdlbmR9CjwvY29kZT48L3ByZT4KCgk8cD5Ob3RlIHRo YXQgeW91IGNhbiBtb3ZlIHRoZSA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiB0byBzdXJy b3VuZCB0aGUgPGNvZGU+b25jaGFuZ2U8L2NvZGU+ZCB0aXRsZSBpZiB5b3Ugd2lzaC48L3A+ CgoJPGgyIGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHA+QWxsIGF2YWlsYWJs ZSB2ZXJzaW9ucyBhbmQgY2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUuPC9wPgoKCTxwPjxzdHJv bmc+QmV0YTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZlYiAwOCB8IDAuMSB8IElu aXRpYWwgcmVsZWFzZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+CgkJ PGxpPjE5IEZlYiAwOCB8IDAuMiB8IEFkZGVkIHtnYWxsZXJ5aWR9ICh0aGFua3MgcmxvYWRl cnJvKSBhbmQgc29tZSBza2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5P ZmZpY2lhbDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjExIE1hciAwOCB8IDAuMyB8IE9m ZmljaWFsIHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFk ZGVkIHtjb3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyBqYWtv Yik8L2xpPgoJCTxsaT4xNSBNYXIgMDggfCAwLjMxIHwgRml4ZWQgYSBjb3VwbGUgb2YgdW5k ZWZpbmVkIGluZGV4ZXMgYW5kIGFkZGVkIHtjYXRlZ29yeV90aXRsZX0gKHRoYW5rcyBqc3R1 YmJzKTwvbGk+CgkJPGxpPjE3IE1hciAwOCB8IDAuMzIgfCBGaXhlZCBhbm90aGVyIHVuZGVm aW5lZCBpbmRleCBhbmQgcmVtb3ZlZCBib2d1cyBjYWxsIHRvIHNtZF9saWIgKGJvdGggdGhh bmtzIHNlY3VuZGFyKTwvbGk+CgkJPGxpPjIxIE1hciAwOCB8IDAuMzMgfCBEaWQgdjAuMzEg cHJvcGVybHksIGluY2x1ZGluZyB0YWJsZSBwcmVmaXggKHRoYW5rcyBuYXJkbyk8L2xpPgoJ CTxsaT4wMSBBcHIgMDggfCAwLjM0IHwgRml4ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwv c3Bhbj4gcGFyZW50aGVzaXMgYnVnIDsgYWRkZWQgZW1wdHljbGFzcyBhbmQge21heGltYWdl c30gKHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDggQXByIDA4IHwgMC40IHwgQ2hh bmdlZCB0aHVtYiB0byBhbGxvdyB0aHVtYi9mdWxsc2l6ZSBzd2FwcGluZyA7IEFkZGVkIHRo dW1iY2hhbmdlLCB0aHVtYmNoYW5nZXdyYXB0YWcsIHRodW1iY2hhbmdlY2xhc3MsIHt0aHVt YmluZGV4fSwge3RodW1iY291bnRlcn0gYW5kIHRoZSB7Y2hhbmdlZDoqfSByZXBsYWNlbWVu dCB0YWdzICh0aGFua3MgZnVscyk8L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjQxIHwgRml4 ZWQgRGlyZWN0b3J5IHNlcGFyYXRvciAodGhhbmtzIGN1ZGEpIDsgYWRkZWQgcmF3IHBhZ2Ug PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zIHRvIHRoZSBuYXYgcmVwbGFjZW1lbnQg YXJyYXkgYW5kIG1hZGUgdGhlIG5hdiBhcnJheSBhdmFpbGFibGUgaW4gdGhlIHN0YW5kYXJk IHJlcGxhY2VtZW50cyBhcnJheSAodGhhbmtzIHZpc3VhbHBlb3BsZSk8L2xpPgoJCTxsaT4y NyBNYXkgMDggfCAwLjQyIHwgQWRkZWQgcGFnZXBvcyBhbmQgbWFkZSBwYWdlIGJsb2NrcyBp bmRlcGVuZGVudCBvZiB0aHVtYiBibG9jayAodGhhbmtzIGR1Y2hhbXApPC9saT4KCQk8bGk+ MTAgSnVuIDA4IHwgMC40MyB8IEZpeGVkIHNvcnQ9JiM4MjIwO2ZpeGVkJiM4MjIxOyB3aGVu IHVzaW5nIGxpbWl0ICh0aGFua3Mgcm9iaW43NDYpIDsgYWRkZWQgcGVyLWdyb3VwIG9uY2hh bmdlIHdyYXBwaW5nIGFuZCBhbGxvd2VkIGZpeGVkIHNvcnRpbmcgb2YgY2F0ZWdvcmllcyAo dGhhbmtzIGpzdHViYnMpIDsgZGVwcmVjYXRlZCB0aHVtYmNoYW5nZSogYW5kIHJlbmFtZWQg YXMgb25jaGFuZ2UqIDsgZml4ZWQgJGlkeCBjb3VudGVyIHByb2JsZW08L2xpPgoJCTxsaT4x MCBKdW4gMDggfCAwLjQ0IHwgQXR0ZW1wdCAjMiBhdCBwZXItZ3JvdXAgb25jaGFuZ2Ugd3Jh cHBpbmcgKHRoYW5rcyBhZ2FpbiBqc3R1YmJzKTwvbGk+CgkJPGxpPjE0IEp1bCAwOCB8IDAu NDUgfCBGaXhlZCBsYWNrIG9mIG91dHB1dCB3aGVuIG5vdCB1c2luZyBjYXRlZ29yaWVzICh0 aGFua3Mgcm9iaW43NDYpPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJjcmVkaXRzIj5DcmVkaXRz PC9oMj4KCgk8cD5UaGlzIHBsdWdpbiB3b3VsZG4mIzgyMTc7dCBoYXZlIGV4aXN0ZWQgd2l0 aG91dCB0aGUgYXdlc29tZSBtaW5kIG9mIFJvYmVydCBXZXR6bG1heXIuIEhpcyB3ZXRfZm9y X2VhY2hfaW1hZ2UgcGx1Z2luIGlzIHRydWUgZ2VuaXVzOyB0aGlzIHNpbXBseSBzdGFuZHMg b24gdGhlIHNob3VsZGVycyBvZiB0aGF0IGlkZWEgYW5kIHJvbGxzIGluIGEgc291cGVkIHVw IHZlcnNpb24gb2YgdGhlIHRodW1ibmFpbCBnZW5lcmF0aW9uIGVuZ2luZSBmcm9tIHNtZF9z bGltYm94LiBUbyB0aGF0IGVuZCwgdGhlIHBsdWdpbiBpcyBhbHNvIGluZGVidGVkIHRvIGFu eW9uZSB3aG8gaGFzIHBvc3RlZCBmZWF0dXJlcyBvciBidWcgcmVwb3J0cyB0byBtZSBvciB0 aGUgc21kX3NsaW1ib3ggdGhyZWFkLiBZb3UmIzgyMTc7cmUgYWxsIG1hcnZlbGxvdXMuPC9w PgoKCTxwPjwvZGl2PjwvcD4KPCEtLSAtLS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+Cjxz dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVpZ2h0OjEuNSA7fQoj c21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEwNSUvMTMwJSAiQ291 cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQtY29sb3I6ICNGRkZG Q0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVy OjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpi bG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0KI3NtZF9oZWxw IGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBjOyB0ZXh0LWRlY29y YXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJv dHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6YWN0aXZlIHsgY29s b3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMnB4IHNv bGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBoMSB7IGNvbG9yOiAj MzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1h bGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xp ZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZvbnQ6IDE3cHggR2Vv cmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjogIzA3OTsgZm9udDog Ym9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJn aW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRleHQtZGVjb3JhdGlv bjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDExcHggQXJpYWwsIHNh bnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDAgO3RleHQt dHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsgZm9udC13ZWlnaHQ6 Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7 IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDo5MCU7 IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQs ICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9 CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0KI3NtZF9oZWxwIGxp IHsgbWFyZ2luOjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJn aW4tdG9wOjVweDsgfQo8L3N0eWxlPgo8IS0tIC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+ CiI7czozOiJtZDUiO3M6MzI6ImQzN2ExNzZkNjIwODRkM2I3M2RmMTFjOWQ5MjA0YzhjIjt9