# Name: smd_calendar v0.4 # Type: Client side plugin # Calendar / event / schedule system with events as TXP articles # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMDp7czo0OiJuYW1lIjtzOjEyOiJzbWRfY2FsZW5kYXIiO3M6NjoiYXV0aG9yIjtzOjEx OiJTdGVmIERhd3NvbiI7czoxMDoiYXV0aG9yX3VyaSI7czoyMjoiaHR0cDovL3N0ZWZkYXdz b24uY29tLyI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuNCI7czoxMToiZGVzY3JpcHRpb24iO3M6 NjI6IkNhbGVuZGFyIC8gZXZlbnQgLyBzY2hlZHVsZSBzeXN0ZW0gd2l0aCBldmVudHMgYXMg VFhQIGFydGljbGVzIjtzOjQ6ImNvZGUiO3M6NjAxNTQ6Ii8vIEJhc2VkIG9uIG1kcF9jYWxl bmRhciAtIHRoYW5rcyBNYXJzaGFsbCENCi8vVE9ETzogSW52ZXN0aWdhdGUNCi8qDQokZCA9 IG5ldyBEYXRlVGltZSgnMjAwOC0xMi0yMiAxMjo1MicpOw0KZWNobyAkZC0+Z2V0VGltZXpv bmUoKS0+Z2V0TmFtZSgpOw0KKi8NCmlmKCAkZGF0ZSA9IGdwcygnZGF0ZScpICkgew0KCSRf R0VUWydtb250aCddID0gJGRhdGU7DQp9DQpmdW5jdGlvbiBzbWRfY2FsZW5kYXIoJGF0dHMs ICR0aGluZz0nJykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkdmFyaWFi bGUsICRwcmVmcywgJHNtZF9jYWxfZmxhZywgJHNtZF9kYXRlLCAkc21kX2NhbGluZm8sICRz bWRfY2FsX3VjbHM7DQoNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndGltZScgPT4gJ2Fu eScsDQoJCSdzaXplJyA9PiAnbGFyZ2UnLA0KCQknZXhwaXJlZCcgPT4gJycsDQoJCSdjYXRl Z29yeScgPT4gJycsDQoJCSdzZWN0aW9uJyA9PiAnJywNCgkJJ2F1dGhvcicgPT4gJycsDQoJ CSdyZWFsbmFtZScgPT4gJycsDQoJCSdzdGF0dXMnID0+ICdsaXZlJywNCgkJJ3Nob3dhbGwn ID0+ICcwJywNCgkJJ3N0YXRpYycgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ3NwYW5m b3JtJyA9PiAnU01EX1NBTUUnLA0KCQkncmVjdXJmb3JtJyA9PiAnU01EX1NBTUUnLA0KCQkn Y2VsbGZvcm0nID0+ICcnLA0KCQknc3RlcGZpZWxkJyA9PiAnJywNCgkJJ3NraXBmaWVsZCcg PT4gJycsDQoJCSdvbWl0ZmllbGQnID0+ICcnLA0KCQknZXh0cmFmaWVsZCcgPT4gJycsDQoJ CSdleHRyYXN0cmljdCcgPT4gJzAnLA0KCQknc2hvd3NraXBwZWQnID0+ICcwJywNCgkJJ3No b3dzcGFubmVkJyA9PiAnMScsDQoJCSdob2xpZGF5cycgPT4gJycsDQoJCSdob2xpZGF5Zmxh Z3MnID0+ICdzdGFuZGFyZCcsDQoJCSdjbGFzc2xldmVscycgPT4gJ2NlbGwsIGV2ZW50JywN CgkJJ2xpbmtwb3N0ZWQnID0+ICdyZWN1ciwgbXVsdGksIG11bHRpcHJldiwgbXVsdGlsYXN0 JywNCgkJJ2NsYXNzcHJlZml4ZXMnID0+ICdzbWRfY2FsXywgc21kX2NhbF9ldl8nLA0KCQkn Y2xhc3MnID0+ICcnLA0KCQkncm93Y2xhc3MnID0+ICcnLA0KCQknY2VsbGNsYXNzJyA9PiAn JywNCgkJJ2VtcHR5Y2xhc3MnID0+ICdlbXB0eScsDQoJCSdpc293ZWVrY2xhc3MnID0+ICd3 ZWVrJywNCgkJJ25hdmNsYXNzJyA9PiAnbmF2cHJldiwgbmF2bmV4dCcsDQoJCSduYXZhcnJv dycgPT4gJyYjNjA7LCAmIzYyOycsDQoJCSduYXZpZCcgPT4gJycsDQoJCSdldmVudGNsYXNz ZXMnID0+ICdjYXRlZ29yeScsDQoJCSdldmVudHdyYXB0YWcnID0+ICdzcGFuJywNCgkJJ3Nl bGVjdCcgPT4gJycsDQoJCSdzZWxlY3RidG4nID0+ICcnLA0KCQknbXljbGFzcycgPT4gJycs DQoJCSdteXdyYXB0YWcnID0+ICcnLA0KCQknaWQnID0+ICcnLA0KCQknd2VlaycgPT4gJycs DQoJCSdtb250aCcgPT4gJycsDQoJCSd5ZWFyJyA9PiAnJywNCgkJJ3llYXJ3aWR0aCcgPT4g JzAnLA0KCQknaXNvd2Vla3MnID0+ICcnLA0KCQknZGF5Zm9ybWF0JyA9PiAnQUJCUicsDQoJ CSdtb250aGZvcm1hdCcgPT4gJ0ZVTEwnLA0KCQknZmlyc3RkYXknID0+IDAsDQoJCSdtYWlu dGFpbicgPT4gJ2NhbGlkJywNCgkJJ25hbWV2YWwnID0+ICcnLA0KCQknZ210JyA9PiAwLA0K CQknbGFuZycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykpOw0KDQoJJGZ1 dHVyZSA9ICggJHRpbWUgIT0gJ3Bhc3QnICkgPyB0cnVlIDogZmFsc2U7IC8vIERldGVybWlu ZSBoZWFkaW5nIHN0eWxlDQoJJHN0YXR1cyA9ICgkc3RhdHVzKSA/ICRzdGF0dXMgOiAnbGl2 ZSc7IC8vIGluIGNhc2Ugc3RhdHVzIGhhcyBiZWVuIGVtcHRpZWQNCgkkZmlyc3RkYXkgPSAo JGlzb3dlZWtzID09ICcnKSA/ICRmaXJzdGRheSA6IDE7DQoJJHNwYW5mb3JtID0gKCRzcGFu Zm9ybSA9PSAnU01EX1NBTUUnKSA/ICRmb3JtIDogJHNwYW5mb3JtOw0KCSRyZWN1cmZvcm0g PSAoJHJlY3VyZm9ybSA9PSAnU01EX1NBTUUnKSA/ICRmb3JtIDogJHJlY3VyZm9ybTsNCgkk Y2VsbGZvcm0gPSAoZW1wdHkoJGNlbGxmb3JtKSkgPyAnJyA6IGZldGNoX2Zvcm0oJGNlbGxm b3JtKTsNCgkkZnJvbnRwYWdlID0gKCRzZWN0aW9uPT0nJyAmJiAkcHJldGV4dFsncyddPT0n ZGVmYXVsdCcpID8gdHJ1ZSA6IGZhbHNlOw0KDQoJLy8gU2V0IHVwIHRoZSBjbGFzcyBwcmVm aXhlcw0KCSRjbGV2cyA9IGRvX2xpc3QoJGNsYXNzbGV2ZWxzKTsNCgkkY2xzID0gZG9fbGlz dCgkY2xhc3NwcmVmaXhlcyk7DQoJJGNsYXNzcHJlZml4ID0gJGV2Y2xhc3NwcmVmaXggPSAk Y2xzWzBdOw0KCWlmIChjb3VudCgkY2xzKSA+IDEpew0KCQkkZXZjbGFzc3ByZWZpeCA9ICRj bHNbMV07DQoJfQ0KDQoJLy8gU2V0IHVwIHRoZSBuYXYgY2xhc3MoZXMpDQoJJG1haW50YWlu ID0gZG9fbGlzdCgkbWFpbnRhaW4pOw0KCSRuYXZhcnJvdyA9IGRvX2xpc3QoJG5hdmFycm93 KTsNCgkkbmF2cGFyciA9ICRuYXZhcnJvd1swXTsNCgkkbmF2bmFyciA9IChjb3VudCgkbmF2 YXJyb3cpID4gMSkgPyAkbmF2YXJyb3dbMV0gOiAkbmF2YXJyb3dbMF07DQoJJG5hdmNsYXNz ID0gZG9fbGlzdCgkbmF2Y2xhc3MpOw0KCSRuYXZwY2xhc3MgPSAkbmF2Y2xhc3NbMF07DQoJ JG5hdm5jbGFzcyA9IChjb3VudCgkbmF2Y2xhc3MpID4gMSkgPyAkbmF2Y2xhc3NbMV0gOiAk bmF2Y2xhc3NbMF07DQoNCgkvLyBGaWx0ZXJzDQoJJGZvcHRzID0gYXJyYXkoKTsNCgkkY2F0 U1FMID0gJHNlY1NRTCA9ICRhdXRoU1FMID0gJGZwU1FMID0gJyc7DQoJaWYoJGNhdGVnb3J5 KSB7DQoJCSRmb3B0c1snYyddID0gJGNhdGVnb3J5Ow0KCQkkY2F0U1FMID0gZG9RdW90ZShq b2luKCInLCciLCBkb1NsYXNoKGRvX2xpc3QoJGNhdGVnb3J5KSkpKTsNCgkJJGNhdFNRTCA9 ICIgQU5EICggQ2F0ZWdvcnkxIElOICgiLiRjYXRTUUwuIikgT1IgQ2F0ZWdvcnkyIElOICgi LiRjYXRTUUwuIikgKSAiOw0KCX0NCglpZigkc2VjdGlvbikgew0KCQkkc2VjcyA9IGRvX2xp c3QoJHNlY3Rpb24pOw0KCQkkc21kX2NhbGluZm9bJ3MnXSA9ICRzZWNzWzBdOw0KCQkkc2Vj U1FMID0gZG9RdW90ZShqb2luKCInLCciLCBkb1NsYXNoKCRzZWNzKSkpOw0KCQkkc2VjU1FM ID0gIiBBTkQgU2VjdGlvbiBJTiAoIi4kc2VjU1FMLiIpICI7DQoJfQ0KCWlmKCRyZWFsbmFt ZSkgew0KCQkkYXV0aG9ycyA9IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4cF91c2VycycsICdS ZWFsTmFtZSBJTiAoJy4gZG9RdW90ZShqb2luKCInLCciLCBkb0FycmF5KGRvX2xpc3QoJHJl YWxuYW1lKSwgJ3VybGRlY29kZScpKSkgLicpJyApOw0KCQkkYXV0aG9yID0gam9pbignLCcs ICRhdXRob3JzKTsNCgl9DQoJaWYoJGF1dGhvcikgew0KCQkkZm9wdHNbJ2F1dGhvciddID0g aHRtbGVudGl0aWVzKGdwcygnYXV0aG9yJykpOw0KCQkkYXV0aFNRTCA9IGRvUXVvdGUoam9p bigiJywnIiwgZG9TbGFzaChkb19saXN0KCRhdXRob3IpKSkpOw0KCQkkYXV0aFNRTCA9ICIg QU5EIEF1dGhvcklEIElOICgiLiRhdXRoU1FMLiIpICI7DQoJfQ0KCWlmICgkZnJvbnRwYWdl ICYmICEkc2hvd2FsbCkgew0KCQkkZnBTUUwgPSBmaWx0ZXJGcm9udFBhZ2UoKTsNCgl9DQoJ JHNtZF9jYWxpbmZvWydhcnRpZCddID0gJHRoaXNhcnRpY2xlWyd0aGlzaWQnXTsNCgkkc21k X2NhbGluZm9bJ2FydGl0bGUnXSA9ICR0aGlzYXJ0aWNsZVsndXJsX3RpdGxlJ107DQoJJG5h bWV2YWwgPSBkb19saXN0KCRuYW1ldmFsKTsNCglmb3JlYWNoICgkbmFtZXZhbCBhcyAkbnYp IHsNCgkJJG52ID0gZXhwbG9kZSgiPSIsICRudik7DQoJCWlmICgkbnZbMF0pIHsNCgkJCSRm b3B0c1skbnZbMF1dID0gKChpc3NldCgkbnZbMV0pKSA/ICRudlsxXSA6ICcnKTsNCgkJfQ0K CX0NCgkkc3RhdHVzID0gZG9fbGlzdCgkc3RhdHVzKTsNCgkkc3RhdGkgPSBhcnJheSgpOw0K CWZvcmVhY2ggKCRzdGF0dXMgYXMgJHN0YXQpIHsNCgkJaWYgKGVtcHR5KCRzdGF0KSkgew0K CQkJY29udGludWU7DQoJCX0gZWxzZSBpZiAoaXNfbnVtZXJpYygkc3RhdCkpIHsNCgkJCSRz dGF0aVtdID0gJHN0YXQ7DQoJCX0gZWxzZSB7DQoJCQkkc3RhdGlbXSA9IGdldFN0YXR1c051 bSgkc3RhdCk7DQoJCX0NCgl9DQoJJHN0YXRpID0gIiBTdGF0dXMgSU4gKCIuam9pbignLCcs ICRzdGF0aSkuIikiOw0KDQoJJGV4cGlyZWQgPSAoJGV4cGlyZWQpID8gJGV4cGlyZWQgOiAk cHJlZnNbJ3B1Ymxpc2hfZXhwaXJlZF9hcnRpY2xlcyddOw0KCSRleHBpcmVkID0gKCgkZXhw aXJlZCkgPyAnJyA6ICcgQU5EIChub3coKSA8PSBFeHBpcmVzIE9SIEV4cGlyZXMgPSAnLk5V TExEQVRFVElNRS4nKScpOw0KCSRldmVudGNsYXNzZXMgPSBkb19saXN0KCRldmVudGNsYXNz ZXMpOw0KCSRob2xpZGF5ZmxhZ3MgPSBkb19saXN0KCRob2xpZGF5ZmxhZ3MpOw0KCSRsaW5r cG9zdGVkID0gZG9fbGlzdCgkbGlua3Bvc3RlZCk7DQoNCgkvLyBXb3JrIG91dCB0aGUgZmly c3QgYW5kIGxhc3QgcG9zdHMgdG8gZGV0ZXJtaW5lIHRoZSB5ZWFyIHJhbmdlIC0gcHJvYmFi bHkgYSBiZXR0ZXIgd2F5IG9mIGRvaW5nIHRoaXMgdGhhbiAzIHF1ZXJpZXMNCgkkZmlsdCA9 ICRzdGF0aSAuICgoJGNhdGVnb3J5KSA/ICRjYXRTUUwgOiAnJykgLiAoKCRzZWN0aW9uKSA/ ICRzZWNTUUwgOiAnJykgLiAoKCRhdXRob3IpID8gJGF1dGhTUUwgOiAnJykgLiAkZnBTUUw7 DQoJJGVhcmxpZXN0ID0gc2FmZV9maWVsZCgndW5peF90aW1lc3RhbXAoUG9zdGVkKSBBUyB1 UG9zdGVkJywgJ3RleHRwYXR0ZXJuJywgJGZpbHQgLicgT1JERVIgQlkgUG9zdGVkIEFTQyBM SU1JVCAwLCAxJywgJGRlYnVnKTsNCgkkbHAgPSBzYWZlX2ZpZWxkKCd1bml4X3RpbWVzdGFt cChQb3N0ZWQpIEFTIHVQb3N0ZWQnLCAndGV4dHBhdHRlcm4nLCAkZmlsdCAuJyBPUkRFUiBC WSBQb3N0ZWQgREVTQyBMSU1JVCAwLCAxJywgJGRlYnVnKTsNCgkkbG0gPSBzYWZlX2ZpZWxk KCd1bml4X3RpbWVzdGFtcChMYXN0TW9kKSBBUyB1TGFzdE1vZCcsICd0ZXh0cGF0dGVybics ICRmaWx0IC4nIE9SREVSIEJZIExhc3RNb2QgREVTQyBMSU1JVCAwLCAxJywgJGRlYnVnKTsN CgkkbGF0ZXN0ID0gKCR0aW1lPT0icGFzdCIpID8gdGltZSgpIDogKCgkbHAgPiAkbG0pID8g JGxwIDogJGxtKTsNCg0KCSR5ZWFyd2lkdGggPSBkb19saXN0KCR5ZWFyd2lkdGgpOw0KCSR5 ZWFyd2lkdGhbMF0gPSAoZW1wdHkoJHllYXJ3aWR0aFswXSkpID8gMCA6ICR5ZWFyd2lkdGhb MF07DQoJaWYgKGNvdW50KCR5ZWFyd2lkdGgpID09IDEpIHsNCgkJJHllYXJ3aWR0aFsxXSA9 ICR5ZWFyd2lkdGhbMF07DQoJfQ0KCSR1c2Vub3cgPSBhcnJheShmYWxzZSxmYWxzZSk7DQoJ Zm9yZWFjaCAoJHllYXJ3aWR0aCBhcyAkeXJpZHggPT4gJHlyaXRlbSkgew0KCQlpZiAoc3Ry cG9zKCR5cml0ZW0sImMiKSAhPT0gZmFsc2UpIHsNCgkJCSR5ZWFyd2lkdGhbJHlyaWR4XSA9 IGludHZhbCgkeXJpdGVtKTsNCgkJCSR1c2Vub3dbJHlyaWR4XSA9IHRydWU7DQoJCX0NCgl9 DQoNCgkkZWFybGllc3QgPSBkYXRlKCJZIiwgc3RydG90aW1lKCItIi4keWVhcndpZHRoWzBd LiIgeWVhciIsICggKGVtcHR5KCRlYXJsaWVzdCkgfHwgJHVzZW5vd1swXT09dHJ1ZSkgPyB0 aW1lKCkgOiAkZWFybGllc3QpICkgKTsNCgkkbGF0ZXN0ID0gZGF0ZSgiWSIsIHN0cnRvdGlt ZSgiKyIuJHllYXJ3aWR0aFsxXS4iIHllYXIiLCAoIChlbXB0eSgkbGF0ZXN0KSB8fCAkdXNl bm93WzFdPT10cnVlKSA/IHRpbWUoKSA6ICRsYXRlc3QpICkgKTsNCg0KCS8vIENoZWNrIHRo ZSBVUkwgZm9yIGN1cnJlbnQgZGF0ZSBhbmQgY2FsZW5kYXIgdGFyZ2V0IGluZm8NCgkkaW5j b21pbmdfY2FsaWQgPSBncHMoJ2NhbGlkJyk7DQoJJGluY29taW5nX3llYXIgPSAoZ3BzKCd5 JykgYW5kIGlzX251bWVyaWMoZ3BzKCd5JykpKSA/IChpbnQpZ3BzKCd5JykgOiAnJzsNCgkk aW5jb21pbmdfbW9udGggPSAoZ3BzKCdtJykgYW5kIGlzX251bWVyaWMoZ3BzKCdtJykpKSA/ IChpbnQpZ3BzKCdtJykgOiAnJzsNCgkkaW5jb21pbmdfd2VlayA9IChncHMoJ3cnKSBhbmQg aXNfbnVtZXJpYyhncHMoJ3cnKSkpID8gKGludClncHMoJ3cnKSA6ICcnOw0KDQoJaWYoJHN0 YXRpYykgeyAvLyBpZiB3ZSdyZSBzdGF0aWMgdy9vIGFueSBzdXBwbGllZCB2YXJzLCB1c2Ug dGhlIGN1cnJlbnQgZGF0ZQ0KCQlpZighJHllYXIpIHsgJHllYXIgPSBzYWZlX3N0cmZ0aW1l KCclWScpOyB9DQoJCWlmKCEkbW9udGgpIHsgJG1vbnRoID0gc2FmZV9zdHJmdGltZSgnJW0n KTsgfQ0KCX0gZWxzZSB7IC8vIG90aGVyd2lzZSB1c2UgY3VycmVudCBkYXRlIG9ubHkgaWYg dGhlcmUncyBub3RoaW5nIGVsc2UNCgkJaWYoICRpZCA9PSAkaW5jb21pbmdfY2FsaWQgKSB7 IC8vIHVzZSBpbmNvbWluZw0KCQkJJHllYXIgPSAoJGluY29taW5nX3llYXIpID8gJGluY29t aW5nX3llYXIgOiAoKCR5ZWFyKSA/ICR5ZWFyIDogc2FmZV9zdHJmdGltZSgnJVknKSk7DQoJ CQkkbW9udGggPSAoJGluY29taW5nX21vbnRoKSA/ICRpbmNvbWluZ19tb250aCA6ICgoJG1v bnRoKSA/ICRtb250aCA6IHNhZmVfc3RyZnRpbWUoJyVtJykpOw0KCQkJLy8gSWYgd2VlayBp cyB1c2VkLCBhZGp1c3QgbW9udGggc28gaXQgZW5jb21wYXNzZXMgdGhlIGdpdmVuIHdlZWsN CgkJCSR3ZWVrID0gJGluY29taW5nX3dlZWs7DQoJCQlpZiAoJHdlZWspIHsNCgkJCQkkbW9u dGggPSBzYWZlX3N0cmZ0aW1lKCIlbSIsIHN0cnRvdGltZSgkeWVhci4iVyIuc3RyX3BhZCgk d2VlaywgMiwgJzAnLCBTVFJfUEFEX0xFRlQpKSk7IC8vIEdldCB0aGUgbW9udGggZnJvbSB0 aGUgd2Vlaw0KCQkJfQ0KCQl9IGVsc2UgeyAvLyB1c2UgY3VycmVudA0KCQkJaWYoISR5ZWFy KSB7ICR5ZWFyID0gc2FmZV9zdHJmdGltZSgnJVknKTsgfQ0KCQkJaWYoISRtb250aCkgeyAk bW9udGggPSBzYWZlX3N0cmZ0aW1lKCclbScpOyB9DQoJCQlpZigkd2VlaykgeyAkbW9udGgg PSBzYWZlX3N0cmZ0aW1lKCIlbSIsIHN0cnRvdGltZSgkeWVhci4iVyIuc3RyX3BhZCgkd2Vl aywgMiwgJzAnLCBTVFJfUEFEX0xFRlQpKSk7IH0NCgkJfQ0KCX0NCgkkc21kX2NhbGluZm9b J2lkJ10gPSAoJGluY29taW5nX2NhbGlkKSA/ICRpbmNvbWluZ19jYWxpZCA6ICRpZDsNCgkk c21kX2RhdGVbJ3knXSA9ICR5ZWFyOyAkc21kX2RhdGVbJ20nXSA9ICRtb250aDsgLy8gJHdl ZWsvZGF5L2lzb3llYXIgYXJlIHNldCBwZXIgZXZlbnQgbGF0ZXINCg0KCS8vIFRoZSB0aW1l cyBpbiB0aGUgREIgYXJlIHN0b3JlZCB1c2luZyB0aGUgc2VydmVyJ3MgbG9jYWwgdGltZSwg c28gd2UgZG9uJ3QNCgkvLyB3YW50IHRvIGFkanVzdCBhbnl0aGluZyAoc2luY2UgbWt0aW1l IHVzZXMgdGhlIHNlcnZlcidzIGxvY2FsIHRpbWUpLg0KCS8vVE9ETzogV29ycnkgYWJvdXQg Z210IC8gZHN0DQoJJHRzX2ZpcnN0ID0gbWt0aW1lKDAsIDAsIDAsICRtb250aCwgMSwgJHll YXIpOw0KCSR0c19sYXN0ID0gbWt0aW1lKDIzLCA1OSwgNTksICRtb250aCwgZGF0ZSgndCcs JHRzX2ZpcnN0KSwgJHllYXIpOw0KDQoJJGV4dHJhc3FsID0gJGNhdFNRTCAuICRzZWNTUUwg LiAkYXV0aFNRTCAuICRmcFNRTDsNCglzd2l0Y2goJHRpbWUpIHsNCgkJY2FzZSAiYW55IiA6 IGJyZWFrOw0KCQljYXNlICJmdXR1cmUiIDogJGV4dHJhc3FsIC49ICIgQU5EIFBvc3RlZCA+ IENVUkRBVEUoKSI7IGJyZWFrOw0KCQlkZWZhdWx0IDogJGV4dHJhc3FsIC49ICIgQU5EIFBv c3RlZCA8IENVUkRBVEUoKSI7IGJyZWFrOyAvLyBUaGUgcGFzdA0KCX0NCg0KCS8vIEhvbGlk YXlzIGFyZSBnbG9iYWwgJ2V4Y2x1c2lvbnMnLCBlaXRoZXIgZGVmaW5lZCBkaXJlY3RseSBv ciBpbiBhIDx0eHA6dmFyaWFibGUgLz4NCgkkaG9saWRheXMgPSBkb19saXN0KCRob2xpZGF5 cyk7DQoJJHR4cGhvbHMgPSBkb19saXN0KCRob2xpZGF5c1swXSwgIjoiKTsNCglpZiAoJHR4 cGhvbHNbMF0gPT0gInR4cHZhciIpIHsNCgkJJGhvbGlkYXlzID0gZG9fbGlzdCgkdmFyaWFi bGVbJHR4cGhvbHNbMV1dKTsNCgl9DQoJLy8gRm9yY2UgZWFjaCBob2xpZGF5IHRvIGEga25v d24gZm9ybWF0LiBIb2xpZGF5cyB3aXRob3V0IHllYXJzIHVzZSBjdXJyZW50IHllYXINCglm b3JlYWNoICgkaG9saWRheXMgYXMgJGtleSA9PiAkdmFsKSB7DQoJCWlmIChlbXB0eSgkdmFs KSkgY29udGludWU7DQoJCSRudW1wYXJ0cyA9IHByZWdfbWF0Y2goJy9eKFtcZFx3XSspLj8o W1xkXHddKykuPyhbXGRcd10rKT8kLycsICR2YWwsICRwYXJ0cyk7DQoNCgkJaWYgKCRudW1w YXJ0cykgew0KCQkJaWYgKGNvdW50KCRwYXJ0cykgPT0gMykgew0KCQkJCSRwYXJ0c1szXSA9 ICR5ZWFyOw0KICAgICAgICAgfQ0KCQkJJHZhbCA9IHN0cl9wYWQoJHBhcnRzWzFdLCAyLCAn MCcsIFNUUl9QQURfTEVGVCkuJy0nLnN0cl9wYWQoJHBhcnRzWzJdLCAyLCAnMCcsIFNUUl9Q QURfTEVGVCkuJy0nLiRwYXJ0c1szXTsNCgkJfQ0KDQoNCgkJJGhvbGlkYXlzWyRrZXldID0g ZGF0ZSgiZC1NLVkiLCBzdHJ0b3RpbWUoJHZhbCkpOw0KCX0NCg0KCWlmICgkZGVidWcgPiAw ICYmICFlbXB0eSgkaG9saWRheXMpICYmICRob2xpZGF5c1swXSAhPSAnJykgew0KCQllY2hv ICIrKyBIT0xJREFZUyArKyAiOw0KCQlkbXAoJGhvbGlkYXlzKTsNCgl9DQoNCgkvLyBHZXQg YWxsIG1hdGNoaW5nIGFydGljbGVzIGluIChhbmQgYmVmb3JlKSB0aGlzIG1vbnRoDQoJJGV2 ZW50cyA9IGFycmF5KCk7DQoJJHNxbDIgPSAkc3RhdGkgLiAiIEhBVklORyB1UG9zdGVkIDw9 ICIuJHRzX2xhc3QgLiAkZXhwaXJlZCAuICRleHRyYXNxbCAuIiBPUkRFUiBCWSBQb3N0ZWQg QVNDIjsNCgkkZ3JhYkNvbHMgPSAnKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9z dGVkLCB1bml4X3RpbWVzdGFtcChMYXN0TW9kKSBhcyB1TGFzdE1vZCwgdW5peF90aW1lc3Rh bXAoRXhwaXJlcykgYXMgdUV4cGlyZXMnOw0KCSRldmxpc3QgPSBzYWZlX3Jvd3MoJGdyYWJD b2xzLCAndGV4dHBhdHRlcm4nLCAkc3FsMiwgJGRlYnVnKTsNCglhcnRpY2xlX3B1c2goKTsN Cg0KCS8vIElmIGFueSBldmVudHMgcmVjdXIgYW5kIGZhbGwgd2l0aGluIHRoZSBjdXJyZW50 IG1vbnRoLCBhZGQgdGhvc2UgYXMgd2VsbA0KCS8vIElmIGFueSBkYXRlcyBhcmUgdG8gYmUg ZXhjbHVkZWQsIHRoZSBlbnRyeSBpcyBza2lwcGVkIFVOTEVTUyBzaG93c2tpcHBlZCBpbmRp Y2F0ZXMgb3RoZXJ3aXNlDQoJZm9yZWFjaCAoJGV2bGlzdCBhcyAkcm93KSB7DQoJCSRpZHgg PSAwOyAvLyBJbiBjYXNlIHRoZSAxc3QgZGF5IG9mIHRoZSBtb250aCBpcyBhIGNvbnRpbnVh dGlvbiBvZiBhbiBldmVudCBmcm9tIHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIG1vbnRoDQoJ CSRzdGFydCA9ICRyb3dbJ3VQb3N0ZWQnXTsNCgkJJHN0YXJ0X2RhdGUgPSBkYXRlKCJZLW0t ZCIsICRzdGFydCk7IC8vIEZvciByZWN1cnJpbmcvc3Bhbm5lZCBldmVudHMgb24gYSBtaW5p Y2FsLCB0aGlzIGlzIHRoZSBldmVudCB0aGUgY2VsbCBsaW5rcyB0bw0KCQkkcmVhbF9lbmQg PSAkcm93Wyd1RXhwaXJlcyddOw0KCQkkZW5kID0gKCRyZWFsX2VuZCAhPSAwICYmICRyZWFs X2VuZCA8ICR0c19sYXN0KSA/ICRyZWFsX2VuZCA6ICR0c19sYXN0Ow0KCQkkc21kX2NhbF9m bGFnID0gJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoNCgkJaWYgKCRkZWJ1ZyA+IDEpIHsN CgkJCWVjaG8gJysrIEVWRU5UIFNUQVJUIC8vIEVORCAvLyBSRUFMIEVORCArKyc7DQoJCQlk bXAoJHJvd1snVGl0bGUnXSk7DQoJCQlkbXAoZGF0ZSgnZC1NLVkgSDppOnMnLCAkc3RhcnQp IC4nIC8vICcuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJGVuZCkgLicgLy8gJy4gZGF0ZSgnZC1N LVkgSDppOnMnLCAkcmVhbF9lbmQpKTsNCgkJCWlmICgkZGVidWcgPiAyKSB7DQoJCQkJZG1w KCRyb3cpOw0KCQkJfQ0KCQl9DQoNCgkJJG11bHRpID0gKCRyb3dbJ3VFeHBpcmVzJ10gPiAk cm93Wyd1UG9zdGVkJ10gJiYgJHJvd1sndUV4cGlyZXMnXSA+ICR0c19maXJzdCAmJiAoZGF0 ZSgiZC1tLVkiLCAkcm93Wyd1RXhwaXJlcyddKSAhPSBkYXRlKCJkLW0tWSIsICRyb3dbJ3VQ b3N0ZWQnXSkpKSA/IHRydWUgOiBmYWxzZTsNCgkJJHJlY3VyID0gKGVtcHR5KCRyb3dbJHN0 ZXBmaWVsZF0pKSA/IGZhbHNlIDogdHJ1ZTsNCgkJJGhvbF9oaXQgPSBpbl9hcnJheShkYXRl KCJkLU0tWSIsICRzdGFydCksICRob2xpZGF5cyk7DQoJCSRldmNsYXNzZXMgPSBhcnJheSgp Ow0KCQlmb3JlYWNoICgkZXZlbnRjbGFzc2VzIGFzICRldmNscykgew0KCQkJc3dpdGNoICgk ZXZjbHMpIHsNCgkJCQljYXNlICIiOg0KCQkJCQlicmVhazsNCgkJCQljYXNlICJnY2F0IjoN CgkJCQkJaWYgKGlzc2V0KCRwcmV0ZXh0WydjJ10pICYmICFlbXB0eSgkcHJldGV4dFsnYydd KSkgew0KCQkJCQkJJGV2Y2xhc3Nlc1tdID0gJGV2Y2xhc3NwcmVmaXguJHByZXRleHRbJ2Mn XTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJjYXRlZ29yeSI6DQoJCQkJCWlm IChpc3NldCgkcm93WydDYXRlZ29yeTEnXSkgJiYgIWVtcHR5KCRyb3dbJ0NhdGVnb3J5MSdd KSkgew0KCQkJCQkJJGV2Y2xhc3Nlc1tdID0gJGV2Y2xhc3NwcmVmaXguJHJvd1snQ2F0ZWdv cnkxJ107DQoJCQkJCX0NCgkJCQkJaWYgKGlzc2V0KCRyb3dbJ0NhdGVnb3J5MiddKSAmJiAh ZW1wdHkoJHJvd1snQ2F0ZWdvcnkyJ10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZj bGFzc3ByZWZpeC4kcm93WydDYXRlZ29yeTInXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJ CQljYXNlICJzZWN0aW9uIjoNCgkJCQkJaWYgKGlzc2V0KCRwcmV0ZXh0WydzJ10pICYmICFl bXB0eSgkcHJldGV4dFsncyddKSkgew0KCQkJCQkJJGV2Y2xhc3Nlc1tdID0gJGV2Y2xhc3Nw cmVmaXguJHByZXRleHRbJ3MnXTsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJh dXRob3IiOg0KCQkJCQlpZiAoaXNzZXQoJHByZXRleHRbJ2F1dGhvciddKSAmJiAhZW1wdHko JHByZXRleHRbJ2F1dGhvciddKSkgew0KCQkJCQkJJGV2Y2xhc3Nlc1tdID0gJGV2Y2xhc3Nw cmVmaXguJHByZXRleHRbJ2F1dGhvciddOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWRl ZmF1bHQ6DQoJCQkJCWlmIChpc3NldCgkcm93WyRldmNsc10pICYmICFlbXB0eSgkcm93WyRl dmNsc10pKSB7DQoJCQkJCQkkZXZjbGFzc2VzW10gPSAkZXZjbGFzc3ByZWZpeC4kcm93WyRl dmNsc107DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgkJJGV2Y2xhc3NlcyA9 ICgkZXZjbGFzc2VzKSA/ICcgJy4gam9pbignICcsICRldmNsYXNzZXMpIDogJyc7DQoJCSRp Z25vcmUgPSAkb21pdCA9ICRjZmxhZyA9IGFycmF5KCk7DQoNCgkJaWYgKCRkZWJ1ZyA+IDEg JiYgJGV2Y2xhc3Nlcykgew0KCQkJZWNobyAnKysgRVZFTlQgQ0xBU1NFUyArKyc7DQoJCQlk bXAoJGV2Y2xhc3Nlcyk7DQoJCX0NCg0KCQkvLyBFdmVudHMgdGhhdCBzdGFydCBvciBhcmUg YWRkZWQgdGhpcyBtb250aA0KCQlpZiAoJHN0YXJ0IDwgJGVuZCAmJiAkc3RhcnQgPiAkdHNf Zmlyc3QpIHsNCgkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkvLyBhIHN0YW5k YXJkIGV2ZW50IG9yIHN0YXJ0IG9mIGEgbXVsdGkNCgkJCWlmICgkc2hvd3NwYW5uZWQgJiYg JG11bHRpICYmICEkcmVjdXIpIHsNCgkJCQkkc21kX2NhbF9mbGFnW10gPSAnbXVsdGlmaXJz dCc7DQoJCQl9DQoJCQlpZiAoJHJlY3VyKSB7DQoJCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ3Jl Y3VyZmlyc3QnOw0KCQkJfQ0KCQkJaWYgKCEkc21kX2NhbF9mbGFnKSB7DQoJCQkJJHNtZF9j YWxfZmxhZ1tdID0gJ3N0YW5kYXJkJzsNCgkJCX0NCgkJCWlmICggKCAkaG9sX2hpdCAmJiAh aW5fYXJyYXkoJ211bHRpJywkaG9saWRheWZsYWdzKSAmJiBpbl9hcnJheSgnbXVsdGlmaXJz dCcsJHNtZF9jYWxfZmxhZykgKSB8fCAoICRob2xfaGl0ICYmICFpbl9hcnJheSgnc3RhbmRh cmQnLCRob2xpZGF5ZmxhZ3MpICYmIGluX2FycmF5KCdzdGFuZGFyZCcsJHNtZF9jYWxfZmxh ZykgKSApIHsNCgkJCQkkc21kX2NhbF9mbGFnW10gPSAnY2FuY2VsJzsNCgkJCX0NCgkJCWZv cmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCQkkY2ZsYWdbXSA9ICRjbGFz c3ByZWZpeC4kaXRlbTsNCgkJCX0NCg0KCQkJJGlkeCA9ICRzbWRfZGF0ZVsnZCddID0gKGlu dClzdHJmdGltZSgnJWQnLCAkc3RhcnQpOw0KCQkJJHNtZF9kYXRlWyd3J10gPSBzdHJmdGlt ZSgnJVYnLCAkc3RhcnQpOw0KCQkJJHNtZF9kYXRlWydpeSddID0gc3RyZnRpbWUoJyVHJywg JHN0YXJ0KTsNCgkJCSRvcCA9ICgkdGhpbmcpID8gcGFyc2UoJHRoaW5nKSA6ICgoJGZvcm0p ID8gcGFyc2VfZm9ybSgkZm9ybSkgOiAoKCRzaXplPT0ic21hbGwiKSA/ICcnIDogaHJlZigk cm93WydUaXRsZSddLCBwZXJtbGlua3VybCgkcm93KSwgJyB0aXRsZT0iJy4kcm93WydUaXRs ZSddLiciJykpICk7DQoJCQkkZXZlbnRzWyRpZHhdW10gPSBhcnJheSgnZXYnID0+ICRvcCwg J2ZsYWcnID0+ICRzbWRfY2FsX2ZsYWcsICdjbGFzc2VzJyA9PiAoKCRjZmxhZykgPyBqb2lu KCcgJyxhcnJheV9tZXJnZSgkY2ZsYWcsICRzbWRfY2FsX3VjbHMpKSA6ICcnKS4kZXZjbGFz c2VzLCAncG9zdGVkJyA9PiAkc3RhcnRfZGF0ZSk7DQoJCQkkc21kX2NhbF9mbGFnID0gJGNm bGFnID0gJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoJCX0NCg0KCQkvLyBHZW5lcmF0ZSBh IHNraXAgYXJyYXkgZm9yIHRoaXMgZXZlbnQNCgkJaWYgKCRza2lwZmllbGQgJiYgJHJvd1sk c2tpcGZpZWxkXSAhPSAnJykgew0KCQkJJGlnbm9yZSA9IGRvX2xpc3QoJHJvd1skc2tpcGZp ZWxkXSk7DQoJCQlmb3JlYWNoICgkaWdub3JlIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRp Z25vcmVbJGtleV0gPSBkYXRlKCJkLU0tWSIsIHN0cnRvdGltZSgkdmFsKSk7IC8vIEZvcmNl IGVhY2ggZGF0ZSB0byBhIGtub3duIGZvcm1hdA0KCQkJfQ0KCQl9DQoJCS8vIEdlbmVyYXRl IGFuIG9taXQgYXJyYXkgZm9yIHRoaXMgZXZlbnQNCgkJaWYgKCRvbWl0ZmllbGQgJiYgJHJv d1skb21pdGZpZWxkXSAhPSAnJykgew0KCQkJJG9taXQgPSBkb19saXN0KCRyb3dbJG9taXRm aWVsZF0pOw0KCQkJZm9yZWFjaCAoJG9taXQgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJG9t aXRbJGtleV0gPSBkYXRlKCJkLU0tWSIsIHN0cnRvdGltZSgkdmFsKSk7DQoJCQl9DQoJCX0N CgkJaWYgKCRkZWJ1ZyA+IDEgJiYgKCRpZ25vcmUgfHwgJG9taXQpKSB7DQoJCQllY2hvICcr KyBPTUlUVEVEIERBVEVTICsrJzsNCgkJCWRtcCgkb21pdCk7DQoJCQllY2hvICcrKyBDQU5D RUxMRUQgREFURVMgKysnOw0KCQkJZG1wKCRpZ25vcmUpOw0KCQl9DQoJCS8vIENhbGN1bGF0 ZSB0aGUgZGF0ZSBvZmZzZXRzIGFuZCBjaGVjayByZWN1cnJpbmcgZXZlbnRzIHRoYXQgZmFs bCB3aXRoaW4gdGhlIG1vbnRoIG9mIGludGVyZXN0DQoJCWlmICgkc3RlcGZpZWxkICYmICRy b3dbJHN0ZXBmaWVsZF0gIT0gJycpIHsNCgkJCSRmcmVxID0gZG9fbGlzdCgkcm93WyRzdGVw ZmllbGRdKTsNCgkJCWZvcmVhY2ggKCRmcmVxIGFzICRpbnRlcnZhbCkgew0KCQkJCSRtYXhf bG9vcCA9IDk5OTk5OyAvLyBZdWssIGJ1dCBwcmFjdGljYWxseSBsaW1pdGxlc3MNCgkJCQkk b3JpZ2VydmFsID0gJGludGVydmFsOw0KCQkJCSRpbnRlcnZhbCA9IHN0cl9yZXBsYWNlKCI/ bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMCwwLDAsJG1vbnRoLDEpKSwgJGludGVydmFs KTsNCgkJCQkkaW50ZXJ2YWwgPSBzdHJfcmVwbGFjZSgiP3llYXIiLCAkeWVhciwgJGludGVy dmFsKTsNCgkJCQlpZiAoc3RycG9zKCRpbnRlcnZhbCwgImxhc3QiKSA9PT0gMCkgew0KCQkJ CQkkaW50ZXJ2YWwgPSBkYXRlKCJsLCBGIGpTIFkiLCBzdHJ0b3RpbWUoJGludGVydmFsLCBt a3RpbWUoMTIsIDAsIDAsIGRhdGUoIm4iLG1rdGltZSgwLDAsMCwkbW9udGgsMSwkeWVhcikp KzEsIDEsICR5ZWFyKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAxOw0KCQkJCX0gZWxzZSBpZiAo c3RycG9zKCRpbnRlcnZhbCwgImZpcnN0IikgPT09IDApIHsNCgkJCQkJJGludGVydmFsID0g ZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1lKCRpbnRlcnZhbCwgbWt0aW1lKDEyLCAwLCAw LCAoKCRtb250aD4xKSA/ICRtb250aC0xIDogMTIpLCBkYXRlKCJ0Iixta3RpbWUoMCwwLDAs JG1vbnRoLTEsMSwoKCRtb250aD09MSkgPyAkeWVhci0xOiAkeWVhcikpKSwgKCgkbW9udGg9 PTEpID8gJHllYXItMTogJHllYXIpKSkpOw0KCQkJCQkkbWF4X2xvb3AgPSAxOw0KCQkJCX0N CgkJCQkkdHNfbG9vcCA9IDA7DQoJCQkJJHRzX2N1cnIgPSAkc3RhcnQ7DQoJCQkJaWYgKHN0 cnBvcygkb3JpZ2VydmFsLCAibW9udGgiKSB8fCBzdHJwb3MoJG9yaWdlcnZhbCwgInllYXIi KSkgew0KCQkJCQkkbWF4X2xvb3AgPSAxOw0KICAgICAgICAgICAgfQ0KDQoJCQkJd2hpbGUg KCR0c19jdXJyIDwgJGVuZCAmJiAkdHNfbG9vcCA8ICRtYXhfbG9vcCkgew0KCQkJCQlpZiAo JG1heF9sb29wID09IDEpIHsNCgkJCQkJCSR0c19jdXJyID0gc3RydG90aW1lKCRpbnRlcnZh bCk7DQoJCQkJCQkkdHNfY3VyciA9ICgkdHNfY3VyciA8ICRzdGFydCB8fCAkdHNfY3VyciA+ ICRlbmQpID8gJHN0YXJ0IDogJHRzX2N1cnI7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkdHNf Y3VyciA9IHN0cnRvdGltZSgkaW50ZXJ2YWwsICR0c19jdXJyKTsNCgkJCQkJfQ0KCQkJCQlp ZiAoJHRzX2N1cnIgPT09IGZhbHNlKSB7DQoJCQkJCQkkdHNfbG9vcCsrOw0KCQkJCQkJYnJl YWs7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCQkJCWRt cCgiSU5URVJWQUw6ICIuIGRhdGUoJ2QtTS1ZIEg6aTpzJywgJHRzX2N1cnIpKTsNCgkJCQkJ CX0NCgkJCQkJCWlmICgkdHNfY3VyciA8ICRlbmQgJiYgJHRzX2N1cnIgPj0gJHRzX2ZpcnN0 ICYmICR0c19jdXJyICE9ICRzdGFydCkgew0KCQkJCQkJCS8vIEEgcmVjdXJyaW5nIGV2ZW50 LiBDaGVjayBpdCBpc24ndCBhIGhvbGlkYXkgb3IgdG8gYmUgaWdub3JlZA0KCQkJCQkJCXBv cHVsYXRlQXJ0aWNsZURhdGEoJHJvdyk7DQoJCQkJCQkJJG9wID0gJyc7DQoJCQkJCQkJJGlk eCA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHRzX2N1cnIpOw0KCQkJCQkJCSRzbWRfY2FsX2Zs YWdbXSA9ICdyZWN1cic7DQoJCQkJCQkJJHRoaXNkYXRlID0gZGF0ZSgiZC1NLVkiLCAkdHNf Y3Vycik7DQoJCQkJCQkJJG9taXRfbWUgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRvbWl0KTsN CgkJCQkJCQkkc2hvd19tZSA9ICFpbl9hcnJheSgkdGhpc2RhdGUsICRpZ25vcmUpOw0KCQkJ CQkJCSRob2xfaGl0ID0gaW5fYXJyYXkoJHRoaXNkYXRlLCAkaG9saWRheXMpOw0KCQkJCQkJ CSRzaG93X2hvbCA9ICgkaG9sX2hpdCAmJiAhaW5fYXJyYXkoJ3JlY3VyJywkaG9saWRheWZs YWdzKSApID8gZmFsc2UgOiB0cnVlOw0KCQkJCQkJCWlmICggJG9taXRfbWUgKSB7DQoJCQkJ CQkJCSRzbWRfY2FsX2ZsYWdbXSA9ICdvbWl0JzsNCgkJCQkJCQl9DQoJCQkJCQkJaWYgKCAo ISRzaG93X21lIHx8ICEkc2hvd19ob2wpICYmICEkb21pdF9tZSApIHsNCgkJCQkJCQkJJHNt ZF9jYWxfZmxhZ1tdID0gJ2NhbmNlbCc7DQoJCQkJCQkJfQ0KCQkJCQkJCWZvcmVhY2ggKCRz bWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCQkJCQkJJGNmbGFnW10gPSAkY2xhc3NwcmVm aXguJGl0ZW07DQoJCQkJCQkJfQ0KDQoJCQkJCQkJLy8gQ3JlYXRlIHRoZSBldmVudHMgdGhh dCBhcHBlYXIgaW4gdGhlIGNlbGwgYnV0IG9ubHkgaWYgdGhleSd2ZSBub3QgYXBwZWFyZWQg YmVmb3JlLCBvciBhcmUgdG8gYmUgaWdub3JlZC9vbWl0dGVkDQoJCQkJCQkJaWYgKCEkb21p dF9tZSkgew0KCQkJCQkJCQlpZiAoKCRzaG93X21lICYmICRzaG93X2hvbCkgfHwgJHNob3dz a2lwcGVkKSB7DQoJCQkJCQkJCQkkc21kX2RhdGVbJ2QnXSA9ICRpZHg7DQoJCQkJCQkJCQkk c21kX2RhdGVbJ3cnXSA9IHN0cmZ0aW1lKCclVicsICR0c19jdXJyKTsNCgkJCQkJCQkJCSRz bWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCclRycsICR0c19jdXJyKTsNCgkJCQkJCQkJCSRv cCA9ICgkcmVjdXJmb3JtKSA/IHBhcnNlX2Zvcm0oJHJlY3VyZm9ybSkgOiAoKCR0aGluZykg PyBwYXJzZSgkdGhpbmcpIDogKCgkc2l6ZT09InNtYWxsIikgPyAnJyA6IGhyZWYoJHJvd1sn VGl0bGUnXSwgcGVybWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUnXS4n IicpKSApOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJCSR1c2VkID0gYXJyYXkoKTsN CgkJCQkJCQlpZiAoaXNzZXQoJGV2ZW50c1skaWR4XSkgJiYgJGV2ZW50c1skaWR4XSAhPSBO VUxMKSB7DQoJCQkJCQkJCWZvcmVhY2ggKCRldmVudHNbJGlkeF0gYXMgJGV2KSB7DQoJCQkJ CQkJCQkkdXNlZFtdID0gJGV2WydldiddOw0KCQkJCQkJCQl9DQoJCQkJCQkJfQ0KCQkJCQkJ CWlmIChpc3NldCgkZXZlbnRzWyRpZHhdKSAmJiAkZXZlbnRzWyRpZHhdID09IE5VTEwgfHwg IWluX2FycmF5KCRvcCwgJHVzZWQpKSB7DQoJCQkJCQkJCSRldmVudHNbJGlkeF1bXSA9IGFy cmF5KCdldicgPT4gJG9wLCAnZmxhZycgPT4gJHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ ICgoJGNmbGFnKSA/IGpvaW4oJyAnLGFycmF5X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNs cykpIDogJycpLiRldmNsYXNzZXMsICdwb3N0ZWQnID0+ICRzdGFydF9kYXRlKTsNCgkJCQkJ CQl9DQoJCQkJCQkJJHNtZF9jYWxfZmxhZyA9ICRjZmxhZyA9ICRzbWRfY2FsX3VjbHMgPSBh cnJheSgpOw0KCQkJCQkJfQ0KCQkJCQkJJHRzX2xvb3ArKzsNCgkJCQkJfQ0KCQkJCX0NCgkJ CX0NCgkJfSBlbHNlIGlmICgkc2hvd3NwYW5uZWQgJiYgJG11bHRpKSB7DQoJCQkvLyBOb24t cmVjdXJyaW5nIGV2ZW50cyBtYXkgc3BhbiBtb3JlIHRoYW4gb25lIGRhdGUgYnV0IHRoZXkg bXVzdCBzdGlsbCByZXNwZWN0IGlnbm9yZWQgZGF0ZXMgYW5kIGhvbGlkYXlzDQoJCQlwb3B1 bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJJGxhc3RkYXkgPSAoaW50KXN0cmZ0aW1lKCcl ZCcsICRlbmQpOw0KCQkJJHJlYWxfbGFzdGRheSA9IChpbnQpc3RyZnRpbWUoJyVkJywgJHJl YWxfZW5kKTsNCgkJCXdoaWxlICgrKyRpZHggPD0gJGxhc3RkYXkpIHsNCgkJCQkkb3AgPSAn JzsNCgkJCQkkbXVsdGlmbGFnID0gKCRpZHg9PSRyZWFsX2xhc3RkYXkpID8gJ211bHRpbGFz dCcgOiAoKCRpZHg9PTEpID8gJ211bHRpcHJldicgOiAnbXVsdGknKTsNCgkJCQkkc21kX2Nh bF9mbGFnW10gPSAkbXVsdGlmbGFnOw0KCQkJCSR0aGlzdGltZSA9IGdtbWt0aW1lKDAsIDAs IDAsICRtb250aCwgJGlkeCwgJHllYXIpOw0KCQkJCSR0aGlzZGF0ZSA9IGRhdGUoImQtTS1Z IiwgJHRoaXN0aW1lKTsNCgkJCQkkb21pdF9tZSA9IGluX2FycmF5KCR0aGlzZGF0ZSwgJG9t aXQpOw0KCQkJCSRzaG93X21lID0gIWluX2FycmF5KCR0aGlzZGF0ZSwgJGlnbm9yZSk7DQoJ CQkJJGhvbF9oaXQgPSBpbl9hcnJheSgkdGhpc2RhdGUsICRob2xpZGF5cyk7DQoJCQkJJHNo b3dfaG9sID0gKCRob2xfaGl0ICYmICFpbl9hcnJheSgnbXVsdGknLCRob2xpZGF5ZmxhZ3Mp ICkgPyBmYWxzZSA6IHRydWU7DQoJCQkJaWYgKCAkb21pdF9tZSApIHsNCgkJCQkJJHNtZF9j YWxfZmxhZ1tdID0gJ29taXQnOw0KCQkJCX0NCgkJCQlpZiAoICghJHNob3dfbWUgfHwgISRz aG93X2hvbCkgJiYgISRvbWl0X21lICkgew0KCQkJCQkkc21kX2NhbF9mbGFnW10gPSAnY2Fu Y2VsJzsNCgkJCQl9DQoJCQkJZm9yZWFjaCAoJHNtZF9jYWxfZmxhZyBhcyAkaXRlbSkgew0K CQkJCQkkY2ZsYWdbXSA9ICRjbGFzc3ByZWZpeC4kaXRlbTsNCgkJCQl9DQoJCQkJLy8gQ3Jl YXRlIHRoZSBzcGFubmVkIGV2ZW50IHRoYXQgYXBwZWFycyBpbiB0aGUgY2VsbA0KCQkJCWlm ICghJG9taXRfbWUpIHsNCgkJCQkJaWYgKCAoJHNob3dfbWUgJiYgJHNob3dfaG9sKSB8fCAk c2hvd3NraXBwZWQpIHsNCgkJCQkJCSRzbWRfZGF0ZVsnZCddID0gJGlkeDsNCgkJCQkJCSRz bWRfZGF0ZVsndyddID0gc3RyZnRpbWUoJyVWJywgJHRoaXN0aW1lKTsNCgkJCQkJCSRzbWRf ZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCclRycsICR0aGlzdGltZSk7DQoJCQkJCQkkb3AgPSAo JHNwYW5mb3JtKSA/IHBhcnNlX2Zvcm0oJHNwYW5mb3JtKSA6ICgoJHRoaW5nKSA/IHBhcnNl KCR0aGluZykgOiAoKCRzaXplPT0ic21hbGwiKSA/ICcnIDogaHJlZignJnJhcnI7JywgcGVy bWxpbmt1cmwoJHJvdyksICcgdGl0bGU9IicuJHJvd1snVGl0bGUnXS4nIicpKSApOw0KCQkJ CQl9DQoJCQkJfQ0KCQkJCSRldmVudHNbJGlkeF1bXSA9IGFycmF5KCdldicgPT4gJG9wLCAn ZmxhZycgPT4gJHNtZF9jYWxfZmxhZywgJ2NsYXNzZXMnID0+ICgoJGNmbGFnKSA/IGpvaW4o JyAnLGFycmF5X21lcmdlKCRjZmxhZywgJHNtZF9jYWxfdWNscykpIDogJycpLiRldmNsYXNz ZXMsICdwb3N0ZWQnID0+ICRzdGFydF9kYXRlKTsNCgkJCQkkc21kX2NhbF9mbGFnID0gJGNm bGFnID0gJHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoJCQl9DQoJCX0NCgkJLy8gQWRkIGFu eSBleHRyYSBkYXRlcyBmb3IgdGhpcyBldmVudCB0aGF0IGFyZSB3aXRoaW4gdGhlIGN1cnJl bnQgbW9udGgNCgkJaWYgKCRleHRyYWZpZWxkICYmICRyb3dbJGV4dHJhZmllbGRdICE9ICcn KSB7DQoJCQkkeHRyYSA9IGRvX2xpc3QoJHJvd1skZXh0cmFmaWVsZF0pOw0KCQkJZm9yZWFj aCAoJHh0cmEgYXMgJHZhbCkgew0KCQkJCSR0bSA9IHN0cnRvdGltZSgkdmFsKTsNCgkJCQkk ZHQgPSBkYXRlKCJZLW0tZCIsICR0bSk7DQoJCQkJJGR0MiA9IGRhdGUoImQtTS1ZIiwgJHRt KTsNCgkJCQkkbHN0ID0gKCR4dHJhc3RyaWN0KSA/ICRlbmQgOiAkdHNfbGFzdDsNCgkJCQlp ZiAoJHRtIDwgJGxzdCAmJiAkdG0gPiAkdHNfZmlyc3QpIHsNCgkJCQkJJGZha2Vyb3cgPSAk cm93Ow0KCQkJCQkkZXZfaHIgPSBkYXRlKCdIJywgJHN0YXJ0KTsNCgkJCQkJJGV2X21uID0g ZGF0ZSgnaScsICRzdGFydCk7DQoJCQkJCSRldl9zYyA9IGRhdGUoJ3MnLCAkc3RhcnQpOw0K CQkJCQkkc3RhbXBvZmYgPSAoaW50KSgzNjAwKiRldl9ocikgKyAoaW50KSg2MCokZXZfbW4p ICsgKGludCkkZXZfc2M7DQoJCQkJCSRmYWtlcm93WydQb3N0ZWQnXSA9IGRhdGUoIlktbS1k IEg6aTpzIiwgJHRtKyRzdGFtcG9mZik7DQoJCQkJCSRmYWtlcm93Wyd1UG9zdGVkJ10gPSAk dG0rJHN0YW1wb2ZmOw0KDQoJCQkJCXBvcHVsYXRlQXJ0aWNsZURhdGEoJGZha2Vyb3cpOw0K CQkJCQkkc21kX2NhbF9mbGFnW10gPSAnZXh0cmEnOw0KCQkJCQkkY2ZsYWdbXSA9ICRjbGFz c3ByZWZpeC4nZXh0cmEnOw0KCQkJCQkkaWR4ID0gJHNtZF9kYXRlWydkJ10gPSAoaW50KXN0 cmZ0aW1lKCclZCcsICR0bSk7DQoJCQkJCSRzbWRfZGF0ZVsndyddID0gc3RyZnRpbWUoJyVW JywgJHRtKTsNCgkJCQkJJHNtZF9kYXRlWydpeSddID0gc3RyZnRpbWUoJyVHJywgJHRtKTsN CgkJCQkJJG9wID0gKCR0aGluZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkZm9ybSkgPyBwYXJz ZV9mb3JtKCRmb3JtKSA6ICgoJHNpemU9PSJzbWFsbCIpID8gJycgOiBocmVmKCRyb3dbJ1Rp dGxlJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3dbJ1RpdGxlJ10uJyIn KSkgKTsNCgkJCQkJJGV2ZW50c1skaWR4XVtdID0gYXJyYXkoJ2V2JyA9PiAkb3AsICdmbGFn JyA9PiAkc21kX2NhbF9mbGFnLCAnY2xhc3NlcycgPT4gKCgkY2ZsYWcpID8gam9pbignICcs YXJyYXlfbWVyZ2UoJGNmbGFnLCAkc21kX2NhbF91Y2xzKSkgOiAnJykuJGV2Y2xhc3Nlcywg J3Bvc3RlZCcgPT4gJGR0KTsNCgkJCQkJJHNtZF9jYWxfZmxhZyA9ICRjZmxhZyA9ICRzbWRf Y2FsX3VjbHMgPSBhcnJheSgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglhcnRpY2xlX3Bv cCgpOw0KDQoJaWYgKCRkZWJ1ZyA+IDEgJiYgJGV2ZW50cykgew0KCQllY2hvICcrKyBBTEwg RVZFTlRTICsrJzsNCgkJZG1wKCRldmVudHMpOw0KCX0NCg0KCS8vIEdlbmVyYXRlIHRoZSBj YWxlbmRhcg0KCWlmKCAkc2l6ZSA9PSAic21hbGwiICkgew0KCQkkY2FsZW5kYXIgPSBuZXcg U01EX1NtYWxsX0NhbGVuZGFyKCR5ZWFyLCAkbW9udGgsICRldmVudHMsICRzZWN0aW9uLCAk Y2F0ZWdvcnkpOw0KCX0gZWxzZSB7DQoJCSRjYWxlbmRhciA9IG5ldyBTTURfQ2FsZW5kYXIo JHllYXIsICRtb250aCwgJGV2ZW50cyk7DQoJfQ0KCSRjYWxlbmRhci0+c2V0V2Vlaygkd2Vl ayk7DQoJJGNhbGVuZGFyLT5zZXRHTVQoJGdtdCk7DQoJJGNhbGVuZGFyLT5zZXRMYW5nKCRs YW5nKTsNCgkkY2FsZW5kYXItPnNldENsYXNzTGV2ZWxzKCRjbGV2cyk7DQoJJGNhbGVuZGFy LT5zZXRDbGFzc1ByZWZpeCgkY2xhc3NwcmVmaXgpOw0KCSRjYWxlbmRhci0+c2V0RXZlbnRQ cmVmaXgoJGV2Y2xhc3NwcmVmaXgpOw0KCSRjYWxlbmRhci0+c2V0RXZlbnRXcmFwdGFnKCRl dmVudHdyYXB0YWcpOw0KCSRjYWxlbmRhci0+c2V0Q2VsbEZvcm0oJGNlbGxmb3JtKTsNCgkk Y2FsZW5kYXItPnNldE1ZV3JhcHRhZygkbXl3cmFwdGFnKTsNCgkkY2FsZW5kYXItPnNldFRh YmxlSUQoJGlkKTsNCgkkY2FsZW5kYXItPnNldFRhYmxlQ2xhc3MoJGNsYXNzKTsNCgkkY2Fs ZW5kYXItPnNldFJvd0NsYXNzKCRyb3djbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRDZWxsQ2xh c3MoJGNlbGxjbGFzcyk7DQoJJGNhbGVuZGFyLT5zZXRFbXB0eUNsYXNzKCRlbXB0eWNsYXNz KTsNCgkkY2FsZW5kYXItPnNldElTT1dlZWtDbGFzcygkaXNvd2Vla2NsYXNzKTsNCgkkY2Fs ZW5kYXItPnNldE5hdkluZm8oJG5hdnBjbGFzcywkbmF2bmNsYXNzLCRuYXZwYXJyLCRuYXZu YXJyLCRuYXZpZCk7DQoJJGNhbGVuZGFyLT5zZXROYXZLZWVwKCRtYWludGFpbik7DQoJJGNh bGVuZGFyLT5zZXRNWUNsYXNzKCRteWNsYXNzKTsNCgkkY2FsZW5kYXItPnNldE5hbWVGb3Jt YXQoJGRheWZvcm1hdCwgImQiKTsNCgkkY2FsZW5kYXItPnNldE5hbWVGb3JtYXQoJG1vbnRo Zm9ybWF0LCAibSIpOw0KCSRjYWxlbmRhci0+c2V0U2hvd0lTT1dlZWsoJGlzb3dlZWtzKTsN CgkkY2FsZW5kYXItPnNldEVZZWFyKCRlYXJsaWVzdCk7DQoJJGNhbGVuZGFyLT5zZXRMWWVh cigkbGF0ZXN0KTsNCgkkY2FsZW5kYXItPnNldEZpbHRlck9wdHMoJGZvcHRzKTsNCgkkY2Fs ZW5kYXItPnNldEhvbGlkYXlzKCRob2xpZGF5cyk7DQoJJGNhbGVuZGFyLT5zZXRTZWxlY3Rv cnMoZG9fbGlzdCgkc2VsZWN0KSwgJHNlbGVjdGJ0bik7DQoJJGNhbGVuZGFyLT5zZXRGaXJz dERheU9mV2VlaygkZmlyc3RkYXkpOw0KCSRjYWxlbmRhci0+c2V0TGlua1Bvc3RlZCgkbGlu a3Bvc3RlZCk7DQoNCglyZXR1cm4gJGNhbGVuZGFyLT5kaXNwbGF5KCRzdGF0aWMsICRmdXR1 cmUpOw0KfQ0KDQpjbGFzcyBTTURfQ2FsZW5kYXIgZXh0ZW5kcyBTTURfUmF3X0NhbGVuZGFy IHsNCgkvLyBPdmVycmlkZSBDb25zdHJ1Y3Rvcg0KCS8vIFBlcm1pdHMgbXVsdGlwbGUgZXZl bnRzIHRvIHNob3cgcGVyIGRheQ0KCWZ1bmN0aW9uIFNNRF9DYWxlbmRhcigkeWVhciwkbW9u dGgsJGV2ZW50cykgew0KCQkkdGhpcy0+ZXZlbnRzID0gJGV2ZW50czsNCgkJJHRoaXMtPlNN RF9SYXdfQ2FsZW5kYXIoJHllYXIsJG1vbnRoKTsNCgl9DQoNCgkvLyBPdmVycmlkZSBkc3BE YXlDZWxsIHRvIGRpc3BsYXkgc3R1ZmYgcmlnaHQNCglmdW5jdGlvbiBkc3BEYXlDZWxsKCR0 aGVkYXkpIHsNCgkJZ2xvYmFsICRzbWRfY2FsX2ZsYWcsICRzbWRfY2FsaW5mbywgJHNtZF9j YWxfdWNscywgJHNtZF9kYXRlOw0KDQoJCSRzbWRfY2FsX2ZsYWcgPSAkc21kX2NhbF91Y2xz ID0gYXJyYXkoKTsNCgkJJGhhc2FydGljbGUgPSBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVk YXldKTsNCgkJJHRoZWRhdGUgPSBnbW1rdGltZSgwLCAwLCAwLCAkdGhpcy0+bW9udGgsICR0 aGVkYXksICR0aGlzLT55ZWFyKTsNCgkJJGhvbF9oaXQgPSBpbl9hcnJheShkYXRlKCJkLU0t WSIsICR0aGVkYXRlKSwgJHRoaXMtPmhvbGlkYXlzKTsNCgkJaWYgKCRoYXNhcnRpY2xlKSB7 DQoJCQkkc21kX2NhbF9mbGFnW10gPSAnZXZlbnQnOw0KCQl9DQoJCWlmICgkaG9sX2hpdCkg ew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ2hvbHMnOw0KCQl9DQoJCSRjZmxhZyA9IGFycmF5 KCk7DQoJCWZvcmVhY2ggKCRzbWRfY2FsX2ZsYWcgYXMgJGl0ZW0pIHsNCgkJCSRjZmxhZ1td ID0gJHRoaXMtPmNsYXNzcHJlZml4LiRpdGVtOw0KCQl9DQoJCSR0ZGNsYXNzID0gJHRoaXMt PmNlbGxjbGFzcyAuICgoJGNmbGFnKSA/ICcgJy5qb2luKCcgJywgJGNmbGFnKSA6ICcnKTsN CgkJJHJ1bm5pbmdjbGFzcyA9IChpbl9hcnJheSgiY2VsbCIsICR0aGlzLT5jbGFzc2xldmVs cykgfHwgaW5fYXJyYXkoImNlbGxwbHVzIiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkgPyBleHBs b2RlKCcgJywgJHRkY2xhc3MpIDogYXJyYXkoKTsNCgkJaWYoJHRoaXMtPnllYXIgPT0gZGF0 ZSgnWScsdGltZSgpK3R6X29mZnNldCgpICkgYW5kICR0aGlzLT5tb250aCA9PSBkYXRlKCdu Jyx0aW1lKCkrdHpfb2Zmc2V0KCkgKSBhbmQgJHRoZWRheSA9PSBkYXRlKCdqJyx0aW1lKCkr dHpfb2Zmc2V0KCkpICkgew0KCQkJJHNtZF9jYWxfZmxhZ1tdID0gJ3RvZGF5JzsNCgkJCSRy dW5uaW5nY2xhc3NbXSA9ICR0aGlzLT5jbGFzc3ByZWZpeC4ndG9kYXknOw0KCQl9DQoNCgkJ JG91dCA9ICRmbGFncyA9IGFycmF5KCk7DQoJCSRmb3V0ID0gYXJyYXkoJ3N0YW5kYXJkJz0+ YXJyYXkoKSwncmVjdXInPT5hcnJheSgpLCdyZWN1cmZpcnN0Jz0+YXJyYXkoKSwnbXVsdGlm aXJzdCc9PmFycmF5KCksJ211bHRpJz0+YXJyYXkoKSwnbXVsdGlwcmV2Jz0+YXJyYXkoKSwn bXVsdGlsYXN0Jz0+YXJyYXkoKSwnY2FuY2VsJz0+YXJyYXkoKSwnZXh0cmEnPT5hcnJheSgp KTsNCgkJaWYgKGVtcHR5KCR0aGlzLT5jZWxsZm9ybSkpIHsNCgkJCSRvdXRbXSA9IGhlZCgk dGhlZGF5LDQpOw0KCQl9DQoJCWlmKCBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXldKSAp IHsNCgkJCSRkYXlzX2V2ZW50cyA9ICR0aGlzLT5ldmVudHNbJHRoZWRheV07DQoJCQlmb3Jl YWNoKCRkYXlzX2V2ZW50cyBhcyAkZXYpIHsNCgkJCQkkZXZjbGFzcyA9IHRyaW0oJGV2Wydj bGFzc2VzJ10pOw0KCQkJCSRmbGFncyA9IGFycmF5X21lcmdlKCRmbGFncywgJGV2WydmbGFn J10pOw0KCQkJCWlmIChpbl9hcnJheSgiY2VsbHBsdXMiLCAkdGhpcy0+Y2xhc3NsZXZlbHMp KSB7DQoJCQkJCWZvcmVhY2ggKGV4cGxvZGUoJyAnLCAkZXZjbGFzcykgYXMgJGV2Yykgew0K CQkJCQkJJHJ1bm5pbmdjbGFzc1tdPSAkZXZjOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCSRjbHMg PSAoJGV2Y2xhc3MgJiYgaW5fYXJyYXkoImV2ZW50IiwgJHRoaXMtPmNsYXNzbGV2ZWxzKSkg PyAnIGNsYXNzPSInLiRldmNsYXNzLiciJyA6ICcnOw0KCQkJCSRvcCA9ICgkdGhpcy0+ZXZ3 cmFwdGFnKSA/IHRhZygkZXZbJ2V2J10sICR0aGlzLT5ldndyYXB0YWcsICRjbHMpIDogJGV2 WydldiddOw0KCQkJCWZvcmVhY2ggKCRldlsnZmxhZyddIGFzICRmbGV2KSB7DQoJCQkJCSRm b3V0WyRmbGV2XVtdID0gJG9wOw0KCQkJCX0NCgkJCQkkb3V0W10gPSAkb3A7DQoJCQl9DQoJ CX0NCg0KCQkvLyBBbWFsZ2FtYXRlIHRoZSBldmVudC1sZXZlbCBjbGFzc2VzIGFuZCBjZWxs LWxldmVsIGNsYXNzZXMgaWYgcmVxdWlyZWQNCgkJJHJ1bm5pbmdjbGFzcyA9IGFycmF5X3Vu aXF1ZSgkcnVubmluZ2NsYXNzKTsNCgkJaWYgKGluX2FycmF5KCJjZWxscGx1cyIsICR0aGlz LT5jbGFzc2xldmVscykpIHsNCgkJCSRzbWRfY2FsX2ZsYWcgPSBhcnJheV9tZXJnZSgkc21k X2NhbF9mbGFnLCAkZmxhZ3MpOw0KCQl9DQoNCgkJaWYgKCR0aGlzLT5jZWxsZm9ybSkgew0K CQkJJHRoaXN0aW1lID0gZ21ta3RpbWUoMCwgMCwgMCwgJHRoaXMtPm1vbnRoLCAkdGhlZGF5 LCAkdGhpcy0+eWVhcik7DQoJCQkkc21kX2NhbGluZm9bJ2lkJ10gPSAkdGhpcy0+dGFibGVJ RDsNCgkJCSRzbWRfZGF0ZVsneSddID0gJHRoaXMtPnllYXI7DQoJCQkkc21kX2RhdGVbJ20n XSA9ICR0aGlzLT5tb250aDsNCgkJCSRzbWRfZGF0ZVsndyddID0gc3RyZnRpbWUoIiVWIiwg JHRoaXN0aW1lKTsNCgkJCSRzbWRfZGF0ZVsnaXknXSA9IHN0cmZ0aW1lKCIlRyIsICR0aGlz dGltZSk7DQoJCQkkc21kX2RhdGVbJ2QnXSA9ICR0aGVkYXk7DQoJCQkkcmVwcyA9IGFycmF5 KA0KCQkJCSd7c3RhbmRhcmR9JyA9PiBqb2luKCcnLCRmb3V0WydzdGFuZGFyZCddKSwNCgkJ CQkne3JlY3VyfScgPT4gam9pbignJywkZm91dFsncmVjdXInXSksDQoJCQkJJ3tyZWN1cmZp cnN0fScgPT4gam9pbignJywkZm91dFsncmVjdXJmaXJzdCddKSwNCgkJCQkne2FsbHJlY3Vy fScgPT4gam9pbignJyxhcnJheV9tZXJnZSgkZm91dFsncmVjdXInXSwgJGZvdXRbJ3JlY3Vy Zmlyc3QnXSkpLA0KCQkJCSd7bXVsdGlmaXJzdH0nID0+IGpvaW4oJycsJGZvdXRbJ211bHRp Zmlyc3QnXSksDQoJCQkJJ3ttdWx0aXByZXZ9JyA9PiBqb2luKCcnLCRmb3V0WydtdWx0aXBy ZXYnXSksDQoJCQkJJ3ttdWx0aX0nID0+IGpvaW4oJycsJGZvdXRbJ211bHRpbGFzdCddKSwN CgkJCQkne211bHRpbGFzdH0nID0+IGpvaW4oJycsJGZvdXRbJ211bHRpbGFzdCddKSwNCgkJ CQkne2FsbG11bHRpfScgPT4gam9pbignJyxhcnJheV9tZXJnZSgkZm91dFsnbXVsdGlmaXJz dCddLCRmb3V0WydtdWx0aSddLCRmb3V0WydtdWx0aXByZXYnXSwkZm91dFsnbXVsdGlsYXN0 J10pKSwNCgkJCQkne2NhbmNlbH0nID0+IGpvaW4oJycsJGZvdXRbJ2NhbmNlbCddKSwNCgkJ CQkne2V4dHJhfScgPT4gam9pbignJywkZm91dFsnZXh0cmEnXSksDQoJCQkJJ3tldmVudHN9 JyA9PiBqb2luKCcnLCRvdXQpLA0KCQkJCSd7ZGF5fScgPT4gJHRoZWRheSwNCgkJCQkne3dl ZWtkYXl9JyA9PiAoKGlzX2FycmF5KCR0aGlzLT5kYXlOYW1lRm10KSkgPyAkdGhpcy0+ZGF5 TmFtZXNbZGF0ZSgndycsJHRoaXN0aW1lKV0gOiBzdHJmdGltZSgkdGhpcy0+ZGF5TmFtZUZt dCwgJHRoaXN0aW1lKSksDQoJCQkJJ3t3ZWVrfScgPT4gJHNtZF9kYXRlWyd3J10sDQoJCQkJ J3ttb250aH0nID0+ICR0aGlzLT5tb250aCwNCgkJCQkne21vbnRobmFtZX0nID0+IHN0cmZ0 aW1lKCR0aGlzLT5tdGhOYW1lRm10LCAkdGhpc3RpbWUpLA0KCQkJCSd7eWVhcn0nID0+ICR0 aGlzLT55ZWFyLA0KCQkJCSd7c2hvcnR5ZWFyfScgPT4gc3RyZnRpbWUoIiV5IiwgJHRoaXN0 aW1lKSwNCgkJCQkne2lzb3llYXJ9JyA9PiAkc21kX2RhdGVbJ2l5J10sDQoJCQkJJ3tzaG9y dGlzb3llYXJ9JyA9PiBzdHJmdGltZSgiJWciLCAkdGhpc3RpbWUpLA0KCQkJKTsNCgkJCSRj ZWxsb3V0ID0gcGFyc2Uoc3RydHIoJHRoaXMtPmNlbGxmb3JtLCAkcmVwcykpOw0KCQkJJGNh cnJheSA9IGFycmF5X21lcmdlKCRydW5uaW5nY2xhc3MsICRzbWRfY2FsX3VjbHMpOw0KCQkJ JHNtZF9jYWxfdWNscyA9IGFycmF5KCk7DQoNCgkJCXJldHVybiBkb1RhZygkY2VsbG91dCwn dGQnLGpvaW4oJyAnLCRjYXJyYXkpKTsNCgkJfSBlbHNlIHsNCgkJCXJldHVybiBkb1RhZyhq b2luKCcnLCRvdXQpLCd0ZCcsam9pbignICcsJHJ1bm5pbmdjbGFzcykpOw0KCQl9DQoJfQ0K DQoJZnVuY3Rpb24gZGlzcGxheSgkc3RhdGljPWZhbHNlLCAkZnV0dXJlPWZhbHNlKSB7DQoJ CSRpZCA9ICgkdGhpcy0+dGFibGVJRCkgPyAnIGlkPSInLiR0aGlzLT50YWJsZUlELiciJyA6 ICcnOw0KCQkkY1tdID0gJHRoaXMtPmRzcEhlYWRlcigkc3RhdGljLCAkZnV0dXJlKTsNCgkJ JGNbXSA9ICR0aGlzLT5kc3BEYXlOYW1lcygpOw0KCQkkY1tdID0gJHRoaXMtPmRzcERheUNl bGxzKCk7DQoNCgkJcmV0dXJuIGRvVGFnKGpvaW4oJycsJGMpLCd0YWJsZScsJHRoaXMtPnRh YmxlY2xhc3MsJGlkKTsNCgl9DQoNCglmdW5jdGlvbiBkc3BIZWFkZXIoJHN0YXRpYywgJGZ1 dHVyZSkgew0KCQlnbG9iYWwgJHByZXRleHQsICRzbWRfY2FsaW5mbzsNCg0KCQkkY3Vycm1v ID0gJHRoaXMtPm1vbnRoOw0KCQkkY3VycnlyID0gJHRoaXMtPnllYXI7DQoJCSRuYXZwY2xh c3MgPSAkdGhpcy0+Z2V0TmF2SW5mbygicGMiKTsNCgkJJG5hdm5jbGFzcyA9ICR0aGlzLT5n ZXROYXZJbmZvKCJuYyIpOw0KCQkkbmF2cGFycm93ID0gJHRoaXMtPmdldE5hdkluZm8oInBh Iik7DQoJCSRuYXZuYXJyb3cgPSAkdGhpcy0+Z2V0TmF2SW5mbygibmEiKTsNCgkJJG5hdmlk ID0gJHRoaXMtPmdldE5hdkluZm8oImlkIik7DQoJCSRuYXZwY2xhc3MgPSAoJG5hdnBjbGFz cykgPyAnIGNsYXNzPSInLiRuYXZwY2xhc3MuJyInIDogJyc7DQoJCSRuYXZuY2xhc3MgPSAo JG5hdm5jbGFzcykgPyAnIGNsYXNzPSInLiRuYXZuY2xhc3MuJyInIDogJyc7DQoJCSRmb3B0 cyA9ICR0aGlzLT5mb3B0czsNCgkJJHNlYyA9IChpc3NldCgkc21kX2NhbGluZm9bJ3MnXSkg JiYgIWVtcHR5KCRzbWRfY2FsaW5mb1sncyddKSkgPyAkc21kX2NhbGluZm9bJ3MnXSA6ICcn Ow0KCQlmb3JlYWNoICgkdGhpcy0+bWFpbnRhaW4gYXMgJGNvbCkgew0KCQkJc3dpdGNoICgk Y29sKSB7DQoJCQkJY2FzZSAic2VjdGlvbiI6DQoJCQkJCSRzZWMgPSAoJHByZXRleHRbJ3Mn XSkgPyAkcHJldGV4dFsncyddIDogJHNlYzsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiYXJ0 aWNsZSI6DQoJCQkJCWlmICgkcHJldGV4dFsnaWQnXSkgew0KCQkJCQkJJGZvcHRzID0gYXJy YXkoJ2lkJyA9PiAkcHJldGV4dFsnaWQnXSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJl YWs7DQoJCQkJY2FzZSAiY2F0ZWdvcnkiOg0KCQkJCQlpZiAoJHByZXRleHRbJ2MnXSkgew0K CQkJCQkJJGZvcHRzID0gYXJyYXkoJ2MnID0+ICRwcmV0ZXh0WydjJ10pICsgJGZvcHRzOw0K CQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImF1dGhvciI6DQoJCQkJCWlmIChncHMo J2F1dGhvcicpKSB7DQoJCQkJCQkkZm9wdHMgPSBhcnJheSgnYXV0aG9yJyA9PiBncHMoJ2F1 dGhvcicpKSArICRmb3B0czsNCgkJCQkJfQ0KCQkJCQlicmVhazsNCgkJCQljYXNlICJwZyI6 DQoJCQkJCWlmICgkcHJldGV4dFsncGcnXSkgew0KCQkJCQkJJGZvcHRzID0gYXJyYXkoJ3Bn JyA9PiAkcHJldGV4dFsncGcnXSkgKyAkZm9wdHM7DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJ CQkJY2FzZSAiY2FsaWQiOg0KCQkJCQlpZiAoJHRoaXMtPnRhYmxlSUQpIHsNCgkJCQkJCSRm b3B0cyA9IGFycmF5KCdjYWxpZCcgPT4gJHRoaXMtPnRhYmxlSUQpICsgJGZvcHRzOw0KCQkJ CQl9DQoJCQkJCWJyZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCWlmIChncHMoJGNvbCkpIHsN CgkJCQkJCSRmb3B0cyA9IGFycmF5KCRjb2wgPT4gZ3BzKCRjb2wpKSArICRmb3B0czsNCgkJ CQkJfQ0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQkkZm9wdHMgPSBhcnJheV91bmlxdWUo JGZvcHRzKTsNCgkJJGZpbHRlcnMgPSBhcnJheSgpOw0KCQkkZmlsdGVySGlkID0gYXJyYXko KTsNCgkJaWYgKCEkc3RhdGljKSB7DQoJCQlmb3JlYWNoKCRmb3B0cyBhcyAka2V5ID0+ICR2 YWwpIHsNCgkJCQkkZmlsdGVyc1tdID0gJGtleS4nPScuJHZhbDsNCgkJCQkkZmlsdGVySGlk W10gPSBoSW5wdXQoJGtleSwgJHZhbCk7DQoJCQl9DQoJCX0NCgkJJGZpbHRlclVSTCA9IGpv aW4oYSwgJGZpbHRlcnMpOw0KDQoJCS8vIFdlZWsgc2VsZWN0IGxpc3QNCgkJaWYgKCR0aGlz LT51c2VTZWxlY3Rvcignd2VlaycpICYmICEkc3RhdGljKSB7DQoJCQkkY3VycndrID0gKCR0 aGlzLT53ZWVrKSA/ICR0aGlzLT53ZWVrIDogZGF0ZSgnVycsIHN0cnRvdGltZSggJGN1cnJ5 ci4iLSIuJGN1cnJtby4iLTEgMTI6MDAiICkpOw0KCQkJZm9yICggJGlkeCA9IDE7ICRpZHgg PD0gNTI7ICRpZHgrKyApIHsNCgkJCQkkdGFnYXR0cyA9ICcgdmFsdWU9IicuJGlkeC4nIic7 DQoJCQkJaWYgKCAkaWR4ID09ICRjdXJyd2sgKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJz ZWxlY3RlZCInOw0KCQkJCSRvcHRpb250YWdzW10gPSBkb1RhZygkdGhpcy0+c2VscGZ4Wyd3 ZWVrJ10uc3RyX3BhZCgkaWR4LCAyLCAnMCcsIFNUUl9QQURfTEVGVCkuJHRoaXMtPnNlbHNm eFsnd2VlayddLCAnb3B0aW9uJywgJycsICR0YWdhdHRzKTsNCgkJCX0NCgkJCSRzZWxlY3Rv cltdID0gZG9UYWcoam9pbihuLCAkb3B0aW9udGFncyksICdzZWxlY3QnLCAoKCR0aGlzLT5t eXdyYXB0YWcpID8gJycgOiAkdGhpcy0+bXljbGFzcyksICcgbmFtZT0idyInLigoJHRoaXMt PnNlbGJ0bikgPyAnJyA6ICcgb25jaGFuZ2U9InN1Ym1pdCgpIicpLCAnJykNCiAgIAkJCQku ICgoJHRoaXMtPnVzZVNlbGVjdG9yKCd5ZWFyJykpID8gJycgOiBoSW5wdXQoJ3knLCAkY3Vy cnlyKSk7DQoJCQkkb3B0aW9udGFncyA9IGFycmF5KCk7IC8vIEJsYW5rIG91dA0KCQl9DQoN CgkJLy8gTW9udGggc2VsZWN0IGxpc3QgLSBub3RlIG1rdGltZSBoYXMgdGhlIGRheSBmb3Jj ZWQgdG8gMS4gSWYgbm90IHlvdSBnZXQNCgkJLy8gYml6YXJyZSByZXBlYXRlZCBtb250aCBu YW1lcyBvbiB0aGUgMzFzdCBvZiBzb21lIG1vbnRocyA6LVwNCgkJaWYgKCEkdGhpcy0+dXNl U2VsZWN0b3IoJ3dlZWsnKSkgew0KCQkJaWYgKCR0aGlzLT51c2VTZWxlY3RvcignbW9udGgn KSAmJiAhJHN0YXRpYykgew0KCQkJCWZvciAoICRpZHggPSAxOyAkaWR4IDw9IDEyOyAkaWR4 KysgKSB7DQoJCQkJCSR0YWdhdHRzID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQkJaWYg KCAkaWR4ID09ICRjdXJybW8gKSAkdGFnYXR0cyAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCIn Ow0KCQkJCQkkb3B0aW9udGFnc1tdID0gZG9UYWcoJHRoaXMtPnNlbHBmeFsnbW9udGgnXS5z dHJmdGltZSgkdGhpcy0+bXRoTmFtZUZtdCwgZ21ta3RpbWUoMTIsMCwwLCRpZHgsMSkpLiR0 aGlzLT5zZWxzZnhbJ21vbnRoJ10sICdvcHRpb24nLCAnJywgJHRhZ2F0dHMpOw0KCQkJCX0N CgkJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKGpvaW4obiwgJG9wdGlvbnRhZ3MpLCAnc2VsZWN0 JywgKCgkdGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpLCAnIG5hbWU9 Im0iJy4oKCR0aGlzLT5zZWxidG4pID8gJycgOiAnIG9uY2hhbmdlPSJzdWJtaXQoKSInKSwg JycpDQoJICAgCQkJCS4gKCgkdGhpcy0+dXNlU2VsZWN0b3IoJ3llYXInKSkgPyAnJyA6IGhJ bnB1dCgneScsICRjdXJyeXIpKTsNCgkJCQkkb3B0aW9udGFncyA9IGFycmF5KCk7IC8vIEJs YW5rIG91dA0KCQkJfSBlbHNlIHsNCgkJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKCR0aGlzLT5n ZXRNb250aE5hbWUoKSwgJ3NwYW4nLCAoKCR0aGlzLT5teXdyYXB0YWcpID8gJycgOiAkdGhp cy0+bXljbGFzcykpOw0KCQkJfQ0KCQl9DQoNCgkJLy8gWWVhciBzZWxlY3QgbGlzdA0KCQkk eTAgPSAkdGhpcy0+ZXlyOw0KCQkkeTEgPSAkdGhpcy0+bHlyOw0KCQlpZiAoJHRoaXMtPnVz ZVNlbGVjdG9yKCd5ZWFyJykgJiYgKCR5MCAhPSAkeTEpICYmICEkc3RhdGljKSB7DQoJCQlm b3IgKCAkaWR4ID0gJHkwOyAkaWR4IDw9ICR5MTsgJGlkeCsrICkgew0KCQkJCSR0YWdhdHRz ID0gJyB2YWx1ZT0iJy4kaWR4LiciJzsNCgkJCQlpZiAoICRpZHggPT0gJGN1cnJ5ciApICR0 YWdhdHRzIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7DQoJCQkJJG9wdGlvbnRhZ3NbXSA9 IGRvVGFnKCR0aGlzLT5zZWxwZnhbJ3llYXInXS4kaWR4LiR0aGlzLT5zZWxzZnhbJ3llYXIn XSwgJ29wdGlvbicsICcnLCAkdGFnYXR0cyk7DQoJCQl9DQoJCQkkc2VsZWN0b3JbXSA9IGRv VGFnKGpvaW4obiwgJG9wdGlvbnRhZ3MpLCAnc2VsZWN0JywgKCgkdGhpcy0+bXl3cmFwdGFn KSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpLCAnIG5hbWU9InkiJy4oKCR0aGlzLT5zZWxidG4p ID8gJycgOiAnIG9uY2hhbmdlPSJzdWJtaXQoKSInKSwgJycpDQoJCQkJCS4gKCgkdGhpcy0+ dXNlU2VsZWN0b3IoJ21vbnRoJykpID8gJycgOiBoSW5wdXQoJ20nLCAkY3Vycm1vKSk7DQoJ CX0gZWxzZSB7DQoJCQkkc2VsZWN0b3JbXSA9IGRvVGFnKCRjdXJyeXIsICdzcGFuJywgKCgk dGhpcy0+bXl3cmFwdGFnKSA/ICcnIDogJHRoaXMtPm15Y2xhc3MpKTsNCgkJfQ0KDQoJCSRl eHRyYXMgPSAnJzsNCgkJaWYgKCEkc3RhdGljICYmICggJHRoaXMtPnVzZVNlbGVjdG9yKCdt b250aCcpIHx8ICR0aGlzLT51c2VTZWxlY3RvcigneWVhcicpICkpIHsNCgkJCWlmICgkdGhp cy0+c2VsYnRuKSB7DQoJCQkJJGV4dHJhcyAuPSBkb1RhZygnJywgJ2lucHV0JywgJ3NtZF9j YWxfaW5wdXQnLCAnIHR5cGU9InN1Ym1pdCIgdmFsdWU9IicuJHRoaXMtPnNlbGJ0bi4nIicp Ow0KCQkJfQ0KCQkJJGV4dHJhcyAuPSBqb2luKCcnLCAkZmlsdGVySGlkKTsNCgkJfQ0KDQoJ CSR1cmxwID0gcGFyc2VfdXJsKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddKTsNCgkJJHNlbGVj dG9yID0gJzxmb3JtIGFjdGlvbj0iJy4kdXJscFsncGF0aCddLiciIG1ldGhvZD0iZ2V0Iicu KCgkbmF2aWQpID8gJyBpZD0iJy4kbmF2aWQuJyInIDogJycpLic+Jy5kb1RhZyhqb2luKHNw LCAkc2VsZWN0b3IpLiRleHRyYXMsICR0aGlzLT5teXdyYXB0YWcsICR0aGlzLT5teWNsYXNz KS4nPC9mb3JtPic7DQoNCgkJJG5hdl9iYWNrX2xpbmsgPSAkdGhpcy0+bmF2aWdhdGlvbigk Y3VycnlyLCAkY3Vycm1vLCAnLScsICRmaWx0ZXJVUkwsICRzZWMpOw0KCQkkbmF2X2Z3ZF9s aW5rICA9ICR0aGlzLT5uYXZpZ2F0aW9uKCRjdXJyeXIsICRjdXJybW8sICcrJywgJGZpbHRl clVSTCwgJHNlYyk7DQoNCgkJJG5hdl9iYWNrID0gKCEkc3RhdGljICYmICRuYXZfYmFja19s aW5rKSA/ICc8YSBocmVmPSInLiRuYXZfYmFja19saW5rLiciJy4kbmF2cGNsYXNzLic+Jy4k bmF2cGFycm93Lic8L2E+JyA6ICcmbmJzcDsnOw0KCQkkbmF2X2Z3ZCAgPSAoISRzdGF0aWMg JiYgJGZ1dHVyZSAmJiAkbmF2X2Z3ZF9saW5rKSA/ICc8YSBocmVmPSInLiRuYXZfZndkX2xp bmsuJyInLiRuYXZuY2xhc3MuJz4nLiRuYXZuYXJyb3cuJzwvYT4nIDogJyZuYnNwOyc7DQoN CgkJJGNbXSA9IGRvVGFnKCRuYXZfYmFjaywndGgnKTsNCgkJJGNbXSA9ICc8dGggY29sc3Bh bj0iJy4oKCR0aGlzLT5zaG93SVNPV2VlaykgPyA2IDogNSkuJyI+Jy4kc2VsZWN0b3IuJzwv dGg+JzsNCgkJJGNbXSA9IGRvVGFnKCRuYXZfZndkLCd0aCcpOw0KDQoJCXJldHVybiBkb1Rh Zyhqb2luKCcnLCRjKSwndHInLCAnc21kX2NhbF9uYXZyb3cnKTsNCgl9DQoNCglmdW5jdGlv biBuYXZpZ2F0aW9uKCR5ZWFyLCRtb250aCwkZGlyZWN0aW9uLCRmbHQsJHNlYz0nJykgew0K CQlnbG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJaWYoJGRpcmVjdGlvbiA9PSAnLScpIHsN CgkJCWlmKCRtb250aCAtIDEgPCAxKSB7DQoJCQkJJG1vbnRoID0gMTI7DQoJCQkJJHllYXIg LT0gMTsNCgkJCX0gZWxzZSB7DQoJCQkJJG1vbnRoIC09IDE7DQoJCQl9DQoJCX0gZWxzZSB7 DQoJCQlpZigkbW9udGggKyAxID4gMTIpIHsNCgkJCQkkbW9udGggPSAxOw0KCQkJCSR5ZWFy ICs9IDE7DQoJCQl9IGVsc2Ugew0KCQkJCSRtb250aCArPSAxOw0KCQkJfQ0KCQl9DQoNCgkJ Ly8gQWJvcnQgaWYgd2UncmUgYWJvdXQgdG8gZ28gb3V0IG9mIHJhbmdlDQoJCWlmICgkeWVh ciA8ICR0aGlzLT5leXIgfHwgJHllYXIgPiAkdGhpcy0+bHlyKSB7DQoJCQlyZXR1cm4gJyc7 DQoJCX0NCgkJJGZsdCA9ICgkZmx0KSA/IGEuJGZsdCA6ICcnOw0KCQlpZigkcGVybWxpbmtf bW9kZSAhPSAnbWVzc3knKSB7DQoJCQkkdXJsID0gJyc7DQoJCQlpZiAoJHNlYyAmJiBzdHJw b3MoJHBlcm1saW5rX21vZGUsICdzZWN0aW9uJyAhPT0gZmFsc2UpKSB7DQoJCQkJJHVybCA9 IGh1LiRzZWMuJy8nLigoJHBlcm1saW5rX21vZGU9PSdzZWN0aW9uX2lkX3RpdGxlJykgPyAk c21kX2NhbGluZm9bJ2FydGlkJ10gOiAnJykuJHNtZF9jYWxpbmZvWydhcnRpdGxlJ107DQoJ CQl9DQoJCQlyZXR1cm4gJHVybC4iP209JG1vbnRoIi5hLiJ5PSR5ZWFyIi4kZmx0Ow0KCQl9 IGVsc2UgeyAvLyBmb3IgbWVzc3kgVVJMcyB3ZSBuZWVkIHRvIGJ1aWxkIHRoZSBlbnRpcmUg cmVxdWVzdCBzdHJpbmcgZmlyc3QsIHRoZW4gdGFjayBvbiB0aGUgcmVzdA0KCQkJJG91dCA9 IG1ha2VPdXQoJ2lkJywncycsJ2MnLCdxJywncGcnLCdwJywnbW9udGgnKTsNCgkJCSRvdXRb J3MnXSA9ICgkc2VjKSA/ICRzZWMgOiAkb3V0WydzJ107DQoJCQkkciA9ICc/JzsNCgkJCWZv cmVhY2goJG91dCBhcyAka2V5ID0+ICR2YWwgKSB7DQoJCQkJJHIgLj0gKCR2YWwpID8gIiRr ZXk9JHZhbCIuYSA6ICcnOw0KCQkJfQ0KCQkJcmV0dXJuICRyLiJtPSRtb250aCIuYS4ieT0k eWVhciIuJGZsdDsNCgkJfQ0KCX0NCn0NCg0KY2xhc3MgU01EX1NtYWxsX0NhbGVuZGFyIGV4 dGVuZHMgU01EX0NhbGVuZGFyIHsNCgl2YXIgJHNlY3Rpb24gPSAnJzsNCgl2YXIgJGNhdGVn b3J5ID0gJyc7DQoJZnVuY3Rpb24gU01EX1NtYWxsX0NhbGVuZGFyKCR5ZWFyLCRtb250aCwk ZXZlbnRzLCRzZWN0aW9uLCRjYXRlZ29yeSkgew0KCQkkdGhpcy0+c2VjdGlvbiA9ICRzZWN0 aW9uOw0KCQkkdGhpcy0+Y2F0ZWdvcnkgPSAkY2F0ZWdvcnk7DQoJCSR0aGlzLT5TTURfQ2Fs ZW5kYXIoJHllYXIsJG1vbnRoLCRldmVudHMpOw0KCX0NCg0KCWZ1bmN0aW9uIGRzcERheUNl bGwoJHRoZWRheSkgew0KCQlnbG9iYWwgJHBlcm1saW5rX21vZGU7DQoNCgkJJGhhc2FydGlj bGUgPSBpc3NldCgkdGhpcy0+ZXZlbnRzWyR0aGVkYXldKTsNCgkJJGNsYXNzW10gPSAkdGhp cy0+Y2VsbGNsYXNzLicgJyAuICgoJGhhc2FydGljbGUpID8gJHRoaXMtPmNsYXNzcHJlZml4 LidldmVudCcgOiAnJyk7DQoJCWlmICgoaW5fYXJyYXkoIGRhdGUoJ2QtTS1ZJywgZ21ta3Rp bWUoIDAsIDAsIDAsICR0aGlzLT5tb250aCwgJHRoZWRheSwgJHRoaXMtPnllYXIpICksICR0 aGlzLT5ob2xpZGF5cykpICkgew0KCQkJJGNsYXNzW10gPSAkdGhpcy0+Y2xhc3NwcmVmaXgu J2hvbHMnOw0KCQl9DQoJCWlmKCR0aGlzLT55ZWFyID09IGRhdGUoJ1knLHRpbWUoKSt0el9v ZmZzZXQoKSApIGFuZCAkdGhpcy0+bW9udGggPT0gZGF0ZSgnbicsdGltZSgpK3R6X29mZnNl dCgpICkgYW5kICR0aGVkYXkgPT0gZGF0ZSgnaicsdGltZSgpK3R6X29mZnNldCgpKSApIHsN CgkJCSRjbGFzc1tdID0gJHRoaXMtPmNsYXNzcHJlZml4Lid0b2RheSc7DQoJCX0NCg0KCQlp ZiggaXNzZXQoJHRoaXMtPmV2ZW50c1skdGhlZGF5XSkgKSB7DQoJCQkkZGF5c19ldmVudHMg PSAkdGhpcy0+ZXZlbnRzWyR0aGVkYXldOw0KCQkJZm9yZWFjaCgkZGF5c19ldmVudHMgYXMg JGV2KSB7DQoJCQkJJGV2Y2xhc3MgPSB0cmltKCRldlsnY2xhc3NlcyddKTsNCgkJCQlmb3Jl YWNoIChleHBsb2RlKCcgJywgJGV2Y2xhc3MpIGFzICRldmMpIHsNCgkJCQkJJGNsYXNzW109 ICRldmM7DQoJCQkJfQ0KDQoJCQkJJG91dFtdID0gKCR0aGlzLT5ldndyYXB0YWcpID8gdGFn KCRldlsnZXYnXSwgJHRoaXMtPmV2d3JhcHRhZywgKCgkZXZjbGFzcykgPyAnIGNsYXNzPSIn LiRldmNsYXNzLiciJyA6ICcnKSkgOiAkZXZbJ2V2J107DQoJCQl9DQoJCQkkdXNlX3Bvc3Rl ZCA9IGZhbHNlOw0KCQkJZm9yZWFjaCAoJHRoaXMtPmxpbmtwb3N0ZWQgYXMgJGRsaW5rcykg ew0KCQkJCWlmIChpbl9hcnJheSgkZGxpbmtzLCAkY2xhc3MpKSB7DQoJCQkJCSR1c2VfcG9z dGVkID0gdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYoICRwZXJtbGlu a19tb2RlICE9ICd5ZWFyX21vbnRoX2RheV90aXRsZScgKSB7DQoJCQkJJGxpbmtkYXRlID0g KCR1c2VfcG9zdGVkKSA/ICRldlsncG9zdGVkJ10gOiAkdGhpcy0+eWVhci4nLScuJHRoaXMt PmRvdWJsZWRpZ2l0KCR0aGlzLT5tb250aCkuJy0nLiR0aGlzLT5kb3VibGVkaWdpdCgkdGhl ZGF5KTsNCgkJCQkkaHJlZiA9ICcgaHJlZj0iJy5odS4nP2RhdGU9Jy4kbGlua2RhdGU7DQoJ CQkJaWYoJHRoaXMtPnNlY3Rpb24pIHsgJGhyZWYgPSAkaHJlZi5hLidzPScuJHRoaXMtPnNl Y3Rpb247IH0NCgkJCQlpZigkdGhpcy0+Y2F0ZWdvcnkpIHsgJGhyZWYgPSAkaHJlZi5hLidj PScuJHRoaXMtPmNhdGVnb3J5OyB9DQoJCQkJJGhyZWYgLj0gJyInOw0KCQkJfSBlbHNlIHsN CgkJCQkkc2VjdGlvbiA9ICgkdGhpcy0+c2VjdGlvbikgPyAkdGhpcy0+c2VjdGlvbi4nLycg OiAnJzsNCgkJCQkkbGlua2RhdGUgPSAoJHVzZV9wb3N0ZWQpID8gcHJlZ19yZXBsYWNlKCIt IiwgIi8iLCAkZXZbJ3Bvc3RlZCddKSA6ICR0aGlzLT55ZWFyLicvJy4kdGhpcy0+ZG91Ymxl ZGlnaXQoJHRoaXMtPm1vbnRoKS4nLycuJHRoaXMtPmRvdWJsZWRpZ2l0KCR0aGVkYXkpOw0K CQkJCSRocmVmID0gJyBocmVmPSInLmh1LiRzZWN0aW9uLiRsaW5rZGF0ZS4nIic7DQoJCQl9 DQoNCgkJCSRjW10gPSBkb1RhZygkdGhlZGF5LmpvaW4oJycsJG91dCksJ2EnLCcnLCRocmVm KTsNCgkJfSBlbHNlIHsNCgkJCSRjW10gPSAkdGhlZGF5Ow0KCQl9DQoNCgkJcmV0dXJuIGRv VGFnKGpvaW4oJycsJGMpLCd0ZCcsam9pbignICcsJGNsYXNzKSk7DQoJfQ0KDQoJZnVuY3Rp b24gZG91YmxlZGlnaXQoJG4pIHsNCgkJaWYoJG4gPCAxMCkgeyAkbiA9ICcwJy4oaW50KSRu OyB9DQoJCXJldHVybiAkbjsNCgl9DQoNCn0NCg0KLyoqDQoqIEJhc2ljIENhbGVuZGFyIGRh dGEgYW5kIGRpc3BsYXkNCiogaHR0cDovL3d3dy5vc2Nhcm0ub3JnL3N0YXRpYy9wZy9jYWxl bmRhckNsYXNzLw0KKiBAYXV0aG9yIE9zY2FyIE1lcmlkYQ0KKiBAY3JlYXRlZCBKYW4gMTgg MjAwNA0KKiBAcGFja2FnZSAgZ29Db3JlTGliDQoqLw0KY2xhc3MgU01EX1Jhd19DYWxlbmRh ciB7DQp2YXIgJGdtdCA9IDE7DQp2YXIgJGxhbmc7DQp2YXIgJHllYXI7DQp2YXIgJGV5cjsN CnZhciAkbHlyOw0KdmFyICRtb250aDsNCnZhciAkd2VlazsNCnZhciAkZGF5TmFtZUZtdDsN CnZhciAkbXRoTmFtZUZtdDsNCnZhciAkZGF5TmFtZXM7DQp2YXIgJHN0YXJ0RGF5Ow0KdmFy ICRzZWxlY3RvcnM7DQp2YXIgJHNlbGJ0bjsNCnZhciAkc2VscGZ4Ow0KdmFyICRzZWxzZng7 DQp2YXIgJHNob3dJU09XZWVrOw0KdmFyICRJU09XZWVrSGVhZDsNCnZhciAkSVNPV2Vla0Nl bGw7DQp2YXIgJGVuZERheTsNCnZhciAkZmlyc3REYXlPZldlZWsgPSAwOw0KdmFyICRzdGFy dE9mZnNldCA9IDA7DQp2YXIgJGNsYXNzbGV2ZWxzOw0KdmFyICRjbGFzc3ByZWZpeDsNCnZh ciAkZXZjbGFzc3ByZWZpeDsNCnZhciAkZXZ3cmFwdGFnOw0KdmFyICRteXdyYXB0YWc7DQp2 YXIgJHJvd2NsYXNzOw0KdmFyICRjZWxsY2xhc3M7DQp2YXIgJGVtcHR5Y2xhc3M7DQp2YXIg JGlzb2NsYXNzOw0KdmFyICRuYXZwY2xhc3M7DQp2YXIgJG5hdm5jbGFzczsNCnZhciAkbmF2 cGFycm93Ow0KdmFyICRuYXZuYXJyb3c7DQp2YXIgJG5hdmlkOw0KdmFyICRteWNsYXNzOw0K dmFyICRmb3B0czsNCnZhciAkaG9saWRheXM7DQp2YXIgJGxpbmtwb3N0ZWQ7DQp2YXIgJGNl bGxmb3JtOw0KdmFyICR0YWJsZUlEOw0KdmFyICRtYWludGFpbjsNCi8qKg0KKiBDb25zdHJ1 Y3Rvcg0KKg0KKiBAcGFyYW0gaW50ZWdlciwgeWVhcg0KKiBAcGFyYW0gaW50ZWdlciwgbW9u dGgNCiogQHJldHVybiBvYmplY3QNCiogQHB1YmxpYw0KKi8NCmZ1bmN0aW9uIFNNRF9SYXdf Q2FsZW5kYXIgKCAkeXIsICRtbyApIHsNCgkkdGhpcy0+c2V0WWVhcigkeXIpOw0KCSR0aGlz LT5zZXRNb250aCgkbW8pOw0KCSR0aGlzLT5zZXRDbGFzc1ByZWZpeCgnc21kX2NhbF8nKTsN Cg0KCSR0aGlzLT5zdGFydFRpbWUgPSBzdHJ0b3RpbWUoICIkeXItJG1vLTAxIDAwOjAwIiAp Ow0KCSR0aGlzLT5zdGFydERheQk9IGRhdGUoICdEJywgJHRoaXMtPnN0YXJ0VGltZSApOw0K CSR0aGlzLT5lbmREYXkgPSBkYXRlKCAndCcsICR0aGlzLT5zdGFydFRpbWUgKTsNCgkkdGhp cy0+ZW5kVGltZSAgID0gc3RydG90aW1lKCAiJHlyLSRtby0iLiR0aGlzLT5lbmREYXkuIiAy Mzo1OSIgKTsNCg0KCSR0aGlzLT5zZXROYW1lRm9ybWF0KCclYScsICdkJyk7DQoJJHRoaXMt PnNldE5hbWVGb3JtYXQoJyVCJywgJ20nKTsNCgkkdGhpcy0+c2V0Rmlyc3REYXlPZldlZWso MCk7DQoJJHRoaXMtPnNldFNob3dJU09XZWVrKCcnKTsNCgkkdGhpcy0+c2V0VGFibGVJRCgn Jyk7DQoJJHRoaXMtPnNldFRhYmxlQ2xhc3MoJycpOw0KfQ0KLy8gPT09PSBlbmQgQ2FsZW5k YXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQov LyBHZXR0ZXJzDQpmdW5jdGlvbiB1c2VTZWxlY3RvcigkdmFsKSB7IHJldHVybiBpbl9hcnJh eSgkdmFsLCAkdGhpcy0+c2VsZWN0b3JzKTsgfQ0KZnVuY3Rpb24gZ2V0RGF5TmFtZSgkZGF5 KSB7IHJldHVybiAoJHRoaXMtPmRheU5hbWVzWyRkYXklN10pOyB9DQpmdW5jdGlvbiBnZXRN b250aE5hbWUoKSB7IHJldHVybiBzdHJmdGltZSggJHRoaXMtPm10aE5hbWVGbXQsICR0aGlz LT5zdGFydFRpbWUgKTsgfQ0KZnVuY3Rpb24gZ2V0TmF2SW5mbygkdHlwZSkgew0KCSRyID0g Jyc7DQoJc3dpdGNoICgkdHlwZSkgew0KCQljYXNlICJpZCI6ICRyID0gJHRoaXMtPm5hdmlk OyBicmVhazsNCgkJY2FzZSAicGMiOiAkciA9ICR0aGlzLT5uYXZwY2xhc3M7IGJyZWFrOw0K CQljYXNlICJuYyI6ICRyID0gJHRoaXMtPm5hdm5jbGFzczsgYnJlYWs7DQoJCWNhc2UgInBh IjogJHIgPSAkdGhpcy0+bmF2cGFycm93OyBicmVhazsNCgkJY2FzZSAibmEiOiAkciA9ICR0 aGlzLT5uYXZuYXJyb3c7IGJyZWFrOw0KCX0NCglyZXR1cm4gJHI7DQp9DQovLyBTZXR0ZXJz DQpmdW5jdGlvbiBzZXRHTVQoJGIpeyAkdGhpcy0+Z210ID0gJGI7IH0NCmZ1bmN0aW9uIHNl dExhbmcoJGNvZGUpeyAkdGhpcy0+bGFuZyA9ICRjb2RlOyB9DQpmdW5jdGlvbiBzZXRDZWxs Rm9ybSgkZnJtKXsgJHRoaXMtPmNlbGxmb3JtID0gJGZybTsgfQ0KZnVuY3Rpb24gc2V0VGFi bGVJRCgkaWQpeyAkdGhpcy0+dGFibGVJRCA9ICRpZDsgfQ0KZnVuY3Rpb24gc2V0WWVhcigk eXIpeyAkdGhpcy0+eWVhciA9ICR5cjsgfQ0KZnVuY3Rpb24gc2V0RVllYXIoJHlyKXsgJHRo aXMtPmV5ciA9ICR5cjsgfQ0KZnVuY3Rpb24gc2V0TFllYXIoJHlyKXsgJHRoaXMtPmx5ciA9 ICR5cjsgfQ0KZnVuY3Rpb24gc2V0TW9udGgoJG10aCl7ICR0aGlzLT5tb250aCA9IChpbnQp JG10aDsgfQ0KZnVuY3Rpb24gc2V0V2Vlaygkd2spew0KCWlmICgkd2spIHsNCgkJJHdrID0g c3RyX3BhZCgkd2ssIDIsICcwJywgU1RSX1BBRF9MRUZUKTsNCgkJJHRoaXMtPndlZWsgPSAk d2s7DQoJCSR0aGlzLT5tb250aCA9IHNhZmVfc3RyZnRpbWUoIiVtIiwgc3RydG90aW1lKCR0 aGlzLT55ZWFyLiJXIi4kd2spKTsNCgl9DQp9DQpmdW5jdGlvbiBzZXROYXZLZWVwKCRhcil7 ICR0aGlzLT5tYWludGFpbiA9ICRhcjsgfQ0KZnVuY3Rpb24gc2V0U2hvd0lTT1dlZWsoJHZh bCkgew0KCSR0aGlzLT5zaG93SVNPV2VlayA9ICgkdmFsKSA/IHRydWUgOiBmYWxzZTsNCglp ZiAoJHZhbCkgew0KCQkkdmFsID0gZG9fbGlzdCgkdmFsKTsNCgkJJHRoaXMtPklTT1dlZWtI ZWFkID0gJHZhbFswXTsNCgkJJHRoaXMtPklTT1dlZWtDZWxsID0gKGlzc2V0KCR2YWxbMV0p KSA/ICR2YWxbMV0gOiAne3dlZWt9JzsNCgl9DQp9DQpmdW5jdGlvbiBzZXRDbGFzc0xldmVs cygkY2xzKXsgJHRoaXMtPmNsYXNzbGV2ZWxzID0gJGNsczsgfQ0KZnVuY3Rpb24gc2V0Q2xh c3NQcmVmaXgoJGNscyl7ICR0aGlzLT5jbGFzc3ByZWZpeCA9ICRjbHM7IH0NCmZ1bmN0aW9u IHNldEV2ZW50UHJlZml4KCRjbHMpeyAkdGhpcy0+ZXZjbGFzc3ByZWZpeCA9ICRjbHM7IH0N CmZ1bmN0aW9uIHNldEV2ZW50V3JhcHRhZygkd3JhcCl7ICR0aGlzLT5ldndyYXB0YWcgPSAk d3JhcDsgfQ0KZnVuY3Rpb24gc2V0TVlXcmFwdGFnKCR3cmFwKXsgJHRoaXMtPm15d3JhcHRh ZyA9ICR3cmFwOyB9DQpmdW5jdGlvbiBzZXRUYWJsZUNsYXNzKCRjbHMpIHsgJHRoaXMtPnRh YmxlY2xhc3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpm dW5jdGlvbiBzZXRSb3dDbGFzcygkY2xzKXsgJHRoaXMtPnJvd2NsYXNzID0gKCRjbHMpID8g JHRoaXMtPmNsYXNzcHJlZml4LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0Q2VsbENsYXNz KCRjbHMpeyAkdGhpcy0+Y2VsbGNsYXNzID0gKCRjbHMpID8gJHRoaXMtPmNsYXNzcHJlZml4 LiRjbHMgOiAnJzsgfQ0KZnVuY3Rpb24gc2V0RW1wdHlDbGFzcygkY2xzKXsgJHRoaXMtPmVt cHR5Y2xhc3MgPSAoJGNscykgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNscyA6ICcnOyB9DQpm dW5jdGlvbiBzZXRJU09XZWVrQ2xhc3MoJGNscyl7ICR0aGlzLT5pc29jbGFzcyA9ICgkY2xz KSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNldE5hdklu Zm8oJGNsc3AsICRjbHNuLCAkYXJycCwgJGFycm4sICRuaWQpew0KCSR0aGlzLT5uYXZwY2xh c3MgPSAoJGNsc3ApID8gJHRoaXMtPmNsYXNzcHJlZml4LiRjbHNwIDogJyc7DQoJJHRoaXMt Pm5hdm5jbGFzcyA9ICgkY2xzbikgPyAkdGhpcy0+Y2xhc3NwcmVmaXguJGNsc24gOiAnJzsN CgkkdGhpcy0+bmF2cGFycm93ID0gKCRhcnJwKSA/ICRhcnJwIDogJyc7DQoJJHRoaXMtPm5h dm5hcnJvdyA9ICgkYXJybikgPyAkYXJybiA6ICcnOw0KCSR0aGlzLT5uYXZpZCA9ICgkbmlk KSA/ICR0aGlzLT5jbGFzc3ByZWZpeC4kbmlkIDogJyc7DQp9DQpmdW5jdGlvbiBzZXRNWUNs YXNzKCRjbHMpeyAkdGhpcy0+bXljbGFzcyA9ICgkY2xzKSA/ICR0aGlzLT5jbGFzc3ByZWZp eC4kY2xzIDogJyc7IH0NCmZ1bmN0aW9uIHNldEZpbHRlck9wdHMoJGYpIHsgJHRoaXMtPmZv cHRzID0gJGY7IH0NCmZ1bmN0aW9uIHNldExpbmtQb3N0ZWQoJGRsKSB7DQoJZm9yZWFjaCAo JGRsIGFzICRkdmFsKSB7DQoJCSR0aGlzLT5saW5rcG9zdGVkW10gPSAkdGhpcy0+Y2xhc3Nw cmVmaXguJGR2YWw7DQoJfQ0KfQ0KZnVuY3Rpb24gc2V0SG9saWRheXMoJGhvbHMpIHsgJHRo aXMtPmhvbGlkYXlzID0gJGhvbHM7IH0NCmZ1bmN0aW9uIHNldFNlbGVjdG9ycygkc2VsLCAk YnRuKSB7DQoJZm9yZWFjaCAoJHNlbCBhcyAkaWR4ID0+ICRpdGVtKSB7DQoJCSRzZWxwYXJ0 cyA9IGV4cGxvZGUoIjoiLCAkaXRlbSk7DQoJCSRzZWxbJGlkeF0gPSAkc2VscGFydHNbMF07 DQoJCSR0aGlzLT5zZWxwZnhbJHNlbHBhcnRzWzBdXSA9IChpc3NldCgkc2VscGFydHNbMV0p KSA/ICRzZWxwYXJ0c1sxXSA6ICcnOw0KCQkkdGhpcy0+c2Vsc2Z4WyRzZWxwYXJ0c1swXV0g PSAoaXNzZXQoJHNlbHBhcnRzWzJdKSkgPyAkc2VscGFydHNbMl0gOiAnJzsNCgl9DQoJJHRo aXMtPnNlbGVjdG9ycyA9ICRzZWw7DQoJJHRoaXMtPnNlbGJ0biA9ICRidG47DQp9DQpmdW5j dGlvbiBzZXRGaXJzdERheU9mV2VlaygkZCkgew0KCSR0aGlzLT5maXJzdERheU9mV2VlayA9 ICgoaW50KSRkIDw9IDYgYW5kIChpbnQpJGQgPj0gMCkgPyAoaW50KSRkIDogMDsNCg0KCSR0 aGlzLT5zdGFydE9mZnNldCA9IGRhdGUoICd3JywgJHRoaXMtPnN0YXJ0VGltZSApLSR0aGlz LT5maXJzdERheU9mV2VlazsNCglpZiAoICR0aGlzLT5zdGFydE9mZnNldCA8IDAgKSB7DQoJ CSR0aGlzLT5zdGFydE9mZnNldCA9IDcgLSBhYnMoJHRoaXMtPnN0YXJ0T2Zmc2V0KTsNCgl9 DQp9DQovKioNCiogZnJtOiBhbnkgdmFsaWQgUEhQIHN0cmZ0aW1lKCkgc3RyaW5nIG9yIEFC QlIvRlVMTA0KKiB0eXA6IGQgdG8gc2V0IGRheSwgbSB0byBzZXQgbW9udGggZm9ybWF0DQoq Lw0KZnVuY3Rpb24gc2V0TmFtZUZvcm1hdCgkZnJtLCAkdHlwPSJkIikgew0KCXN3aXRjaCAo JGZybSkgew0KCQljYXNlICJGVUxMIjoNCgkJCSRmbXQgPSAoJHR5cCA9PSAnZCcpID8gIiVB IiA6ICIlQiI7DQoJCQlicmVhazsNCgkJY2FzZSAiQUJCUiI6DQoJCQkkZm10ID0gKCR0eXAg PT0gJ2QnKSA/ICIlYSIgOiAiJWIiOw0KCQkJYnJlYWs7DQoJCWRlZmF1bHQ6DQoJCQlpZiAo JHR5cCA9PSAnZCcpIHsNCgkJCQlpZiAoc3RycG9zKCRmcm0sICclJykgPT09IDApIHsNCgkJ CQkJJGZtdCA9ICRmcm07DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGZybSA9IHRyaW0oJGZybSwg J3t9Jyk7DQoJCQkJCSRmcm0gPSBkb19saXN0KCRmcm0pOw0KCQkJCQkkZm10ID0gJGZybTsN CgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSRmbXQgPSAkZnJtOw0KCQkJfQ0KCQkJYnJlYWs7 DQoJfQ0KDQoJaWYgKCR0eXAgPT0gImQiKSB7DQoJCSR0aGlzLT5kYXlOYW1lRm10ID0gJGZt dDsNCgkJJHRoaXMtPmRheU5hbWVzID0gYXJyYXkoKTsNCg0KCQkvLyBUaGlzIGlzIGRvbmUg dG8gbWFrZSBzdXJlIFN1bmRheSBpcyBhbHdheXMgdGhlIGZpcnN0IGRheSBvZiBvdXIgYXJy YXkNCgkJLy8gVW5peCB0aW1lIGdldHMgYSBsaXR0bGUgZnVua3kgYXQgdGhlIGJlZ2lubmlu ZyBkZXBlbmRpbmcgdXBvbiB5b3VyIHRpbWV6b25lLg0KCQkkc2VydmVyb2Zmc2V0ID0gZ21t a3RpbWUoMCwwLDApIC0gbWt0aW1lKDAsMCwwKTsNCgkJJHN0YXJ0ID0gKCRzZXJ2ZXJvZmZz ZXQgPCAwKSA/IDQgOiAzOw0KCQkkZW5kID0gJHN0YXJ0ICsgNzsNCgkJZm9yKCRpPSRzdGFy dDsgJGk8JGVuZDsgJGkrKykgew0KCQkJaWYgKGlzX2FycmF5KCRmbXQpKSB7DQoJCQkJJHRo aXMtPmRheU5hbWVzW10gPSAkZm10WyRpLSRzdGFydF07DQoJCQl9IGVsc2Ugew0KCQkJCSR0 aGlzLT5kYXlOYW1lc1tdID0gdWNmaXJzdChzYWZlX3N0cmZ0aW1lKCRmbXQsIDg2NDAwKiRp IC0gdHpfb2Zmc2V0KCksICR0aGlzLT5nbXQsICR0aGlzLT5sYW5nICkpOw0KCQkJfQ0KCQl9 DQoJfSBlbHNlIHsNCgkJJHRoaXMtPm10aE5hbWVGbXQgPSAkZm10Ow0KCX0NCn0NCi8qKg0K KiBSZXR1cm5zIG1hcmt1cCBmb3IgZGlzcGxheWluZyB0aGUgY2FsZW5kYXIuDQoqIEByZXR1 cm4NCiogQHB1YmxpYw0KKi8NCmZ1bmN0aW9uIGRpc3BsYXkgKCApIHsNCgkkaWQgPSAoJHRo aXMtPnRhYmxlSUQpID8gJyBpZD0iJy4kdGhpcy0+dGFibGVJRC4nIicgOiAnJzsNCgkkY1td ID0gJzx0YWJsZScuJGlkLic+JzsNCgkkY1tdID0gJHRoaXMtPmRzcERheU5hbWVzKCk7DQoJ JGNbXSA9ICR0aGlzLT5kc3BEYXlDZWxscygpOw0KCSRjW10gPSAnPC90YWJsZT4nOw0KDQoJ cmV0dXJuIGpvaW4oJycsJGMpOw0KfQ0KLy8gPT09PSBlbmQgZGlzcGxheSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi8qKg0KKiBEaXNwbGF5 cyB0aGUgcm93IG9mIGRheSBuYW1lcy4NCiogQHJldHVybiBzdHJpbmcNCiogQHByaXZhdGUN CiovDQpmdW5jdGlvbiBkc3BEYXlOYW1lcyAoICkgew0KCSRjW10gPSAnPHRyIGNsYXNzPSJz bWRfY2FsX2RheW5hbWVzIj4nOw0KDQoJJGkgPSAkdGhpcy0+Zmlyc3REYXlPZldlZWs7DQoJ JGogPSAwOyAvLyBjb3VudCBudW1iZXIgb2YgZGF5cyBkaXNwbGF5ZWQNCgkkZW5kID0gZmFs c2U7DQoNCglpZiAoJHRoaXMtPnNob3dJU09XZWVrKSB7DQoJCSRjW10gPSAiPHRoPiIuJHRo aXMtPklTT1dlZWtIZWFkLiI8L3RoPiI7DQoJfQ0KCWZvcigkaiA9IDA7ICRqPD02OyAkaisr LCAkaSsrKSB7DQoJCWlmKCRpID09IDcpIHsgJGkgPSAwOyB9DQoJCSRjW10gPSAnPHRoPicu JHRoaXMtPmdldERheU5hbWUoJGkpLiI8L3RoPiI7DQoJfQ0KDQoJJGNbXSA9ICc8L3RyPic7 DQoJcmV0dXJuIGpvaW4oJycsJGMpOw0KfQ0KLy8gPT09PSBlbmQgZHNwRGF5TmFtZXMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQovKioNCiog RGlzcGxheXMgYWxsIGRheSBjZWxscyBmb3IgdGhlIG1vbnRoDQoqDQoqIEByZXR1cm4gc3Ry aW5nDQoqIEBwcml2YXRlDQoqLw0KZnVuY3Rpb24gZHNwRGF5Q2VsbHMgKCApIHsNCgkkaSA9 IDA7IC8vIGNlbGwgY291bnRlcg0KCSRlbXB0eUNsYXNzID0gJHRoaXMtPmVtcHR5Y2xhc3M7 DQoJJGlzb0NsYXNzID0gJHRoaXMtPmlzb2NsYXNzOw0KCSRyb3dDbGFzcyA9ICR0aGlzLT5y b3djbGFzczsNCgkkcm93Q2xhc3MgPSAoJHJvd0NsYXNzKSA/ICcgY2xhc3M9IicuJHJvd0Ns YXNzLiciJyA6ICcnOw0KDQoJJGNbXSA9ICc8dHInLiRyb3dDbGFzcy4nPic7DQoNCglpZiAo JHRoaXMtPnNob3dJU09XZWVrKSB7DQoJCSR3a2NlbGwgPSBzdHJ0cigkdGhpcy0+SVNPV2Vl a0NlbGwsIGFycmF5KCd7d2Vla30nID0+IGRhdGUoICdXJywgJHRoaXMtPnN0YXJ0VGltZSAp ICkpOw0KCQkkY1tdID0gJzx0ZCBjbGFzcz0iJy4kaXNvQ2xhc3MuJyI+Jy4kd2tjZWxsLic8 L3RkPic7DQoJfQ0KCS8vIGZpcnN0IGRpc3BsYXkgZW1wdHkgY2VsbHMgYmFzZWQgb24gd2hh dCB3ZWVrZGF5IHRoZSBtb250aCBzdGFydHMgaW4NCglmb3IoICRqPTA7ICRqPCR0aGlzLT5z dGFydE9mZnNldDsgJGorKyApCXsNCgkJJGkrKzsNCgkJJGNbXSA9ICc8dGQgY2xhc3M9Iicu JGVtcHR5Q2xhc3MuJyI+Jm5ic3A7PC90ZD4nOw0KCX0gLy8gZW5kIG9mZnNldCBjZWxscw0K DQoJLy8gd3JpdGUgb3V0IHRoZSByZXN0IG9mIHRoZSBkYXlzLCBhdCBlYWNoIHN1bmRheSwg c3RhcnQgYSBuZXcgcm93Lg0KCWZvciggJGQ9MTsgJGQ8PSR0aGlzLT5lbmREYXk7ICRkKysg KSB7DQoJCSRpKys7DQoJCSRjW10gPSAkdGhpcy0+ZHNwRGF5Q2VsbCggJGQgKTsNCgkJaWYg KCAkaSU3ID09IDAgKSB7ICRjW10gPSAnPC90cj4nOyB9DQoJCWlmICggJGQ8JHRoaXMtPmVu ZERheSAmJiAkaSU3ID09IDAgKSB7DQoJCQkkY1tdID0gJzx0cicuJHJvd0NsYXNzLic+JzsN CgkJCWlmICgkdGhpcy0+c2hvd0lTT1dlZWspIHsNCgkJCQkkd2tjZWxsID0gc3RydHIoJHRo aXMtPklTT1dlZWtDZWxsLCBhcnJheSgne3dlZWt9JyA9PiBkYXRlKCAnVycsIHN0cnRvdGlt ZSggJHRoaXMtPnllYXIuIi0iLiR0aGlzLT5tb250aC4iLSIuKGludCkoJGQgKyAxKSAuIiAw MDowMCIgKSkgKSk7DQoJCQkJJGNbXSA9ICc8dGQgY2xhc3M9IicuJGlzb0NsYXNzLiciPicu JHdrY2VsbC4nPC90ZD4nOw0KCQkJfQ0KCQl9DQoJfQ0KCS8vIGZpbGwgaW4gdGhlIGZpbmFs IHJvdw0KCSRsZWZ0ID0gNyAtICggJGklNyApOw0KCWlmICggJGxlZnQgPCA3KQl7DQoJCWZv ciAoICRqPTA7ICRqPCRsZWZ0OyAkaisrICkJew0KCQkgICRjW10gPSAnPHRkIGNsYXNzPSIn LiRlbXB0eUNsYXNzLiciPiZuYnNwOzwvdGQ+JzsNCgkJfQ0KCQkkY1tdID0gIlxuXHQ8L3Ry PiI7DQoJfQ0KCXJldHVybiBqb2luKCcnLCRjKTsNCn0NCi8vID09PT0gZW5kIGRzcERheUNl bGxzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K LyoqDQoqIG91dHB1dHMgdGhlIGNvbnRlbnRzIGZvciBhIGdpdmVuIGRheQ0KKg0KKiBAcGFy YW0gaW50ZWdlciwgZGF5DQoqIEBhYnN0cmFjdA0KKi8NCmZ1bmN0aW9uIGRzcERheUNlbGwg KCAkZGF5ICkgew0KCXJldHVybiAnPHRkPicuJGRheS4nPC90ZD4nOw0KfQ0KLy8gPT09PSBl bmQgZGF5Q2VsbCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0NCn0gLy8gZW5kIGNsYXNzDQoNCi8vIFBlcmZvcm0gb25lIG9mIDIgdHlwZXMgb2Yg dGVzdDogYSBmbGFnLWJhc2VkIHRlc3QsIG9yIGFuIGluZm8tYmFzZWQgdGVzdA0KZnVuY3Rp b24gc21kX2lmX2NhbCgkYXR0cywgJHRoaW5nKSB7DQoJZ2xvYmFsICRzbWRfY2FsX2ZsYWcs ICRzbWRfY2FsaW5mbywgJHNtZF9kYXRlOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2ZsYWcnID0+ICcnLA0KCQknY2FsaWQnID0+ICcnLA0KCQknaXNveWVhcicgPT4gJycsDQoJ CSd5ZWFyJyA9PiAnJywNCgkJJ21vbnRoJyA9PiAnJywNCgkJJ3dlZWsnID0+ICcnLA0KCQkn ZGF5JyA9PiAnJywNCgkJJ2xvZ2ljJyA9PiAnb3InLA0KCQknZGVidWcnID0+ICcwJywNCgkp LCAkYXR0cykpOw0KDQoJJGZsYWcgPSBkb19saXN0KCRmbGFnKTsNCgkkY3RyID0gJG51bSA9 IDA7DQoNCglpZiAoJGRlYnVnKSB7DQoJCWRtcCgkYXR0cyk7DQoJfQ0KDQoJaWYgKCRmbGFn ICYmICRmbGFnWzBdICE9ICcnKSB7DQoJCSRudW0gKz0gY291bnQoJGZsYWcpOw0KCQlmb3Jl YWNoICgkZmxhZyBhcyAkd2hhdG5vdCkgew0KCQkJaWYgKGVtcHR5KCR3aGF0bm90KSkgY29u dGludWU7DQoJCQkkY3RyICs9IChpbl9hcnJheSgkd2hhdG5vdCwgJHNtZF9jYWxfZmxhZykg fHwgKCR3aGF0bm90ID09ICdTTURfQU5ZJyAmJiAhZW1wdHkoJHNtZF9jYWxfZmxhZykpKSA/ IDEgOiAwOw0KCQl9DQoJfQ0KCWlmICgkY2FsaWQpIHsNCgkJJG51bSsrOw0KCQkkY3RyICs9 ICgkc21kX2NhbGluZm9bJ2lkJ10gPT09ICRjYWxpZCkgPyAxIDogMDsNCgl9DQoJZm9yZWFj aCAoYXJyYXkoIml5IiA9PiAiaXNveWVhciIsICJ5IiA9PiAieWVhciIsICJtIiA9PiAibW9u dGgiLCAidyIgPT4gIndlZWsiLCAiZCIgPT4gImRheSIpIGFzICRpZHggPT4gJHRlc3QpIHsN CgkJJHRlc3RlciA9ICQkdGVzdDsNCgkJJGNvbXBhcmUgPSAkc21kX2RhdGVbJGlkeF07DQoN CgkJaWYgKCR0ZXN0ZXIpIHsNCgkJCSRudW0rKzsNCgkJCXByZWdfbWF0Y2goJy8oWyE9PD5d Kyk/KFtcZF0rKS8nLCAkdGVzdGVyLCAkbWF0Y2hlcyk7DQoJCQlpZiAoJGRlYnVnKSB7DQoJ CQkJZG1wKCJURVNUIElGOiAiLiAkY29tcGFyZS4gKCgkbWF0Y2hlc1sxXSkgPyAkbWF0Y2hl c1sxXSA6ICc9JykgLiAkbWF0Y2hlc1syXSApOw0KCQkJfQ0KCQkJc3dpdGNoICgkbWF0Y2hl c1sxXSkgew0KCQkJCWNhc2UgIiEiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZSE9JG1hdGNo ZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIj4iOg0KCQkJCQkkY3Ry ICs9ICgkY29tcGFyZT4kbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJ Y2FzZSAiPj0iOg0KCQkJCQkkY3RyICs9ICgkY29tcGFyZT49JG1hdGNoZXNbMl0pID8gMSA6 IDA7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgIjwiOg0KCQkJCQkkY3RyICs9ICgkY29tcGFy ZTwkbWF0Y2hlc1syXSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiPD0iOg0K CQkJCQkkY3RyICs9ICgkY29tcGFyZTw9JG1hdGNoZXNbMl0pID8gMSA6IDA7DQoJCQkJCWJy ZWFrOw0KCQkJCWRlZmF1bHQ6DQoJCQkJCSRjdHIgKz0gKCRjb21wYXJlPT0kbWF0Y2hlc1sy XSkgPyAxIDogMDsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0NCgl9DQoJJHJlc3VsdCA9ICgo JGN0ciA9PT0gJG51bSAmJiAkbG9naWMgPT0gImFuZCIpIHx8ICRjdHIgPiAwICYmICRsb2dp YyA9PSAib3IiKSA/IHRydWUgOiBmYWxzZTsNCglyZXR1cm4gcGFyc2UoRXZhbEVsc2UoJHRo aW5nLCAkcmVzdWx0KSk7DQp9DQoNCmZ1bmN0aW9uIHNtZF9jYWxfaW5mbygkYXR0cykgew0K CWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkc21kX2NhbF9mbGFnLCAkc21kX2Nh bGluZm8sICRzbWRfZGF0ZTsNCg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSd0eXBlJyA9 PiAnZmxhZycsDQoJCSdqb2luJyA9PiAnICcsDQoJCSdqb2luX3ByZWZpeCcgPT4gJ1NNRF9B VVRPJywNCgkJJ2h0bWwnID0+IDAsDQoJCSdlc2NhcGUnID0+ICdodG1sJywNCgkpLCAkYXR0 cykpOw0KDQoJLy8gVHlwZSAwPWRhdGUsIDE9c21kX2NhbGluZm8sIDI9cHJldGV4dCwgMz10 aGlzYXJ0aWNsZSwgNChvciBvdGhlcik9dXNlciB2YWx1ZQ0KCSRtYXAgPSBhcnJheSgNCgkJ J3llYXInID0+IGFycmF5KDAsICd5JywpLA0KCQknaXNveWVhcicgPT4gYXJyYXkoMCwgJ2l5 JywgJ3knKSwNCgkJJ21vbnRoJyA9PiBhcnJheSgwLCAnbScpLA0KCQknd2VlaycgPT4gYXJy YXkoMCwgJ3cnKSwNCgkJJ2RheScgPT4gYXJyYXkoMCwgJ2QnKSwNCgkJJ3NlY3Rpb24nID0+ IGFycmF5KDMsICcnLCAncycpLA0KCQknY2F0ZWdvcnkxJyA9PiBhcnJheSgzLCAnJywgJ2Mn KSwNCgkJJ2NhdGVnb3J5MicgPT4gYXJyYXkoMywgJycsICdjJyksDQoJCSd0aGlzaWQnID0+ IGFycmF5KDMsICd0aGlzaWQnLCAnaWQnKSwNCgkJJ2FydGljbGUnID0+IGFycmF5KDEsICdh cnRpZCcsICdpZCcpLA0KCQknY2FsaWQnID0+IGFycmF5KDEsICdpZCcsICdjYWxpZCcpLA0K CQknY2F0ZWdvcnknID0+IGFycmF5KDIsICdjJyksDQoJCSdyZWFsbmFtZScgPT4gYXJyYXko MiwgJ2F1dGhvcicpLA0KCSk7DQoJJGpvaW4gPSAoJGh0bWwpID8gYSA6ICRqb2luOyAvLyBo dG1sIG1vZGUgZm9yY2VzIGFtcGVyc2FuZCBqb2luDQoJJHR5cGUgPSBkb19saXN0KCR0eXBl KTsNCgkkcmV0ID0gYXJyYXkoKTsNCglmb3JlYWNoICgkdHlwZSBhcyAkaXRlbSkgew0KCQkk cHRzID0gZG9fbGlzdCgkaXRlbSwgJzonKTsNCgkJJGl0ZW0gPSAkcHRzWzBdOw0KDQoJCWlm IChlbXB0eSgkaXRlbSkpIGNvbnRpbnVlOw0KCQkvLyBEZWZhdWx0IGh0bWwgaWQNCgkJJGhp ZCA9IChpc3NldCgkbWFwWyRpdGVtXSkpID8gKChpc3NldCgkbWFwWyRpdGVtXVsyXSkpID8g JG1hcFskaXRlbV1bMl0gOiAkbWFwWyRpdGVtXVsxXSkgOiAkaXRlbTsNCgkJLy8gVXNlci1z cGVjaWZpZWQgaHRtbGlkIG92ZXJyaWRlcyBpdA0KCQkkaGlkID0gKGNvdW50KCRwdHMpID4g MSAmJiAhZW1wdHkoJHB0c1sxXSkpID8gJHB0c1sxXSA6ICRoaWQ7DQoJCWlmICgkaXRlbSA9 PSAiZmxhZyIpIHsNCgkJCSRyZXRbXSA9ICgoJGpvaW5fcHJlZml4PT0iU01EX0FVVE8iKSA/ ICRqb2luIDogJycpLmpvaW4oJGpvaW4sICRzbWRfY2FsX2ZsYWcpOw0KCQl9IGVsc2UgaWYg KCRpdGVtID09ICJhdXRob3IiIHx8ICRpdGVtID09ICJyZWFsbmFtZSIpIHsNCgkJCSRjdXJy YXV0aG9yID0gKCR0aGlzYXJ0aWNsZSA9PSBOVUxMKSA/ICcnIDogYXV0aG9yKGFycmF5KCkp Ow0KCQkJaWYgKCRjdXJyYXV0aG9yKSB7DQoJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAkaGlk Lic9JyA6ICcnKSAuICRjdXJyYXV0aG9yOw0KCQkJfQ0KCQl9IGVsc2UgaWYgKCRpdGVtID09 ICJzIikgew0KCQkJJHNlYyA9ICghZW1wdHkoJHByZXRleHRbJ3MnXSkpID8gJHByZXRleHRb J3MnXSA6ICgoaXNzZXQoJHNtZF9jYWxpbmZvWydzJ10pICYmICFlbXB0eSgkc21kX2NhbGlu Zm9bJ3MnXSkpID8gJHNtZF9jYWxpbmZvWydzJ10gOiAnJyk7DQoJCQlpZiAoJHNlYykgew0K CQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkc2VjOw0KCQkJfQ0K CQl9IGVsc2UgaWYgKGlzc2V0KCRtYXBbJGl0ZW1dKSkgew0KCQkJJHR5cCA9ICRtYXBbJGl0 ZW1dWzBdOw0KCQkJJGlkeCA9IGVtcHR5KCRtYXBbJGl0ZW1dWzFdKSA/ICRpdGVtIDogJG1h cFskaXRlbV1bMV07DQoJCQlzd2l0Y2ggKCR0eXApIHsNCgkJCQljYXNlIDA6DQoJCQkJCWlm ICgkc21kX2RhdGVbJGlkeF0pIHsNCgkJCQkJCSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4n PScgOiAnJykgLiAkc21kX2RhdGVbJGlkeF07DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJ Y2FzZSAxOg0KCQkJCQlpZiAoIWVtcHR5KCRzbWRfY2FsaW5mb1skaWR4XSkpIHsNCgkJCQkJ CSRyZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkc21kX2NhbGluZm9bJGlk eF07DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAyOg0KCQkJCQlpZiAoIWVtcHR5 KCRwcmV0ZXh0WyRpZHhdKSkgew0KCQkJCQkJJHJldFtdID0gKCgkaHRtbCkgPyAkaGlkLic9 JyA6ICcnKSAuICRwcmV0ZXh0WyRpZHhdOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNh c2UgMzoNCgkJCQkJaWYgKCR0aGlzYXJ0aWNsZSAhPSBOVUxMICYmIGlzc2V0KCR0aGlzYXJ0 aWNsZVskaWR4XSkgJiYgIWVtcHR5KCR0aGlzYXJ0aWNsZVskaWR4XSkpIHsNCgkJCQkJCSRy ZXRbXSA9ICgoJGh0bWwpID8gJGhpZC4nPScgOiAnJykgLiAkdGhpc2FydGljbGVbJGlkeF07 DQoJCQkJCX0NCgkJCQkJYnJlYWs7DQoJCQl9DQoJCX0gZWxzZSBpZiAoYXJyYXlfa2V5X2V4 aXN0cygkaXRlbSwgJHByZXRleHQpKSB7DQoJCQlpZiAoJHByZXRleHRbJGl0ZW1dKSB7DQoJ CQkJJHJldFtdID0gKCgkaHRtbCkgPyAkaGlkLic9JyA6ICcnKSAuICRwcmV0ZXh0WyRpdGVt XTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmICgkdGhpc2FydGljbGUgIT0gTlVMTCAmJiBp c3NldCgkdGhpc2FydGljbGVbJGl0ZW1dKSAmJiAhZW1wdHkoJHRoaXNhcnRpY2xlWyRpdGVt XSkpIHsNCgkJCQkkcmV0W10gPSAoKCRodG1sKSA/ICRoaWQuJz0nIDogJycpIC4gJHRoaXNh cnRpY2xlWyRpdGVtXTsNCgkJCX0NCgkJfQ0KCX0NCgkkcmV0ID0gYXJyYXlfdW5pcXVlKCRy ZXQpOw0KCSRvdXQgPSAoKCRqb2luX3ByZWZpeD09IlNNRF9BVVRPIikgPyAoKCRodG1sKSA/ ICc/JyA6ICcnKSA6ICRqb2luX3ByZWZpeCkuam9pbigkam9pbiwgJHJldCk7DQoJcmV0dXJu ICgkZXNjYXBlPT0naHRtbCcpID8gaHRtbHNwZWNpYWxjaGFycygkb3V0KSA6ICRvdXQ7DQp9 DQoNCmZ1bmN0aW9uIHNtZF9jYWxfbm93KCRhdHRzKSB7DQoJZ2xvYmFsICRkYXRlZm9ybWF0 Ow0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ2Zvcm1hdCcgPT4gJGRhdGVmb3JtYXQs DQoJCSdub3cnID0+ICcnLA0KCQknb2Zmc2V0JyA9PiAnJywNCgkJJ2dtdCcgPT4gJycsDQoJ CSdsYW5nJyA9PiAnJywNCgkpLCAkYXR0cykpOw0KDQoJJHRoZURheSA9IChncHMoJ2QnKSAm JiBpc19udW1lcmljKGdwcygnZCcpKSkgPyAoaW50KWdwcygnZCcpIDogc2FmZV9zdHJmdGlt ZSgnJWQnKTsNCgkkdGhlTW9udGggPSAoZ3BzKCdtJykgJiYgaXNfbnVtZXJpYyhncHMoJ20n KSkpID8gKGludClncHMoJ20nKSA6IHNhZmVfc3RyZnRpbWUoJyVtJyk7DQoJJHRoZVllYXIg PSAoZ3BzKCd5JykgJiYgaXNfbnVtZXJpYyhncHMoJ3knKSkpID8gKGludClncHMoJ3knKSA6 IHNhZmVfc3RyZnRpbWUoJyVZJyk7DQoJaWYgKCRub3cpIHsNCgkJJG5vdyA9IHN0cl9yZXBs YWNlKCI/bW9udGgiLCBkYXRlKCdGJywgZ21ta3RpbWUoMTIsMCwwLCR0aGVNb250aCwkdGhl RGF5LCR0aGVZZWFyKSksICRub3cpOw0KCQkkbm93ID0gc3RyX3JlcGxhY2UoIj95ZWFyIiwg JHRoZVllYXIsICRub3cpOw0KCQkkbm93ID0gc3RyX3JlcGxhY2UoIj9kYXkiLCAkdGhlRGF5 LCAkbm93KTsNCgkJJG5vdyA9IHN0cnRvdGltZSgkbm93KTsNCgl9IGVsc2Ugew0KCQkkbm93 ID0gdGltZSgpOw0KCX0NCg0KCWlmICgkb2Zmc2V0KSB7DQoJCSRub3cgPSBzdHJ0b3RpbWUo JG9mZnNldCwgJG5vdyk7DQoJfQ0KDQoJcmV0dXJuIHNhZmVfc3RyZnRpbWUoJGZvcm1hdCwg JG5vdywgJGdtdCwgJGxhbmcpOw0KfQ0KDQovLyBTZXQgdXNlci1kZWZpbmVkIGNsYXNzZXMg Zm9yIGEgY2VsbA0KZnVuY3Rpb24gc21kX2NhbF9jbGFzcygkYXR0cykgew0KCWdsb2JhbCAk c21kX2NhbF91Y2xzOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ25hbWUnID0+ICcn LA0KCSksICRhdHRzKSk7DQoNCgkkbmFtZSA9IGRvX2xpc3QoJG5hbWUpOw0KCSRzbWRfY2Fs X3VjbHMgPSBhcnJheV9tZXJnZSgkc21kX2NhbF91Y2xzLCAkbmFtZSk7DQp9DQoNCi8vIDx0 eHA6YXJ0aWNsZV9jdXN0b20gLz4gcmVwbGFjZW1lbnQoaXNoKSB0YWcgdGhhdCB1bmRlcnN0 YW5kcyBob3cgdG8gaGFuZGxlIHJlY3VycmluZyBldmVudHMNCmZ1bmN0aW9uIHNtZF9hcnRp Y2xlX2V2ZW50KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZWZzLCAkcHJldGV4 dCwgJHRoaXNwYWdlOw0KDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3RpbWUnID0+ICdh bnknLA0KCQkndHlwZScgPT4gJ3N0YW5kYXJkLHJlY3VyLG11bHRpJywNCgkJJ2V4cGlyZWQn ID0+ICcnLA0KCQknaWQnID0+ICcnLA0KCQknY2F0ZWdvcnknID0+ICcnLA0KCQknc2VjdGlv bicgPT4gJycsDQoJCSdhdXRob3InID0+ICcnLA0KCQkncmVhbG5hbWUnID0+ICcnLA0KCQkn c3RhdHVzJyA9PiAnbGl2ZScsDQoJCSdzb3J0JyA9PiAnJywNCgkJJ2Zvcm0nID0+ICcnLA0K CQknc3RlcGZpZWxkJyA9PiAnJywNCgkJJ3NraXBmaWVsZCcgPT4gJycsDQoJCSdvbWl0Zmll bGQnID0+ICcnLA0KCQknZXh0cmFmaWVsZCcgPT4gJycsDQoJCSdtb250aCcgPT4gJycsDQoJ CSdmcm9tJyA9PiAnJywNCgkJJ3RvJyA9PiAnJywNCgkJJ29mZnNldCcgPT4gMCwNCgkJJ2xp bWl0JyA9PiAnMTAnLA0KCQknZXZlbnRsaW1pdCcgPT4gJzEwJywNCgkJJ3BhZ2VieScgPT4g JycsDQoJCSdwZ29ubHknID0+ICcnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdicmVhaycg PT4gJycsDQoJCSdjbGFzcycgPT4gJycsDQoJCSdkZWJ1ZycgPT4gMCwNCgkpLCAkYXR0cykp Ow0KDQoJLy8gUGhhc2UgMSBmaWx0ZXJzDQoJJGZpbHRTUUwgPSAkc3ViU1FMID0gYXJyYXko KTsNCglpZigkY2F0ZWdvcnkpIHsNCgkJJHRtcCA9IGRvUXVvdGUoam9pbigiJywnIiwgZG9T bGFzaChkb19saXN0KCRjYXRlZ29yeSkpKSk7DQoJCSRmaWx0U1FMW10gPSAnKCBDYXRlZ29y eTEgSU4gKCcuJHRtcC4nKSBPUiBDYXRlZ29yeTIgSU4gKCcuJHRtcC4nKSApJzsNCgl9DQoJ aWYoJHNlY3Rpb24pIHsNCgkJJGZpbHRTUUxbXSA9ICdTZWN0aW9uIElOICgnLmRvUXVvdGUo am9pbigiJywnIiwgZG9TbGFzaChkb19saXN0KCRzZWN0aW9uKSkpKS4nKSc7DQoJfQ0KCWlm KCRyZWFsbmFtZSkgew0KCQkkYXV0aG9ycyA9IHNhZmVfY29sdW1uKCduYW1lJywgJ3R4cF91 c2VycycsICdSZWFsTmFtZSBJTiAoJy4gZG9RdW90ZShqb2luKCInLCciLCBkb0FycmF5KGRv X2xpc3QoJHJlYWxuYW1lKSwgJ3VybGRlY29kZScpKSkgLicpJyApOw0KCQkkYXV0aG9yID0g am9pbignLCcsICRhdXRob3JzKTsNCgl9DQoJaWYoJGF1dGhvcikgew0KCQkkZmlsdFNRTFtd ID0gJ0F1dGhvcklEIElOICgnLmRvUXVvdGUoam9pbigiJywnIiwgZG9TbGFzaChkb19saXN0 KCRhdXRob3IpKSkpLicpJzsNCgl9DQoJaWYoJGlkKSB7DQoJCSRmaWx0U1FMW10gPSAnSUQg SU4gKCcuam9pbignLCcsIGFycmF5X21hcCgnaW50dmFsJywgZG9fbGlzdCgkaWQpKSkuJykn Ow0KCX0NCgkkdHlwZSA9IGRvX2xpc3QoJHR5cGUpOw0KCSRwYWdlYnkgPSAoZW1wdHkoJHBh Z2VieSkgPyAkbGltaXQgOiAkcGFnZWJ5KTsNCg0KCWZvcmVhY2ggKCR0eXBlIGFzICRldnR5 cCkgew0KCQlzd2l0Y2goJGV2dHlwKSB7DQoJCQljYXNlICdzdGFuZGFyZCc6DQoJCQkJaWYg KCRzdGVwZmllbGQpIHsNCgkJCQkJJHN1YlNRTFtdID0gIigiLiRzdGVwZmllbGQuIiA9ICcn IEFORCBFeHBpcmVzID0gIi5OVUxMREFURVRJTUUuIikiOw0KCQkJCX0NCgkJCQlicmVhazsN CgkJCWNhc2UgJ3JlY3VyJzoNCgkJCQlpZiAoJHN0ZXBmaWVsZCkgew0KCQkJCQkkc3ViU1FM W10gPSAiKCIuJHN0ZXBmaWVsZC4iICE9ICcnKSI7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJ Y2FzZSAnbXVsdGknOg0KCQkJCWlmICgkc3RlcGZpZWxkKSB7DQoJCQkJCSRzdWJTUUxbXSA9 ICIoIi4kc3RlcGZpZWxkLiIgPSAnJyBBTkQgRXhwaXJlcyAhPSAiLk5VTExEQVRFVElNRS4i KSI7DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KCWlmICgkc3ViU1FMKSB7DQoJCSRm aWx0U1FMW10gPSAnKCcuam9pbignIE9SICcsICRzdWJTUUwpLicpJzsNCgl9DQoNCgkkc3Rh dHVzID0gKCRzdGF0dXMpID8gJHN0YXR1cyA6ICdsaXZlJzsgLy8gaW4gY2FzZSBzdGF0dXMg aGFzIGJlZW4gZW1wdGllZA0KCSRzdGF0dXMgPSBkb19saXN0KCRzdGF0dXMpOw0KCSRzdGF0 aSA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJHN0YXR1cyBhcyAkc3RhdCkgew0KCQlpZiAoZW1w dHkoJHN0YXQpKSB7DQoJCQljb250aW51ZTsNCgkJfSBlbHNlIGlmIChpc19udW1lcmljKCRz dGF0KSkgew0KCQkJJHN0YXRpW10gPSAkc3RhdDsNCgkJfSBlbHNlIHsNCgkJCSRzdGF0aVtd ID0gZ2V0U3RhdHVzTnVtKCRzdGF0KTsNCgkJfQ0KCX0NCgkkZmlsdFNRTFtdID0gJ1N0YXR1 cyBJTiAoJy5kb1F1b3RlKGpvaW4oIicsJyIsICRzdGF0aSkpLicpJzsNCg0KCSRleHBpcmVk ID0gKCRleHBpcmVkKSA/ICRleHBpcmVkIDogJHByZWZzWydwdWJsaXNoX2V4cGlyZWRfYXJ0 aWNsZXMnXTsNCglpZiAoISRleHBpcmVkKSB7DQoJCSRmaWx0U1FMW10gPSAnKG5vdygpIDw9 IEV4cGlyZXMgT1IgRXhwaXJlcyA9ICcuTlVMTERBVEVUSU1FLicpJzsNCgl9DQoNCgkvLyBT b3J0aW5nIHJ1bGVzOiBkYXRhIGlzIHNvcnRlZCBvbmNlIGFzIGl0IGlzIGV4dHJhY3RlZCB2 aWEgU1FMIGFuZCB0aGVuIGFnYWluIGFmdGVyIHRoZSBmYWtlIGRhdGVzIGhhdmUgYmVlbiBp bnNlcnRlZA0KCSRzb3J0ID0gKGVtcHR5KCRzb3J0KSkgPyAnUG9zdGVkIGFzYycgOiAkc29y dDsNCgkkc29ydCA9IGRvX2xpc3QoJHNvcnQpOw0KCSRzb3J0UHJlZml4ID0gIlNPUlRfIjsN Cgkkc29ydE9yZGVyID0gYXJyYXkoKTsNCglmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQo JHNvcnQpOyAkaWR4KyspIHsNCgkJJHNvcnRpZXMgPSBleHBsb2RlKCcgJywgJHNvcnRbJGlk eF0pOw0KCQlpZiAoY291bnQoJHNvcnRpZXMpIDw9IDEpIHsNCgkJCSRzb3J0aWVzWzFdID0g ImFzYyI7DQoJCX0NCgkJJHNvcnRpZXNbMV0gPSAkc29ydFByZWZpeC4oKCRzb3J0aWVzWzFd ID09ICJkZXNjIikgPyAnREVTQycgOiAnQVNDJyk7DQoJCSRzb3J0T3JkZXJbXSA9IGFycmF5 KCJieSIgPT4gJHNvcnRpZXNbMF0sICJkaXIiID0+ICRzb3J0aWVzWzFdKTsNCgl9DQoNCgkk ZmlsdFNRTCA9IGpvaW4oJyBBTkQgJywgJGZpbHRTUUwpOw0KCSRmaWx0U1FMIC49ICcgT1JE RVIgQlkgJy5qb2luKCcsJyxkb1NsYXNoKCRzb3J0KSk7DQoNCgkkZ3JhYkNvbHMgPSAnKiwg dW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyB1UG9zdGVkLCB1bml4X3RpbWVzdGFtcChMYXN0 TW9kKSBhcyB1TGFzdE1vZCwgdW5peF90aW1lc3RhbXAoRXhwaXJlcykgYXMgdUV4cGlyZXMn Ow0KCSRldmxpc3QgPSBzYWZlX3Jvd3MoJGdyYWJDb2xzLCAndGV4dHBhdHRlcm4nLCAkZmls dFNRTCwgJGRlYnVnKTsNCg0KCWlmICgkZGVidWc+Mikgew0KCQllY2hvICIrKyBSRUNPUkQg U0VUICsrIjsNCgkJZG1wKCRldmxpc3QpOw0KCX0NCgkkYWxsX2V2cyA9ICRldl90YWxseSA9 IGFycmF5KCk7DQoJJG5vdyA9IHRpbWUoKTsNCg0KCS8vIFBoYXNlIDI6IGV4cGFuZCBhbnkg cmVjdXJyaW5nIGRhdGVzIGFuZCBjb2xsYXRlIGFsbCBldmVudHMgdGhhdCBmYWxsIHdpdGhp biB0aGUgYWxsb3RlZCByYW5nZXMNCglmb3JlYWNoICgkZXZsaXN0IGFzICRyb3cpIHsNCgkJ JGV2X3Bvc3RlZCA9ICRyb3dbJ3VQb3N0ZWQnXTsNCgkJJGV2X2V4cGlyZXMgPSAkcm93Wyd1 RXhwaXJlcyddOw0KCQkkZXZfZGF5ID0gZGF0ZSgnaicsICRldl9wb3N0ZWQpOw0KCQkkZXZf bW9udGggPSBkYXRlKCdtJywgJGV2X3Bvc3RlZCk7DQoJCSRldl95ZWFyID0gZGF0ZSgnWScs ICRldl9wb3N0ZWQpOw0KCQkkZXZfaHIgPSBkYXRlKCdIJywgJGV2X3Bvc3RlZCk7DQoJCSRl dl9tbiA9IGRhdGUoJ2knLCAkZXZfcG9zdGVkKTsNCgkJJGV2X3NjID0gZGF0ZSgncycsICRl dl9wb3N0ZWQpOw0KCQkkaWdub3JlID0gYXJyYXkoKTsNCg0KCQkvLyBHZW5lcmF0ZSBhIHNr aXAgYXJyYXkgZm9yIHRoaXMgZXZlbnQNCgkJaWYgKCRza2lwZmllbGQgJiYgJHJvd1skc2tp cGZpZWxkXSAhPSAnJykgew0KCQkJJGlnbm9yZSA9IGRvX2xpc3QoJHJvd1skc2tpcGZpZWxk XSk7DQoJCQlmb3JlYWNoICgkaWdub3JlIGFzICRrZXkgPT4gJHZhbCkgew0KCQkJCSRpZ25v cmVbJGtleV0gPSBkYXRlKCJkLU0tWSIsIHN0cnRvdGltZSgkdmFsKSk7IC8vIEZvcmNlIGVh Y2ggZGF0ZSB0byBhIGtub3duIGZvcm1hdA0KCQkJfQ0KCQl9DQoJCS8vIEFwcGVuZCBhbnkg b21pdHRlZCBldmVudHMNCgkJaWYgKCRvbWl0ZmllbGQgJiYgJHJvd1skb21pdGZpZWxkXSAh PSAnJykgew0KCQkJJG9taXQgPSBkb19saXN0KCRyb3dbJG9taXRmaWVsZF0pOw0KCQkJZm9y ZWFjaCAoJG9taXQgYXMgJGtleSA9PiAkdmFsKSB7DQoJCQkJJGlnbm9yZVska2V5XSA9IGRh dGUoImQtTS1ZIiwgc3RydG90aW1lKCR2YWwpKTsNCgkJCX0NCgkJfQ0KCQlpZiAoJGRlYnVn ID4gMSAmJiAkaWdub3JlKSB7DQoJCQllY2hvICcrKyBJR05PUkVEIERBVEVTICsrJzsNCgkJ CWRtcCgkaWdub3JlKTsNCgkJfQ0KDQoJCS8vIERvZXMgdGhlIGV2ZW50IGRlc2VydmUgdG8g YmUgaW4gdGhlIHJlc3VsdHM/DQoJCWlmIChzbWRfaW5jbHVkZV9ldmVudCgkZXZfcG9zdGVk LCAkbm93LCAkaWdub3JlLCAkdGltZSwgJGZyb20sICR0bywgJG1vbnRoKSkgew0KCQkJJGFs bF9ldnNbXSA9ICRyb3c7DQoJCQkkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dID0gKGlzc2V0 KCRldl90YWxseVskcm93WydQb3N0ZWQnXV0pKSA/ICRldl90YWxseVskcm93WydQb3N0ZWQn XV0rMSA6IDE7DQoJCX0NCg0KCQkvLyBBZGQgYW55IGV4dHJhIGRhdGVzIGZvciB0aGlzIGV2 ZW50DQoJCWlmICgkZXh0cmFmaWVsZCAmJiAkcm93WyRleHRyYWZpZWxkXSAhPSAnJykgew0K CQkJJHh0cmEgPSBkb19saXN0KCRyb3dbJGV4dHJhZmllbGRdKTsNCgkJCSRzdGFtcG9mZiA9 IChpbnQpKDM2MDAqJGV2X2hyKSArIChpbnQpKDYwKiRldl9tbikgKyAoaW50KSRldl9zYzsN CgkJCWZvcmVhY2ggKCR4dHJhIGFzICR2YWwpIHsNCgkJCQkkdG0gPSBzdHJ0b3RpbWUoJHZh bCk7DQoNCgkJCQkvLyBObyAkaWdub3JlIGZvciBhZGRpdGlvbmFsIGV2ZW50cywgYXMgdGhl eSBhbHdheXMgc2hvdyB1cA0KCQkJCWlmIChzbWRfaW5jbHVkZV9ldmVudCgkdG0rJHN0YW1w b2ZmLCAkbm93LCBhcnJheSgpLCAkdGltZSwgJGZyb20sICR0bywgJG1vbnRoKSkgew0KCQkJ CQkkZmFrZXJvdyA9ICRyb3c7DQoJCQkJCSRmYWtlcm93WydQb3N0ZWQnXSA9IGRhdGUoIlkt bS1kIEg6aTpzIiwgJHRtKyRzdGFtcG9mZik7DQoJCQkJCSRmYWtlcm93Wyd1UG9zdGVkJ10g PSAkdG0rJHN0YW1wb2ZmOw0KCQkJCQkkYWxsX2V2c1tdID0gJGZha2Vyb3c7DQoJCQkJCSRl dl90YWxseVskZmFrZXJvd1snUG9zdGVkJ11dID0gKGlzc2V0KCRldl90YWxseVskZmFrZXJv d1snUG9zdGVkJ11dKSkgPyAkZXZfdGFsbHlbJGZha2Vyb3dbJ1Bvc3RlZCddXSsxIDogMTsN CgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoJHN0ZXBmaWVsZCAmJiAkcm93WyRzdGVwZmll bGRdICE9ICcnKSB7DQoJCQkkZnJlcSA9IGRvX2xpc3QoJHJvd1skc3RlcGZpZWxkXSk7DQoJ CQkkbW9udGhseSA9IGZhbHNlOw0KCQkJJGN1cnJzdGFtcCA9ICRldl9wb3N0ZWQ7DQoJCQkk Y3Vycm1vbnRoID0gJGV2X21vbnRoOw0KCQkJJGN1cnJ5ZWFyID0gJGV2X3llYXI7DQoJCQlm b3JlYWNoICgkZnJlcSBhcyAkaW50ZXJ2YWwpIHsNCgkJCQkkZmFrZXJvdyA9ICRyb3c7DQoJ CQkJJHN0YW1wb2ZmID0gMDsNCgkJCQlmb3IoJGlkeCA9IDA7ICRpZHggPCA5OTk5OTsgJGlk eCsrKSB7DQoJCQkJCSRsYXN0YW1wID0gJGN1cnJzdGFtcDsNCgkJCQkJaWYgKChpc3NldCgk ZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dKSAmJiAoJGV2X3RhbGx5WyRyb3dbJ1Bvc3RlZCdd XSA+PSAkZXZlbnRsaW1pdCkpIHx8ICgkdG8gJiYgJGN1cnJzdGFtcCA+IHN0cnRvdGltZSgk dG8pKSkgew0KCQkJCQkJYnJlYWs7DQoJCQkJCX0NCgkJCQkJJGl2YWwgPSBzdHJfcmVwbGFj ZSgiP21vbnRoIiwgZGF0ZSgnRicsIGdtbWt0aW1lKDAsMCwwLCRjdXJybW9udGgsMSkpLCAk aW50ZXJ2YWwpOw0KCQkJCQkkaXZhbCA9IHN0cl9yZXBsYWNlKCI/eWVhciIsICRjdXJyeWVh ciwgJGl2YWwpOw0KDQoJCQkJCWlmIChzdHJwb3MoJGl2YWwsICJsYXN0IikgPT09IDApIHsN CgkJCQkJCSRpdmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1lKCRpdmFsLCBta3Rp bWUoMTIsIDAsIDAsIGRhdGUoIm4iLG1rdGltZSgwLDAsMCwkY3Vycm1vbnRoLDEsJGN1cnJ5 ZWFyKSkrMSwgMSwgJGN1cnJ5ZWFyKSkpOw0KCQkJCQkJJG1vbnRobHkgPSB0cnVlOw0KCQkJ CQl9IGVsc2UgaWYgKHN0cnBvcygkaXZhbCwgImZpcnN0IikgPT09IDApIHsNCgkJCQkJCSRp dmFsID0gZGF0ZSgibCwgRiBqUyBZIiwgc3RydG90aW1lKCRpdmFsLCBta3RpbWUoMTIsIDAs IDAsICgoJGN1cnJtb250aD4xKSA/ICRjdXJybW9udGgtMSA6IDEyKSwgZGF0ZSgidCIsbWt0 aW1lKDAsMCwwLCRjdXJybW9udGgtMSwxLCgoJGN1cnJtb250aD09MSkgPyAkY3VycnllYXIt MTogJGN1cnJ5ZWFyKSkpLCAoKCRjdXJybW9udGg9PTEpID8gJGN1cnJ5ZWFyLTE6ICRjdXJy eWVhcikpKSk7DQoJCQkJCQkkbW9udGhseSA9IHRydWU7DQoJCQkJCX0NCgkJCQkJaWYgKHN0 cnBvcygkaW50ZXJ2YWwsICJtb250aCIpIHx8IHN0cnBvcygkaW50ZXJ2YWwsICJ5ZWFyIikp IHsNCgkJCQkJCSRtb250aGx5ID0gdHJ1ZTsNCgkgICAgICAgICAgICB9DQoNCgkJCQkJaWYg KCRtb250aGx5KSB7DQoJCQkJCQkkY3VycnN0YW1wID0gc3RydG90aW1lKCRpdmFsKTsNCgkJ CQkJCSRzdGFtcG9mZiA9ICgkc3RhbXBvZmY9PTApID8gKGludCkoMzYwMCokZXZfaHIpICsg KGludCkoNjAqJGV2X21uKSArIChpbnQpJGV2X3NjIDogJHN0YW1wb2ZmOw0KCQkJCQl9IGVs c2Ugew0KCQkJCQkJJGN1cnJzdGFtcCA9IHN0cnRvdGltZSgkaXZhbCwgJGN1cnJzdGFtcCk7 DQoJCQkJCX0NCg0KCQkJCQkvLyBUaGlzIGtsdWRnZSB0YWtlcyBhY2NvdW50IG9mIHRpbWVz dGFtcHMgbGlrZSAibGFzdCBUaHVyc2RheSIgKG9mIHRoZSBtb250aCkuIFRoZSBsYXN0ICd3 aGF0ZXZlciBkYXknIG9mDQoJCQkJCS8vIGEgbW9udGggY2FuIG9ubHkgYmUgYSBtYXhpbXVt IG9mIDMxIGRheXMgYmVmb3JlIHRoZSBsYXN0IHRpbWVzdGFtcCB3ZSBzYXcsIHNvIGNoZWNr IGZvciB0aGF0ICgrLy0gMTAgbWlucykNCgkJCQkJJGRpZmZzdGFtcCA9ICRjdXJyc3RhbXAg LSAkbGFzdGFtcDsNCgkJCQkJaWYgKCRkaWZmc3RhbXAgPCAwKSB7DQoJCQkJCQlpZiAoJGRp ZmZzdGFtcCA+IC0oNjAqNjAqMjQqMzEpKzYwMCkgew0KCQkJCQkJCSRjdXJyc3RhbXAgPSBm YWxzZTsgLy8gU29tZSAnbGFzdCB3ZWVrZGF5JyBvZiB0aGUgcHJldmlvdXMgbW9udGgNCgkJ CQkJCX0gZWxzZSB7DQoJCQkJCQkJYnJlYWs7IC8vIFBIUF9JTlRfTUFYIGV4Y2VlZGVkDQoJ CQkJCQl9DQoJCQkJCX0NCgkJCQkJaWYgKCRjdXJyc3RhbXAgIT09IGZhbHNlKSB7DQoJCQkJ CQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCQkJCWRtcCgiSU5URVJWQUw6ICIuICRjdXJyc3Rh bXAgLiAnIC8vICcgLmRhdGUoJ2QtTS1ZIEg6aTpzJywgJGN1cnJzdGFtcCkpOw0KCQkJCQkJ fQ0KDQoJCQkJCQlpZiAoKCRjdXJyc3RhbXAgPCAkZXZfZXhwaXJlcyB8fCAkZXZfZXhwaXJl cyA9PSAnMCcpICYmICgkY3VycnN0YW1wICE9ICRldl9wb3N0ZWQpKSB7DQoJCQkJCQkJJHNo b3dfbWUgPSBzbWRfaW5jbHVkZV9ldmVudCgkY3VycnN0YW1wLCAkbm93LCAkaWdub3JlLCAk dGltZSwgJGZyb20sICR0bywgJG1vbnRoKTsNCgkJCQkJCQlpZiAoJHNob3dfbWUpIHsNCgkJ CQkJCQkJJGZha2Vyb3dbJ1Bvc3RlZCddID0gZGF0ZSgiWS1tLWQgSDppOnMiLCAkY3VycnN0 YW1wKyRzdGFtcG9mZik7DQoJCQkJCQkJCSRmYWtlcm93Wyd1UG9zdGVkJ10gPSAkY3VycnN0 YW1wKyRzdGFtcG9mZjsNCgkJCQkJCQkJJGFsbF9ldnNbXSA9ICRmYWtlcm93Ow0KCQkJCQkJ CQkkZXZfdGFsbHlbJHJvd1snUG9zdGVkJ11dID0gKGlzc2V0KCRldl90YWxseVskcm93WydQ b3N0ZWQnXV0pKSA/ICRldl90YWxseVskcm93WydQb3N0ZWQnXV0rMSA6IDE7DQoJCQkJCQkJ fQ0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQlicmVhazsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJ CQkvLyBJbmNyZW1lbnQgdGhlIG1vbnRoL3llYXIgcmVhZHkgZm9yIHRoZSBuZXh0IGludGVy dmFsDQoJCQkJCWlmICgkbW9udGhseSkgew0KCQkJCQkJJGN1cnJ5ZWFyID0gKCRjdXJybW9u dGg9PTEyKSA/ICRjdXJyeWVhcisxIDogJGN1cnJ5ZWFyOw0KCQkJCQkJJGN1cnJtb250aCA9 ICgkY3Vycm1vbnRoPT0xMikgPyAxIDogJGN1cnJtb250aCsxOw0KCQkJCQl9DQoJCQkJfQ0K CQkJCWlmICgkZGVidWc+MSkgew0KCQkJCQlpZiAoaXNzZXQoJGV2X3RhbGx5WyRyb3dbJ1Bv c3RlZCddXSkpIHsNCgkJCQkJCWRtcCgiVEFMTFk6ICIuICRldl90YWxseVskcm93WydQb3N0 ZWQnXV0pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJaWYgKCRkZWJ1Zz4y KSB7DQoJCWVjaG8gIisrIFBSRS1TT1JURUQgKysiOw0KCQlkbXAoJGFsbF9ldnMpOw0KCX0N Cg0KCS8vIE1ha2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRl IGl0DQoJZm9yZWFjaCgkYWxsX2V2cyBhcyAka2V5ID0+ICRyb3cpIHsNCgkJZm9yZWFjaCAo JHJvdyBhcyAkaWRlbnRpZmllciA9PiAkaXRlbSkgew0KCQkJJHZhcm5hbWUgPSAiY29sXyIu JGlkZW50aWZpZXI7DQoJCQkkeyR2YXJuYW1lfVska2V5XSA9ICRpdGVtOw0KCQl9DQoJfQ0K CWlmKGNvdW50KCRhbGxfZXZzKSA+IDApIHsNCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNv dW50KCRzb3J0T3JkZXIpOyAkaWR4KyspIHsNCgkJCSRzb3J0YXJnc1tdID0gJyRjb2xfJy4k c29ydE9yZGVyWyRpZHhdWydieSddOw0KCQkJJHNvcnRhcmdzW10gPSAkc29ydE9yZGVyWyRp ZHhdWydkaXInXTsNCgkJfQ0KCQkkc29ydGl0ID0gJ2FycmF5X211bHRpc29ydCgnLmltcGxv ZGUoIiwgIiwkc29ydGFyZ3MpLicsICRhbGxfZXZzKTsnOw0KCQlldmFsKCRzb3J0aXQpOw0K CX0NCg0KCWlmICgkZGVidWc+Mikgew0KCQllY2hvICIrKyBQT1NULVNPUlRFRCArKyI7DQoJ CWRtcCgkYWxsX2V2cyk7DQoJfQ0KDQoJLy8gSGFuZGxlIHBhZ2luZw0KCSRncmFuZF90b3Rh bCA9IGNvdW50KCRhbGxfZXZzKTsNCgkkdG90YWwgPSAkZ3JhbmRfdG90YWwgLSAkb2Zmc2V0 Ow0KCSRudW1QYWdlcyA9IGNlaWwoJHRvdGFsLyRwYWdlYnkpOw0KCSRwZyA9ICghJHByZXRl eHRbJ3BnJ10pID8gMSA6ICRwcmV0ZXh0WydwZyddOw0KCSRwZ29mZnNldCA9ICRvZmZzZXQg KyAoKCRwZyAtIDEpICogJHBhZ2VieSk7DQoJLy8gc2VuZCBwYWdpbmcgaW5mbyB0byB0eHA6 bmV3ZXIgYW5kIHR4cDpvbGRlcg0KCSRwYWdlb3V0WydwZyddID0gJHBnOw0KCSRwYWdlb3V0 WydudW1QYWdlcyddID0gJG51bVBhZ2VzOw0KCSRwYWdlb3V0WydzJ10gPSAkcHJldGV4dFsn cyddOw0KCSRwYWdlb3V0WydjJ10gPSAkcHJldGV4dFsnYyddOw0KCSRwYWdlb3V0WydncmFu ZF90b3RhbCddID0gJGdyYW5kX3RvdGFsOw0KCSRwYWdlb3V0Wyd0b3RhbCddID0gJHRvdGFs Ow0KDQoJaWYgKGVtcHR5KCR0aGlzcGFnZSkpDQoJCSR0aGlzcGFnZSA9ICRwYWdlb3V0Ow0K CWlmICgkcGdvbmx5KQ0KCQlyZXR1cm47DQoNCgkvLyBQaGFzZSAzOiBpdGVyYXRlIG92ZXIg dGhlIG5ldyBhcnJheSBvYmV5aW5nIGFueSBvZmZzZXQvbGltaXQuIEFueXRoaW5nIGluIHRo ZSByYW5nZSBnZXRzIHBvcHVsYXRlZCBhbmQgcGFyc2VkDQoJJG91dCA9IGFycmF5KCk7DQoJ JGN0ciA9IDA7DQoJYXJ0aWNsZV9wdXNoKCk7DQoJZm9yZWFjaCAoJGFsbF9ldnMgYXMgJGlk eCA9PiAkcm93KSB7DQoJCWlmICgkaWR4ID49ICRwZ29mZnNldCAmJiAkY3RyIDwgJGxpbWl0 KSB7DQoJCQlwb3B1bGF0ZUFydGljbGVEYXRhKCRyb3cpOw0KCQkJJG91dFtdID0gKCR0aGlu ZykgPyBwYXJzZSgkdGhpbmcpIDogKCgkZm9ybSkgPyBwYXJzZV9mb3JtKCRmb3JtKSA6IGhy ZWYoJHJvd1snUG9zdGVkJ10sIHBlcm1saW5rdXJsKCRyb3cpLCAnIHRpdGxlPSInLiRyb3db J1RpdGxlJ10uJyInKSApOw0KCQkJJGN0cisrOw0KCQl9DQoJfQ0KCWFydGljbGVfcG9wKCk7 DQoJcmV0dXJuIGRvV3JhcCgkb3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MpOw0KfQ0K DQovLyBDaGVjayB0aGUgcGFzc2VkIHRpbWVzdGFtcCBhZ2FpbnN0IGV2ZXJ5IHRpbWUgcmVz dHJpY3Rpb24gYW5kIHJldHVybiB0cnVlIGlmIGl0IHBhc3NlcyB0aGVtIGFsbA0KZnVuY3Rp b24gc21kX2luY2x1ZGVfZXZlbnQoJHRzLCAkbm93LCAkaWduLCAkdGltZSwgJGZyb20sICR0 bywgJG1vbnRoKSB7DQoJJHNob3cgPSBhcnJheSgpOw0KCSRzaG93W10gPSAhaW5fYXJyYXko ZGF0ZSgiZC1NLVkiLCAkdHMpLCAkaWduKTsNCglzd2l0Y2goJHRpbWUpIHsNCgkJY2FzZSAi YW55IjogYnJlYWs7DQoJCWNhc2UgImZ1dHVyZSI6ICRzaG93W10gPSAoJHRzID4gJG5vdykg PyB0cnVlIDogZmFsc2U7IGJyZWFrOw0KCQlkZWZhdWx0IDogJHNob3dbXSA9ICgkdHMgPCAk bm93KSA/IHRydWUgOiBmYWxzZTsgYnJlYWs7IC8vIFRoZSBwYXN0DQoJfQ0KCWlmICgkZnJv bSkgeyAkc2hvd1tdID0gKCR0cyA+PSBzdHJ0b3RpbWUoJGZyb20pKSA/IHRydWUgOiBmYWxz ZTsgfQ0KCWlmICgkdG8pIHsgJHNob3dbXSA9ICgkdHMgPD0gc3RydG90aW1lKCR0bykpID8g dHJ1ZSA6IGZhbHNlOyB9DQoJaWYgKCRtb250aCkgeyAkc2hvd1tdID0gKGRhdGUoIlktbSIs ICR0cykgPT0gJG1vbnRoKSA/IHRydWUgOiBmYWxzZTsgfQ0KDQoJcmV0dXJuICghaW5fYXJy YXkoMCwgJHNob3cpKSA/IHRydWUgOiBmYWxzZTsNCn0iO3M6NDoidHlwZSI7czoxOiIwIjtz OjU6Im9yZGVyIjtzOjE6IjUiO3M6NDoiaGVscCI7czo3MTU4NjoiCTxwPjxkaXYgaWQ9InNt ZF9oZWxwIj48L3A+CgoJPGgxIGlkPSJ0b3AiPnNtZF9jYWxlbmRhcjwvaDE+CgoJPHA+UmVu ZGVyIGEgY2FsZW5kYXIgd2l0aCBvbmUgb3IgbW9yZSBhcnRpY2xlcyBhcyBldmVudHMgb24g ZWFjaCBkYXkuIFVzZWZ1bCBmb3IgZ2lnIGd1aWRlcywgJiM4MjIwO3doYXQmIzgyMTc7cyBv biYjODIyMTsgb3Igc2NoZWR1bGluZy48L3A+CgoJPGgyIGlkPSJmZWF0dXJlcyI+RmVhdHVy ZXM8L2gyPgoKCTx1bD4KCQk8bGk+RnVsbC1zaXplIG9yIG1pbmkgPGEgaHJlZj0iI3NtZGNh bCI+Y2FsZW5kYXI8L2E+IGJ5IG1vbnRoLCB3aXRoIG9wdGlvbmFsIDxzcGFuIGNsYXNzPSJj YXBzIj5JU088L3NwYW4+IHdlZWsgZGlzcGxheTwvbGk+CgkJPGxpPk5hdmlnYXRpb246IG5l eHQvcHJldiBtb250aCBvciBvcHRpb25hbCBkcm9wZG93biBvZiBtb250aCAvIHllYXIuIFBl cm1pdHRlZCB5ZWFyIHJhbmdlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGZpcnN0L2xhc3QgYXJ0 aWNsZSBvciBleHRlbmRlZCBieSArLy0gTiB5ZWFycyBpbiBlaXRoZXIgZGlyZWN0aW9uPC9s aT4KCQk8bGk+T25lIGFydGljbGUgPSBvbmUgZXZlbnQsIG5hdGl2ZSB0byA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiB3aXRoIHRoZSBQb3N0ZWQgZGF0ZSBiZWluZyB0aGUgZGF0 ZSBpdCBhcHBlYXJzIGluIHRoZSBjYWxlbmRhcjwvbGk+CgkJPGxpPkZpbHRlciBldmVudHMg YnkgY2F0ZWdvcnkgLyBzZWN0aW9uIC8gYXV0aG9yIC8gc3RhdHVzIC8gdGltZSBvciBleHBp cnk8L2xpPgoJCTxsaT5Ob21pbmF0ZSBhIGN1c3RvbSBmaWVsZCB0byBzcGVjaWZ5IGV2ZW50 IGZyZXF1ZW5jeSAoMSB3ZWVrIG9yIDEwIGRheXMgb3IgMyBtb250aHMsIGV0YykuIE11bHRp cGxlIGZyZXF1ZW5jaWVzIGNhbiBiZSBnaXZlbjwvbGk+CgkJPGxpPk5vbWluYXRlIGN1c3Rv bSBmaWVsZHMgZm9yIGV4Y2x1c2lvbnMgKGEgbGlzdCBvZiBkYXRlcyBvbiB3aGljaCB0aGF0 IGV2ZW50IGlzIGNhbmNlbGxlZC9vbWl0dGVkKS4gT3B0aW9uIHRvIGVpdGhlciBzaG93IGNh bmNlbGxlZCBldmVudHMgb24gdGhhdCBkYXkgc28geW91IGNhbiBzdHlsZSB0aGVtIGRpZmZl cmVudGx5LCBvciByZW1vdmUgdGhlbSBjb21wbGV0ZWx5PC9saT4KCQk8bGk+Tm9taW5hdGUg YSBjdXN0b20gZmllbGQgdG8gc3BlY2lmeSBhZGRpdGlvbmFsIGV2ZW50cyAocmVzY2hlZHVs ZWQgZHVlIHRvIGNhbmNlbGxhdGlvbiwgZXh0cmEgdG91ciBkYXRlcyBhdCB0aGUgc2FtZSB2 ZW51ZSwgZXRjKTwvbGk+CgkJPGxpPlNob3cgc3Bhbm5lZCBldmVudHMgKG9uZXMgdGhhdCBs YXN0IG1vcmUgdGhhbiBhIGRheSkgYmFzZWQgb24gdGhlIGFydGljbGXigJlzIGV4cGlyeS4g QW55IGV2ZW50IHRoYXQgZG9lcyA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9UPC9zcGFuPiByZWN1 ciBhbmQgaGFzIGEgZnV0dXJlIGV4cGlyeSBjYW4gYmUgdHJlYXRlZCB0aGlzIHdheTwvbGk+ CgkJPGxpPkZ1dHVyZSwgZXhwaXJlZCBvciBzdGlja3kgZXZlbnRzIG1heSBiZSBkaXNwbGF5 ZWQgaWYgeW91IHdpc2g8L2xpPgoJCTxsaT5TcGVjaWZ5IGhvbGlkYXlzIG9uIGEgcGVyIGNh bGVuZGFyIGJhc2lzIChlaXRoZXIgcmVjdXJyaW5nIGV2ZW50cyAmIzgyMTI7IHdpdGhvdXQg eWVhciAmIzgyMTI7IG9yIHNwZWNpZmljIGhvbGlkYXlzKS4gRGVmaW5lIHRoZSBsaXN0IGVp dGhlciBkaXJlY3RseSBpbiB0aGUgcGx1Z2luIGF0dHJpYnV0ZSBvciBpbiBhIDxjb2RlPiZs dDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+IG9mIHlvdXIgY2hvaWNlIGFuZCBkZWNpZGUg d2hpY2ggdHlwZXMgb2YgZXZlbnQgYXJlIHRvIGJlIGNhbmNlbGxlZCBkdWUgdG8gaG9saWRh eXM8L2xpPgoJCTxsaT5FYWNoIGV2ZW50IGNhbiBiZSBwYXNzZWQgdG8gYSBmb3JtL2NvbnRh aW5lciBzbyB5b3UgY2FuIGJ1aWxkIGl0IHlvdXIgd2F5LCBvciB1c2UgdGhlIGJ1aWx0LWlu IGh5cGVybGlua2VkIHRpdGxlLiBTcGFubmVkIGFuZC9vciByZWN1cnJpbmcgZXZlbnRzIGNh biBiZSBzZW50IHRvIGEgc2VwYXJhdGUgZm9ybSBpZiB5b3Ugd2lzaC4gQWx0ZXJuYXRpdmVs eSwgc2VuZCB0aGUgZW50aXJlIGNlbGwgdG8gYSBmb3JtIGFuZCBzdHlsZSBpdCB5b3VyIHdh eTwvbGk+CgkJPGxpPjxhIGhyZWY9IiNpZmNhbCI+Q29uZGl0aW9uYWw8L2E+IHRlc3RzIGZv ciBmbGFncyAoc3RhbmRhcmQsIHJlY3VycmluZywgc3Bhbm5lZCwgY2FuY2VsbGVkLCBob2xp ZGF5cykgYW5kIGRhdGVzIHNvIHlvdSBjYW4gYnVpbGQgeW91ciBvd24gbG9naWMgaW4geW91 ciBmb3Jtcy9jb250YWluZXI8L2xpPgoJCTxsaT5DbGFzcyBzb3VwOiB0YWJsZS0sIHJvdy0s IGNlbGwtLCBhbmQgZXZlbnQtbGV2ZWwgY2xhc3NlcyBmb3IgaW5kaWNhdGluZyBkaWZmZXJl bnQgc2NlbmFyaW9zIChzcGFubmVkIGV2ZW50LCByZWN1cnJpbmcgZXZlbnQsIGNhbmNlbGxl ZCBldmVudCwgZXRjKTsgY3VzdG9tIGNsYXNzZXMgY2FuIGJlIHNwZWNpZmllZCBiYXNlZCBv biBhbiBldmVudDwvbGk+CgkJPGxpPlRhZyB0byA8YSBocmVmPSIjYXJ0ZXYiPmRpc3BsYXkg cmVjdXJyaW5nIGV2ZW50czwvYT48L2xpPgoJCTxsaT5UYWcgdG8gb3V0cHV0IHZhcmlvdXMg ZXZlbnQgb3IgY2FsZW5kYXIgPGEgaHJlZj0iI2NhbGluZm8iPmNoYXJhY3RlcmlzdGljczwv YT4gKGUuZy4gdGhlIG1vbnRoLCB5ZWFyLCBjYWxlbmRhciBpZCwgc2VjdGlvbiBhbmQgc28g b24pPC9saT4KCQk8bGk+VGFnIHRvIG91dHB1dCB0aGUgPGEgaHJlZj0iI2NhbG5vdyI+Y3Vy cmVudCBkYXRlL3RpbWU8L2E+IChmb3JtYXR0ZWQgaG93IHlvdSBsaWtlKTwvbGk+Cgk8L3Vs PgoKCTxoMiBpZD0iYXV0aG9yIj5BdXRob3IgLyBjcmVkaXRzPC9oMj4KCgk8cD48YSBocmVm PSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vY29tbWVudEZvcm0iPlN0ZWYgRGF3c29uPC9hPi4g Sm9pbnRseSBmdW5kZWQgYnkgZ2VuZXJvdXMgZG9uYXRvcnM6IG1yZGFsZSwgd29vZiwgamFr b2IsIHJlbm9iaXJkIGFuZCBqb2ViYWljaC4gQmFzZWQgaGVhdmlseSBvbiBtZHBfY2FsZW5k YXIuIEFsbCBwcm9wcyB0byB0aGUgb3JpZ2luYWwgYXV0aG9yIG9mIHRoZSBwbHVnaW4sIGFu ZCBvZiBjb3Vyc2UgdGhlIGNsYXNzIHVwb24gd2hpY2ggdGhlIGNhbGVuZGFyIGlzIGJhc2Vk LiBBbmQgbm90IGZvcmdldHRpbmcgb3VyIGF3ZXNvbWUgVGV4dHBhdHRlcm4gZGV2cyB3aG8g Y29udGludWUgdG8gcHVzaCB0aGlzIGxpdHRsZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q01TPC9z cGFuPiB0byB0aGUgc3RhcnMuPC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0aW9u IC8gVW5pbnN0YWxsYXRpb248L2gyPgoKCTxwIGNsYXNzPSJyZXF1aXJlZCI+UmVxdWlyZXMg VGV4dHBhdHRlcm4gNC4wLjcrPC9wPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBl aXRoZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzEwNTIvc21k X2NhbGVuZGFyIj50ZXh0cGF0dGVybi5vcmc8L2E+LCBvciB0aGUgPGEgaHJlZj0iaHR0cDov L3N0ZWZkYXdzb24uY29tL3N3Ij5zb2Z0d2FyZSBwYWdlPC9hPiwgcGFzdGUgdGhlIGNvZGUg aW50byB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWRtaW4gLSZndDsgUGx1 Z2lucyBwYW5lLCBpbnN0YWxsIGFuZCBlbmFibGUgdGhlIHBsdWdpbi4gVmlzaXQgdGhlIDxh IGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9pZD0y OTM3NSI+Zm9ydW0gdGhyZWFkPC9hPiBmb3IgbW9yZSBpbmZvIG9yIHRvIHJlcG9ydCBvbiB0 aGUgc3VjY2VzcyBvciBvdGhlcndpc2Ugb2YgdGhlIHBsdWdpbi48L3A+CgoJPHA+VG8gdW5p bnN0YWxsLCBzaW1wbHkgZGVsZXRlIGZyb20gdGhlIEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFn ZS48L3A+CgoJPGgyIGlkPSJuYW1pbmciPk5hbWluZyBjb252ZW50aW9uPC9oMj4KCgk8cD5U aGUgY29yZSBvZiB0aGUgcGx1Z2luIGlzIHRoZSA8YSBocmVmPSIjc21kY2FsIj5zbWRfY2Fs ZW5kYXI8L2E+IHRhZywgd2hpY2ggcmVuZGVycyBhIHN0YW5kYXJkIGNhbGVuZGFyIHdpdGgg ZWFjaCBjZWxsIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgZXZlbnRzLiBCZWZvcmUgZGl2aW5n IGludG8gdGhlIHRhZ3MgdGhlcmUmIzgyMTc7cyBhIGxpdHRsZSBiaXQgb2Ygbm9tZW5jbGF0 dXJlIHRvIGdldCBvdXQgb2YgdGhlIHdheTo8L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+Y2FsaWQ8L3NwYW4+IDogeW91IG1heSBwdXQgbW9yZSB0aGFuIG9uZSBjYWxl bmRhciBvbiBhIHBhZ2UuIElmIHNvLCBlYWNoIG9uZSBtdXN0IGJlIHVuaXF1ZWx5IHJlZmVy ZW5jZWQgd2l0aCBhIGNhbGVuZGFyIElEPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmNlbGw8L3NwYW4+IDogYSBzcGVjaWZpYyBkYXkgb24gdGhlIGNhbGVuZGFyIGluIGEgcGFy dGljdWxhciBtb250aC95ZWFyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50 PC9zcGFuPiA6IGFuIGFydGljbGUuIEl0JiM4MjE3O3MgYmVzdCB0byB1c2UgYSBkZWRpY2F0 ZWQgc2VjdGlvbiBmb3IgZXZlbnRzIHNvIGl0IGtlZXBzIHRoaW5ncyBuZWF0ZXIgb24geW91 ciBjYWxlbmRhciwgYnV0IHlvdSBjYW4gZGlzcGxheSBldmVudHMgZnJvbSBtb3JlIHRoYW4g b25lIHNlY3Rpb24gaWYgeW91IHdpc2guIEFueSBhcnRpY2xlIHdyaXR0ZW4gaW4gdGhlIGdp dmVuIHNlY3Rpb24ocykgd2lsbCBhcHBlYXIgb24gdGhlIGNhbGVuZGFyIGFzIGxvbmcgYXMg aXRzIGV4cGlyeSBoYXNuJiM4MjE3O3QgYmVlbiBtZXQuIE1vcmUgdGhhbiBvbmUgZXZlbnQg bWF5IGFwcGVhciBpbiBlYWNoIGNlbGw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Y2VsbCBmbGFnPC9zcGFuPiA6IGEgc2VyaWVzIG9mIGZsYWdzIGFyZSB1c2VkIHRvIGxhYmVs IGVhY2ggY2VsbCBhY2NvcmRpbmcgdG8gd2hhdCBpdCBjb250YWlucy4gQ2VsbHMgY2FuIGVp dGhlciBiZSA8Y29kZT5lbXB0eTwvY29kZT4gKGkuZS4gbm8gZGF0ZTogdGhlIGZpbGxlciBj ZWxscyBhdCB0aGUgc3RhcnQvZW5kIG9mIHRoZSBtb250aCksIHRoZXkgY2FuIGJlIGEgcmVn dWxhciBkYXkgKG5vIGZsYWcpLCB0aGV5IGNhbiBjb250YWluIGFuIDxjb2RlPmV2ZW50PC9j b2RlPiwgb3IgbWF5IGJlIGEgaG9saWRheSAoPGEgaHJlZj0iI2hvbGlkYXlzIj5ob2xzPC9h Pik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnQgZmxhZzwvc3Bhbj4gOiBl YWNoIGNlbGwgY2FuIGNvbnRhaW4gb25lIG9yIG1vcmUgZXZlbnRzLiBFdmVudHMgY2FuIGVp dGhlciBiZSA8YSBocmVmPSIjZXZlbnRzIj5zdGFuZGFyZDwvYT4sIHRoZXkgY2FuIDxhIGhy ZWY9IiNyZWN1ciI+cmVjdXI8L2E+LCB0aGV5IGNhbiBzcGFuIG1vcmUgdGhhbiBvbmUgZGF5 ICg8YSBocmVmPSIjbXVsdGkiPm11bHRpPC9hPiksIGRhdGVzIGNhbiBiZSB1bnNjaGVkdWxl ZCBvciBvbWl0dGVkICg8YSBocmVmPSIjY2FuY2VsIj5jYW5jZWwgLyBvbWl0PC9hPikgZnJv bSB0aGUgY2FsZW5kYXIsIG9yIDxhIGhyZWY9IiNleHRyYSI+ZXh0cmE8L2E+IGRhdGVzIGNh biBiZSBhZGRlZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jbGFzcyBsZXZlbDwv c3Bhbj4gOiAoZXhwbG9yZWQgaW4gdGhlIDxhIGhyZWY9IiNhdHRzdHlsZXMiPmNsYXNzbGV2 ZWxzPC9hPiBhdHRyaWJ1dGUpLiBFYWNoIGZsYWdnZWQgY2VsbCBjYW4gYmUgZ2l2ZW4gYSA8 c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBiYXNlZCBvbiBpdHMgZmxhZyBu YW1lKHMpLiBUaGUgY2xhc3MgbmFtZXMgYXJlIHNpbXBseSBlYWNoIGZsYWcgbmFtZSBwcmVm aXhlZCB3aXRoIHRoZSB2YWx1ZSBnaXZlbiBpbiB0aGUgPGNvZGU+Y2xhc3NwcmVmaXhlczwv Y29kZT4gYXR0cmlidXRlLiBTdWNoIGNsYXNzZXM6Cgk8dWw+CgkJPGxpPmFwcGVhciBpbiBh IGNlbGwsIHNvIHlvdSBjYW4gc3R5bGUgdGhlIHdob2xlIGNlbGw8L2xpPgoJCTxsaT5hcHBl YXIgb24gZWFjaCBldmVudCwgc28geW91IGNhbiBzdHlsZSBwYXJ0aWN1bGFyIHR5cGVzIG9m IGV2ZW50PC9saT4KCQk8bGk+bWF5IGJlICYjODIxNjtjb3BpZWQmIzgyMTc7IGZyb20gZXZl cnkgZXZlbnQgdG8gdGhlIGNlbGwgaXRzZWxmLCBzbyB5b3UgY2FuIHN0eWxlIHRoZSB3aG9s ZSBjZWxsIGJhc2VkIG9uIHRoZSBldmVudHMgaXQgY29udGFpbnM8L2xpPgoJPC91bD48L2xp PgoJPC91bD4KCgk8cD5DcnVjaWFsbHksIGZsYWdzIHByb3ZpZGUgaW5mb3JtYXRpb24gPGVt PmFib3V0PC9lbT4gdGhlIGNlbGwgLyBldmVudCAgJiM4MjEyOyBhbmQgY2FuIGJlIHRlc3Rl ZCB3aXRoIHRoZSA8YSBocmVmPSIjaWZjYWwiPmNvbmRpdGlvbmFsIHRhZzwvYT4gJiM4MjEy OyB3aGlsZSB0aGUgY29ycmVzcG9uZGluZyBjbGFzcyBuYW1lcyBhcmUganVzdCB0aGVyZSBm b3IgeW91ciA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiB1c2UuPC9wPgoKCTxwPldo ZW4gYXNzaWduZWQgYXMgY2xhc3NlcywgZmxhZ3MgPHN0cm9uZz5hbHdheXM8L3N0cm9uZz4g dGFrZSB0aGUgJiM4MjE2O2NsYXNzJiM4MjE3OyBwcmVmaXggKGkuZS4gdGhlIDFzdCBpdGVt IGdpdmVuIGluIHNtZF9jYWxlbmRhciYjODIxNztzIDxjb2RlPmNsYXNzcHJlZml4ZXM8L2Nv ZGU+IGF0dHJpYnV0ZSkgJiM4MjEyOyB3aGV0aGVyIHRoZXkgYXBwZWFyIGF0IHRoZSA8ZW0+ ZXZlbnQ8L2VtPiBvciA8ZW0+Y2VsbDwvZW0+IGxldmVscy4gVGhlIG9ubHkgY2xhc3NlcyB0 aGF0IHRha2UgdGhlIG9wdGlvbmFsIDJuZCAmIzgyMTY7ZXZlbnQmIzgyMTc7IHByZWZpeCBh cmUgdGhlIGZpZWxkcyB5b3Ugc3BlY2lmeSBpbiB0aGUgPGNvZGU+ZXZlbnRjbGFzc2VzPC9j b2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxwPkl0JiM4MjE3O3MgYWxzbyB3b3J0aCBiZWFyaW5n IGluIG1pbmQgdGhlIDxhIGhyZWY9IiNkYXRlcyI+ZGF0ZSBjYXZlYXRzPC9hPiB0aGF0IG1h eSB3ZWxsIGJpdGUgeW91LjwvcD4KCgk8aDIgaWQ9ImV2ZW50cyI+U3RhbmRhcmQgY2VsbHMg YW5kIGV2ZW50czwvaDI+CgoJPHA+VGhlc2UgYXJlIHRoZSBzdGFuZGFyZCBjbGFzcyAvIGZs YWcgbmFtaW5nIHJ1bGVzLCBhbmQgdGhleSBhcmUgY3VtdWxhdGl2ZTo8L3A+CgoJPHVsPgoJ CTxsaT5Ob3JtYWwgKGRheSkgY2VsbHMgZG9uJiM4MjE3O3QgaGF2ZSBhIGNsYXNzIGFzc2ln bmVkIHRvIHRoZW0gdW5sZXNzIHlvdSBzcGVjaWZ5IG9uZSB3aXRoIDxjb2RlPmNlbGxjbGFz czwvY29kZT48L2xpPgoJCTxsaT5BbnkgY2VsbCB0aGF0IGNvbnRhaW5zIGFuIGV2ZW50IChv ZiBhbnkgdHlwZSkgaXMgZmxhZ2dlZCBhcyBhbiA8Y29kZT5ldmVudDwvY29kZT48L2xpPgoJ CTxsaT5BbnkgY2VsbCB0aGF0IGZhbGxzIG9uIGEgaG9saWRheSBpcyBnaXZlbiB0aGUgZmxh ZyA8Y29kZT5ob2xzPC9jb2RlPjwvbGk+CgkJPGxpPlRoZSBjdXJyZW50IGRheSBpcyBnaXZl biB0aGUgZmxhZyA8Y29kZT50b2RheTwvY29kZT48L2xpPgoJCTxsaT5JZiB0aGUgY2VsbCBj b250YWlucyBhIHN0YW5kYXJkIChvbmUtb2ZmLCBub24tcmVjdXJyaW5nLCBub24tc3Bhbm5p bmcpIGV2ZW50LCB0aGUgPGVtPmV2ZW50PC9lbT4gd2lsbCBiZSBmbGFnZ2VkIDxjb2RlPnN0 YW5kYXJkPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0icmVjdXIiPlJlY3VycmluZyBl dmVudHM8L2gyPgoKCTxwPklmIHlvdSBoYXZlIG5vbWluYXRlZCBhbiBhcnRpY2xlIGZpZWxk IGFzIHlvdXIgPGNvZGU+c3RlcGZpZWxkPC9jb2RlPiB5b3UgbWF5IGVudGVyIGEgY29tbWEt c2VwYXJhdGVkIGxpc3Qgb2YgZnJlcXVlbmNpZXMgYXQgd2hpY2ggdGhpcyBldmVudCBpcyB0 byBiZSByZXBlYXRlZC4gVGhlIGZvcm1hdCBvZiB0aGUgcmVwZXRpdGlvbiBpcyAmIzgyMjA7 bnVtYmVyIGludGVydmFsJiM4MjIxOywgZS5nLiA8Y29kZT40IHdlZWtzPC9jb2RlPiBvciA8 Y29kZT4xMCBkYXlzPC9jb2RlPiBvciA8Y29kZT42IG1vbnRoczwvY29kZT4uIFRoZSBwbHVn aW4gd2lsbCBkbyBpdHMgYmVzdCB0byBmaWd1cmUgb3V0IHdoYXQgeW91IG1lYW4uIENvbnN1 bHQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3Rhci9tYW51YWwvaHRt bF9ub2RlL0RhdGUtaW5wdXQtZm9ybWF0cy5odG1sIj5kYXRlIGlucHV0IGZvcm1hdHM8L2E+ IGZvciBzb21lIG1vcmUgZXhhbXBsZXMuPC9wPgoKCTxwPkEgZmV3IHBvaW50cyB3b3J0aCBu b3Rpbmc6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+c2Vjb25kIHR1ZXNkYXk8L2NvZGU+IHdp bGwgc2hvdyBhbiBldmVudCA8ZW0+ZXZlcnk8L2VtPiAybmQgVHVlc2RheSBmcm9tIHRoZSBz dGFydCBkYXRlPC9saT4KCQk8bGk+PGNvZGU+c2Vjb25kIHR1ZXNkYXkgP21vbnRoID95ZWFy PC9jb2RlPiB3aWxsIHN1YnN0aXR1dGUgdGhlIGN1cnJlbnQgbW9udGggYW5kIHllYXIgaW4g Zmlyc3QsIGFuZCA8ZW0+dGhlbjwvZW0+IGNhbGN1bGF0ZSB0aGUgZGF0ZSwgcmVzdWx0aW5n IGluIHRoZSBldmVudCBvbmx5IHJlY3VycmluZyBvbiB0aGUgMm5kIFR1ZXNkYXkgb2YgZWFj aCBtb250aC4gWW91IDxlbT5tdXN0PC9lbT4gdXNlIGJvdGggPGNvZGU+P21vbnRoPC9jb2Rl PiBhbmQgPGNvZGU+P3llYXI8L2NvZGU+IGlmIHlvdSBjaG9vc2UgdGhpcyB0eXBlIG9mIGRh dGUgb3IgeW91ciBldmVudCB3b24mIzgyMTc7dCBzaG93IHVwPC9saT4KCQk8bGk+PGNvZGU+ MjAgP21vbnRoPC9jb2RlPiB3aWxsIHNob3cgdGhlIGV2ZW50IG9uIHRoZSAyMHRoIG9mIGV2 ZXJ5IG1vbnRoPC9saT4KCQk8bGk+dGhpbmdzIGxpa2UgPGNvZGU+Zmlyc3QgdGh1cnNkYXk8 L2NvZGU+IG9yIDxjb2RlPmxhc3QgZnJpZGF5PC9jb2RlPiBkb24mIzgyMTc7dCBuZWVkIHRo ZSA8Y29kZT4/bW9udGg8L2NvZGU+IG9yIDxjb2RlPj95ZWFyPC9jb2RlPiBiZWNhdXNlIHRo ZXkgY2FuIDxlbT5vbmx5PC9lbT4gb2NjdXIgbW9udGhseS4gVGhleSB3aWxsIG9ubHkgc2hv dyB0aGUgZXZlbnQgb24gdGhlIGdpdmVuIGZpcnN0L2xhc3QgZGF5IG9mIHRoZSBtb250aCBh bmQgY2FuIDxlbT5vbmx5PC9lbT4gYmUgdXNlZCB3aXRoIHdlZWtkYXkgbmFtZXM8L2xpPgoJ CTxsaT5ETyA8c3BhbiBjbGFzcz0iY2FwcyI+Tk9UPC9zcGFuPiBwdXQgdGhpbmdzIGxpa2Ug JiM4MjIwO3NlY29uZCB0dWVzZGF5IG1hcmNoIDIwMDkmIzgyMjE7IG9yIHlvdXIgcGFnZSB3 aWxsIG5ldmVyIGRpc3BsYXkgJiM4MjEyOyB1c2UgYSBzaW5nbGUgb25lLW9mZiBldmVudCBp bnN0ZWFkPC9saT4KCTwvdWw+CgoJPHA+SWYgeW91IGNhbiBmaW5kIGEgdXNlIGZvciBpdCwg eW91IG1heSBzcGVjaWZ5IG11bHRpcGxlIGZyZXF1ZW5jaWVzLCBmb3IgZXhhbXBsZSA8Y29k ZT4zIGRheXMsIDEgd2VlazwvY29kZT4uIFRoYXQgbWVhbnMgeW91IHdvdWxkIHNlZSB0aGF0 IGV2ZW50IG9uIHRoZSBmaXJzdCBkYXksIHRoZW4gdGhlIDNyZCwgNnRoLCA3dGgsIDl0aCwg MTJ0aCwgMTR0aCwgMTV0aCwgMTh0aCwgMjFzdCwgMjR0aCYjODIzMDsgZGF5cyB0aGVyZWFm dGVyLiBOb3RlIHRoYXQgdGhlIGV2ZW50IG9ubHkgb2NjdXJzIG9uY2Ugb24gdGhlIDIxc3Qg ZGF5IGV2ZW4gdGhvdWdoIHRoZSB0d28gZnJlcXVlbmNpZXMgY2xhc2guPC9wPgoKCTxwPlJl Y3VyIHJ1bGVzOjwvcD4KCgk8dWw+CgkJPGxpPlRoZSByZXBldGl0aW9uIHdpbGwgY29udGlu dWUgZm9yZXZlcjxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm43Mzc5NjY3MTM0 OTc3NGIzZjcwNGVkIj4xPC9hPjwvc3VwPiB1bmxlc3MgeW91IHNwZWNpZnkgdGhhdCB0aGUg ZXZlbnQgZXhwaXJlcyBieSBzZXR0aW5nIGFuIGV4cGlyeSB0aW1lIHVuZGVyIHRoZSBhcnRp Y2xlJiM4MjE3O3MgPGVtPk1vcmU8L2VtPiBhcmVhPC9saT4KCQk8bGk+VGhlIHZlcnkgZmly c3QgZXZlbnQgb2YgYSByZWN1cnJpbmcgc2V0IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2Rl PnJlY3VyZmlyc3Q8L2NvZGU+PC9saT4KCQk8bGk+RWFjaCBmb2xsb3dpbmcgY2VsbCB0aGF0 IGNvbnRhaW5zIGEgcmVjdXJyaW5nIGV2ZW50IHdpbGwgYmUgZmxhZ2dlZCB3aXRoIDxjb2Rl PnJlY3VyPC9jb2RlPjwvbGk+CgkJPGxpPkJvdGggZmxhZ3MgYXJlIGFwcGxpZWQgdG8gdGhl IGV2ZW50IGFzIGNsYXNzZXMgdXNpbmcgdGhlIGNsYXNzIHByZWZpeDwvbGk+CgkJPGxpPlJl cGVhdGVkIGV2ZW50cyBtYXkgYmUgPGEgaHJlZj0iI2NhbmNlbCI+Y2FuY2VsbGVkIG9yIG9t aXR0ZWQ8L2E+IG9uIGEgcGVyLWRhdGUgYmFzaXM8L2xpPgoJPC91bD4KCgk8cCBjbGFzcz0i c21hbGwiIGlkPSJmbjczNzk2NjcxMzQ5Nzc0YjNmNzA0ZWQiPjxzdXA+MTwvc3VwPiAmIzgy MTY7Zm9yZXZlciYjODIxNzsgaXMgbGltaXRlZCB0byA5OTk5OSByZWN1cnJlbmNlcyBwZXIg ZXZlbnQsIG9yIDI3NCB5ZWFycyYjODIxNzsgd29ydGggb2YgZGFpbHkgZXZlbnRzLiBFaXRo ZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlVOSVg8L3NwYW4+IHdpbGwgcnVuIG91dCBvZiBkYXRl cyBvciA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9zcGFuPiB3aWxsIHJ1biBvdXQgb2YgbWVt b3J5IGxvbmcgYmVmb3JlIHlvdSByZWFjaCB0aGlzIGxpbWl0IDotKTwvcD4KCgk8aDIgaWQ9 Im11bHRpIj5NdWx0aXBsZSAoc3Bhbm5lZCkgZXZlbnRzPC9oMj4KCgk8cD5BbnkgZXZlbnQg dGhhdCBoYXM6PC9wPgoKCTx1bD4KCQk8bGk+YSBzdGFydCBkYXRlPC9saT4KCQk8bGk+YW4g ZXhwaXJ5IGRhdGUgdGhhdCBpcyBhIGRheSBvciBtb3JlIGxhdGVyIHRoYW4gdGhlIHN0YXJ0 IGRhdGUsIGFuZDwvbGk+CgkJPGxpPjxlbT5kb2VzIG5vdDwvZW0+IGhhdmUgYW55IHJlcGV0 aXRpb24gaW4gaXRzIDxjb2RlPnN0ZXBmaWVsZDwvY29kZT48L2xpPgoJPC91bD4KCgk8cD5p cyBmbGFnZ2VkIGFzIGEgPGNvZGU+bXVsdGk8L2NvZGU+LiBCeSBkZWZhdWx0IHRoZSBmaXJz dCBldmVudCBpcyBkaXNwbGF5ZWQgaW4gZnVsbCBhbmQgZWFjaCAmIzgyMTY7Y29udGludWF0 aW9uJiM4MjE3OyBldmVudCBpcyBzaG93biBvbmx5IGFzIGEgcmlnaHQgYXJyb3cgaW4gc3Vi c2VxdWVudCBjZWxscyAodGhlIGV2ZW50IHRpdGxlIGlzIGRpc3BsYXllZCBvbiBtb3VzZSBo b3ZlcikuIEV2ZW50cyBtYXkgc3BhbiBtb250aHMgb3IgeWVhcnMgYW5kIHRoZSBwbHVnaW4g ZmlndXJlcyBldmVyeXRoaW5nIG91dCB1c2luZyB0aGUgZmxhZyBydWxlczo8L3A+CgoJPHVs PgoJCTxsaT5UaGUgZmlyc3QgY2VsbCBvZiBhIHNwYW5uZWQgc2V0IGlzIGEgPGNvZGU+bXVs dGlmaXJzdDwvY29kZT48L2xpPgoJCTxsaT5UaGUgbGFzdCBjZWxsIGlzIGEgPGNvZGU+bXVs dGlsYXN0PC9jb2RlPjwvbGk+CgkJPGxpPkV2ZXJ5IG90aGVyIGNlbGwgaXMgYSA8Y29kZT5t dWx0aTwvY29kZT4gPGVtPmV4Y2VwdDwvZW0+IGlmIHRoZSBldmVudCByb2xscyBvdmVyIGlu dG8gdGhlIG5leHQgbW9udGguIEluIHRoYXQgY2FzZSwgdGhlIGVudHJ5IG9uIHRoZSAxc3Qg b2YgdGhlIG1vbnRoIGlzIGEgPGNvZGU+bXVsdGlwcmV2PC9jb2RlPiB0byBpbmRpY2F0ZSBp dCBiZWxvbmdzIHRvIGEgcHJldmlvdXMgZXZlbnQ8L2xpPgoJCTxsaT5JZiB0aGUgMXN0IGRh eSBvZiB0aGUgbW9udGggaXMgdGhlIGxhc3QgZGF5IG9mIHRoZSBldmVudCwgdGhlIDxjb2Rl Pm11bHRpcHJldjwvY29kZT4gaXMgZHJvcHBlZCBpbiBmYXZvdXIgb2YgPGNvZGU+bXVsdGls YXN0PC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPlN3aXRjaCBvZmYgc3Bhbm5pbmcgY29tcGxl dGVseSB3aXRoIHRoZSA8Y29kZT5zaG93c3Bhbm5lZD0mcXVvdDswJnF1b3Q7PC9jb2RlPiBh dHRyaWJ1dGUuIEV2ZW50cyB0aGF0IGhhdmUgYW4gZXhwaXJ5IGFyZSB0aGVuIGp1c3Qgc3Rh bmRhcmQgZXZlbnRzLjwvcD4KCgk8cD4mIzgyMTY7Q29udGludWF0aW9uJiM4MjE3OyBjZWxs cyBtYXkgYmUgcHJvY2Vzc2VkIHdpdGggYSBzZXBhcmF0ZSBmb3JtIChjYWxsZWQgYSA8Y29k ZT5zcGFuZm9ybTwvY29kZT4gYmVjYXVzZSAmIzgyMTY7Y29udGZvcm0mIzgyMTc7IGRpZG4m IzgyMTc7dCBzb3VuZCB2ZXJ5IG5pY2UhKS4gSWYgeW91IGNob29zZSBub3QgdG8gdXNlIGEg PGNvZGU+c3BhbmZvcm08L2NvZGU+LCB0aGUgc3RhbmRhcmQgPGNvZGU+Zm9ybTwvY29kZT4g b3IgY29udGFpbmVyIHdpbGwgYmUgdXNlZCBhbmQgeW91IHdpbGwgaGF2ZSB0byBkaXN0aW5n dWlzaCBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgbXVsdGkgZmxhZ3MgeW91cnNlbGYgdXNpbmcg dGhlIDxhIGhyZWY9IiNpZmNhbCI+Y29uZGl0aW9uYWwgdGFnPC9hPi48L3A+CgoJPHA+WW91 IGNhbiBhbHNvIDxhIGhyZWY9IiNjYW5jZWwiPmNhbmNlbCBvciBvbWl0PC9hPiBkYXlzIG9m IGEgc3Bhbm5lZCBldmVudCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgeW91IGRvIHdpdGggPGEg aHJlZj0iI3JlY3VyIj5yZWN1cnJpbmcgZXZlbnRzPC9hPiwgZXhjZXB0IHlvdSBjYW5ub3Qg Y2FuY2VsIHRoZSBmaXJzdCBkYXk7IHlvdSBzaG91bGQgbW92ZSB0aGUgZXZlbnQgc3RhcnQg ZGF0ZSBhbmQgYXBvbG9naXNlITwvcD4KCgk8aDIgaWQ9ImNhbmNlbCI+Q2FuY2VsbGluZyBh bmQgb21pdHRpbmcgZXZlbnRzPC9oMj4KCgk8cD5QbGFucyBjaGFuZ2UgYW5kIHlvdSBtYXkg ZmluZCB0aGF0IGEgZ2lnIGhhcyB0byBiZSBjYW5jZWxsZWQgZm9yIHdoYXRldmVyIHJlYXNv bi4gUGVyaGFwcyB5b3UgYWR2ZXJ0aXNlIGEgd2Vla2x5IGJvb3QgZmFpciBidXQgdGhlIGZp ZWxkIGlzIHdhdGVybG9nZ2VkIG9uZSB3ZWVrLiBObyBwcm9ibGVtLiBOb21pbmF0ZSBhIDxj b2RlPnNraXBmaWVsZDwvY29kZT4gaW4geW91ciA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxlbmRh ciAvJmd0OzwvY29kZT4gdGFnIGFuZCBlbnRlciB0aGUgZGF0ZSBvZiB0aGUgY2FuY2VsbGVk IGV2ZW50LjwvcD4KCgk8cD5TaW1pbGFybHkgeW91IG1pZ2h0IHJ1biBhIHRoZWF0cmUgd2Vi IHNpdGUgdGhhdCBoYXMgYSB0aHJlZS13ZWVrIHByb2R1Y3Rpb24gcGVyZm9ybWFuY2Ugb24g d2Vla25pZ2h0cyBvbmx5LiBJbnN0ZWFkIG9mIHNldHRpbmcgdXAgdGhyZWUgc2VwYXJhdGUg ZXZlbnRzICYjODIxMjsgb25lIGZvciBlYWNoIHdlZWsgJiM4MjEyOyBub21pbmF0ZSBhbiA8 Y29kZT5vbWl0ZmllbGQ8L2NvZGU+IGFuZCBsaXN0IHRoZSBkYXRlcyBvbiB3aGljaCB0aGUg cGVyZm9ybWFuY2UgZG9lcyBub3QgYWlyLiBPbWl0dGVkIGRhdGVzIHdpbGwgbm90LCB1bmRl ciBhbnkgY2lyY3Vtc3RhbmNlcywgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciBhbmQgdGhleSBv dmVycmlkZSBjYW5jZWxsZWQgZGF0ZXMvaG9saWRheXMuIElmIDxjb2RlPmNlbGxwbHVzPC9j b2RlPiBtb2RlIGlzIHVzZWQsIHlvdSB3aWxsIGhvd2V2ZXIgc2VlIGEgY2VsbCBmbGFnIGxh YmVsbGVkIDxjb2RlPm9taXQ8L2NvZGU+IChwbHVzIGNsYXNzIHByZWZpeCkgaW4gY2FzZSB5 b3UgZG8gd2lzaCB0byBzdHlsZSBzdWNoIGNlbGxzLjwvcD4KCgk8cD5UbyBzcGVjaWZ5IHRo ZSBkYXRlcyBpbiBlaXRoZXIgZmllbGQsIHVzZSBhbnkgYWNjZXB0YWJsZSBkYXRlIGZvcm1h dCwgYnV0IGRlcml2YXRpdmVzIG9mIGRkLW1vbnRobmFtZS15eXl5IG9yIG1vbnRobmFtZS1k ZC15eXl5IGFyZSB0aGUgbW9zdCB1bmFtYmlndW91cyB0byBhdm9pZCBwcm9ibGVtcyBvZiBo b3cgdGhlIHBsdWdpbiBtaWdodCBpbnRlcnByZXQgPGNvZGU+MS81PC9jb2RlPiBhcyBKYW4g NXRoIG9yIE1heSAxc3QuIFlvdSBjYW4gc3BlY2lmeSBhcyBtYW55IGNhbmNlbGxhdGlvbnMg b3Igb21pc3Npb25zIGFzIHlvdSBsaWtlOyBjb21tYS1zZXBhcmF0ZSBlYWNoIG9uZS48L3A+ CgoJPHA+QnkgZGVmYXVsdCwgY2FuY2VsbGVkIGV2ZW50cyB3aWxsIG5vdCBhcHBlYXIgb24g dGhlIGNhbGVuZGFyIGFuZCB0aGVyZSB3aWxsIGJlIGEgY29uc3BpY3VvdXMgaG9sZSBpbiB0 aGUgcmVwZXRpdGlvbi4gSWYgeW91IHN3aXRjaCA8Y29kZT5zaG93c2tpcHBlZD0mcXVvdDsx JnF1b3Q7PC9jb2RlPiB0aGUgZXZlbnQgd2lsbCBhcHBlYXIgaW4gdGhlIGNlbGwgYXMgbm9y bWFsIGFuZCB0aGUgPGNvZGU+Y2FuY2VsPC9jb2RlPiBmbGFnIHdpbGwgYXBwbHkgdG8gdGhl IGV2ZW50IChhbmQgY2VsbCBpZiB5b3UgY2hvb3NlKSBzbyB5b3UgbWF5IGRldGVjdC9zdHls ZSBpdC48L3A+CgoJPGgyIGlkPSJleHRyYSI+RXh0cmEgZGF0ZXM8L2gyPgoKCTxwPldoZW4g ZXZlbnRzIGFyZSA8YSBocmVmPSIjY2FuY2VsIj5jYW5jZWxsZWQ8L2E+IHlvdSBtYXkgZWxl Y3QgdG8gcmVzY2hlZHVsZSB0aGUgZXZlbnQgb24gYSBkaWZmZXJlbnQgZGF0ZSBpbnN0ZWFk IG9mIGhhdmluZyB0byBjcmVhdGUgYSBuZXcgZXZlbnQgd2l0aCBpZGVudGljYWwgZGV0YWls cy4gVXNlIHRoZSA8Y29kZT5leHRyYWZpZWxkPC9jb2RlPiB0byBzaW1wbHkgYWRkIGl0IHRv IHRoZSBjYWxlbmRhciBvbiBpdHMgbmV3IGRheS4gWW91IG1pZ2h0IGFsc28gdXNlIHRoaXMg ZmVhdHVyZSBpZiB5b3UgaGF2ZSBhIDxhIGhyZWY9IiNyZWN1ciI+cmVjdXJyaW5nPC9hPiBl dmVudCBvbiB0aGUgMXN0IG9mIGV2ZXJ5IG1vbnRoIGJ1dCBmb3Igc29tZSByZWFzb24geW91 IGhhdmUgdG8gbW92ZSBvbmUgb2YgdGhlIGV2ZW50cyBhIGRheSBvciB0d28uIFNpbXBseSBj YW5jZWwgdGhlIG9mZmVuZGluZyBkYXRlIGFuZCBhZGQgdGhlIG5ldyBkYXRlIHVzaW5nIHRo ZSA8Y29kZT5leHRyYWZpZWxkPC9jb2RlPi48L3A+CgoJPHA+U3BlY2lmeSBhIGxpc3Qgb2Yg YWRkaXRpb25hbCBkYXRlcyBpbiBhbnkgc3RhbmRhcmQgZGF0ZSBmb3JtYXQuIFRoZXkgd2ls bCBiZSBhZGRlZCB0byB0aGUgY2FsZW5kYXIgYW5kIGZsYWdnZWQgYXMgPGNvZGU+ZXh0cmE8 L2NvZGU+LiBBbHNvIHNlZSB0aGUgPGNvZGU+ZXh0cmFzdHJpY3Q8L2NvZGU+IGF0dHJpYnV0 ZS48L3A+CgoJPHA+Tm90ZSB0aGF0IGlmIHlvdSBzY2hlZHVsZSBhbiBleHRyYSBldmVudCBv biBhIGRheSB0aGF0IGFscmVhZHkgY29udGFpbnMgdGhlIHNhbWUgZXZlbnQgKHBlcmhhcHMg b24gYSBzcGFubmVkIG9yIHJlY3VycmluZyBkYXRlKSB5b3UgbWF5IHNlZSB0d28gaWRlbnRp Y2FsIGV2ZW50cyBvbiB0aGUgc2FtZSBkYXkuIEJvdHRvbSBsaW5lOiBkb24mIzgyMTc7dCBk byBpdCE8L3A+CgoJPGgyIGlkPSJob2xpZGF5cyI+SG9saWRheXM8L2gyPgoKCTxwPlB1Ymxp YyBob2xpZGF5cyBuZWVkIG5vdCBiZSBhIG51aXNhbmNlIHRvIHlvdXIgZXZlbnRzLiBHaXZl IHRoZSBwbHVnaW4gYSBob2xpZGF5IGxpc3QgYW5kIGl0JiM4MjE3O2xsIG1ha2Ugc3VyZSB0 aGF0IGFueSByZWN1cnJpbmcgb3IgbXVsdGkgZXZlbnRzIGFyZSBub3Qgc2NoZWR1bGVkIG9u IHRob3NlIGRheXMuIDxhIGhyZWY9IiNldmVudHMiPlN0YW5kYXJkPC9hPiBvbmUtb2ZmIGV2 ZW50cyBhcmUgcGVybWl0dGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSB5b3UgbWlnaHQgd2FudCB0 byBvcmdhbmlzZSBhIHNwZWNpYWwgZXZlbnQgb24gdGhhdCBkYXksIHRob3VnaCB5b3UgY2Fu IGZvcmJpZCB0aG9zZSB0b28gaWYgeW91IHdpc2guPC9wPgoKCTxwPlRoZSBsaXN0IG9mIGRh dGVzIHlvdSBzcGVjaWZ5IGNhbiBiZSBlbnRlcmVkIGRpcmVjdGx5IGluIGEgc3RyaW5nIGlu IHRoZSA8Y29kZT5ob2xpZGF5czwvY29kZT4gYXR0cmlidXRlIG9yIGluIGEgPGNvZGU+Jmx0 O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4uIFRoZSBsYXR0ZXIgaXMgbW9yZSBmdW4gc28g bGV0JiM4MjE3O3MgdHJ5IHRoYXQ6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O3R4cDp2YXJpYWJsZSBuYW1lPSZxdW90O25hdF9ob2xzJnF1b3Q7 CiAgICAgdmFsdWU9JnF1b3Q7RGVjIDI1LCAyNiBEZWMsIDMxL0RlYywgSmFuLTEsCiAgICAg ICAgTWF5IDQgMjAwOSwgMjAwOS0wOC0zMSZxdW90OyAvJmd0OwombHQ7dHhwOnNtZF9jYWxl bmRhciBob2xpZGF5cz0mcXVvdDt0eHB2YXI6bmF0X2hvbHMmcXVvdDsgLyZndDsKPC9jb2Rl PjwvcHJlPgoKCTxwPlRoZXJlIHlvdSBnbywgYWxsIGRvbmUuIFRoZSBsaXN0IHRoZXJlIHNo b3dzIHNvbWUgb2YgdGhlIHZhcmlldHkgYW5kIGJyZWFkdGggb2YgZm9ybWF0cyB0aGF0IHRo ZSBwbHVnaW4gYWxsb3dzLiBUaGVyZSBhcmUgbW9yZS4gTm90ZSB0aGF0IHNvbWUgZXZlbnRz IGhhdmUgYSB5ZWFyIGFuZCBvdGhlcnMgZG9uJiM4MjE3O3QuIFRoZSBvbmVzIHdpdGhvdXQg YSB5ZWFyIG9jY3VyIG9uIHRoZSBzYW1lIGRhdGUgZXZlcnkgeWVhciB3aGVyZWFzIHRoZSBv bmVzIHdpdGggYSB5ZWFyIHdpbGwgb25seSBvY2N1ciBvbiB0aGF0IHNwZWNpZmljIGRhdGUu PC9wPgoKCTxwPk9uY2UgeW91ciBkYXRlcyBhcmUgZGVmaW5lZCB5b3UgY2FuIGNvbnRyb2wg d2hpY2ggZXZlbnRzIGFyZSBhbGxvd2VkIHRvIGZhbGwgb24gdGhvc2UgZGF0ZXMgdmlhIDxj b2RlPmhvbGlkYXlmbGFnczwvY29kZT4uIEp1ZGljaWFsIHVzZSBvZiB0aGF0IGF0dHJpYnV0 ZSwgPGNvZGU+c2hvd3NwYW5uZWQ8L2NvZGU+LCA8Y29kZT5zaG93c2tpcHBlZDwvY29kZT4g YW5kIHRoZSB2YXJpb3VzIGZvcm1zICYjODIxMjsgYWxvbmcgd2l0aCB0aGUgPGEgaHJlZj0i I2lmY2FsIj5jb25kaXRpb25hbCB0YWc8L2E+ICYjODIxMjsgY2FuIGdpdmUgeW91IGEgd2lk ZSB2YXJpZXR5IG9mIHdheXMgdG8gZGlzcGxheSBldmVudHMgYW5kIGNlbGxzLjwvcD4KCgk8 cD5Ib2xpZGF5IGNlbGxzIGFyZSBnaXZlbiB0aGUgZmxhZyA8Y29kZT5ob2xzPC9jb2RlPiwg YW5kIGFueSBldmVudCB0aGF0IGlzIG5vdCBzcGVjaWZpY2FsbHkgcGVybWl0dGVkIGJ5IHRo ZSA8Y29kZT5ob2xpZGF5ZmxhZ3M8L2NvZGU+IGlzIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQg YSA8Y29kZT5jYW5jZWw8L2NvZGU+IGZsYWcgaWYgaXQgZmFsbHMgb24gb25lIG9mIHRoZSBk YXlzLiBPbWl0dGVkIGRhdGVzIHdpbGwsIGhvd2V2ZXIsIGNhdXNlIHRoZSA8Y29kZT5jYW5j ZWw8L2NvZGU+IGZsYWcgdG8gYmUgcmVtb3ZlZC48L3A+CgoJPGgyIGlkPSJzbWRjYWwiPjxj b2RlPiZsdDt0eHA6c21kX2NhbGVuZGFyIC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+UHV0IHRo ZSA8Y29kZT4mbHQ7dHhwOnNtZF9jYWxlbmRhciAvJmd0OzwvY29kZT4gdGFnIHdoZXJldmVy IHlvdSB3YW50IHlvdXIgY2FsZW5kYXIgdG8gYXBwZWFyLiBVc2UgYW55IG9mIHRoZSBmb2xs b3dpbmcgYXR0cmlidXRlcyB0byBjb250cm9sIGl0cyBvdXRwdXQgZGlzcGxheSBhbmQgdXNl IHRoZSA8YSBocmVmPSIjYXR0c3R5bGVzIj5zdHlsZSBhdHRyaWJ1dGVzPC9hPiB0byBkZXRl cm1pbmUgaG93IHRvIGFwcGx5IHN0eWxlcyB0byB0aGUgdmFyaW91cyBldmVudHMgYW5kIGNl bGxzLjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0cmlidXRlcyI+TWFpbiBhdHRy aWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaXplPC9zcGFu PiA6IGNhbGVuZGFyIHNpemUsIDxjb2RlPmxhcmdlPC9jb2RlPiBvciA8Y29kZT5zbWFsbDwv Y29kZT4uIFRoZSBzbWFsbCBpcyBtb3JlIGdlYXJlZCB0b3dhcmRzIGEgbWluaWNhbCwgYWx0 aG91Z2ggZnVuY3Rpb25hbGx5IHRoZXJlIDxhIGhyZWY9IiNzaXplZGlmZiI+aXNuJiM4MjE3 O3QgbXVjaCBiZXR3ZWVuIHRoZW08L2E+LiBEZWZhdWx0OiA8Y29kZT5sYXJnZTwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGltZTwvc3Bhbj4gOiBzaG93IDxjb2Rl PnBhc3Q8L2NvZGU+LCA8Y29kZT5mdXR1cmU8L2NvZGU+LCBvciA8Y29kZT5hbnk8L2NvZGU+ IGV2ZW50LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmV4cGlyZWQ8L3NwYW4+IDogZGVmaW5pdGl2ZWx5IGhpZGUgKDxjb2RlPjA8 L2NvZGU+KSBvciBzaG93ICg8Y29kZT4xPC9jb2RlPikgZXhwaXJlZCBldmVudHMuIExlYXZl IGJsYW5rIHRvIHVzZSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gQWR2YW5j ZWQgUHJlZmVyZW5jZSA8Y29kZT5QdWJsaXNoIGV4cGlyZWQgYXJ0aWNsZXM8L2NvZGU+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZpcnN0ZGF5PC9zcGFuPiA6IHRoZSAxc3Qg ZGF5IG9mIHRoZSB3ZWVrIHRvIHNob3cgaW4gdGhlIGNhbGVuZGFyLiAwPVN1bmRheSwgMT1N b25kYXkgYW5kIHNvIG9uIGRvd24gdG8gNj1TYXR1cmRheS4gRGVmYXVsdDogPGNvZGU+MDwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGF5Zm9ybWF0PC9zcGFuPiA6 IHRoZSB3YXkgaW4gd2hpY2ggdGhlIGRheSBuYW1lcyBhcmUgcmVuZGVyZWQuIENob29zZSBm cm9tIGVpdGhlciA8Y29kZT5BQkJSPC9jb2RlPiAodGhlIGRlZmF1bHQpIHRvIHNob3cgdGhl IGRheXMgYXMgTW9uLCBUdWUsIFdlZCwgZXRjIG9yIDxjb2RlPkZVTEw8L2NvZGU+IHRvIHJl bmRlciB0aGVpciBmdWxsIG5hbWVzLiBBbHRlcm5hdGl2ZWx5LCBzdXBwbHkgYW55IHZhbGlk IDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9zdHJmdGltZSI+c3RyZnRpbWUoKTwvYT4g Y29kZXMgdG8gdXNlIHRoYXQgaW5zdGVhZC4gTG9jYWxlLXNwZWNpZmljIG5hbWVzIGFyZSBy ZXR1cm5lZC48ZGl2IGNsYXNzPSJicmVhayI+RmluYWxseSwgaWYgeW91IHJlYWxseSBkb24m IzgyMTc7dCBsaWtlIGFueSBvZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4g ZGlzcGxheSBtZXRob2RzIHlvdSBjYW4gaGFyZC1jb2RlIHlvdXIgb3duLiBXcml0ZSBlYWNo IGVudHJ5IGFzIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgc3Vycm91bmRlZCBieSA8Y29kZT57 fTwvY29kZT4gYnJhY2tldHMuIFNvLCBpZiB5b3Ugd2FudGVkIHR3by1sZXR0ZXIgR2VybWFu IHdlZWsgZGF5cyB5b3UgY291bGQgdXNlOiA8Y29kZT5kYXlmb3JtYXQ9JnF1b3Q7e1NvLE1v LERpLE1pLERvLEZyLFNhfSZxdW90OzwvY29kZT4uIFRoZSBmaXJzdCBkYXkgaW4gdGhlIGxp c3QgPHN0cm9uZz5tdXN0PC9zdHJvbmc+IGJlIGEgU3VuZGF5IG9yIHRoaW5ncyB3aWxsIGdl dCBtaWdodHkgYml6YXJyZTwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5t b250aGZvcm1hdDwvc3Bhbj4gOiB0aGUgd2F5IGluIHdoaWNoIHRoZSBtb250aCBuYW1lcyBh cmUgcmVuZGVyZWQuIENob29zZSBmcm9tIGVpdGhlciA8Y29kZT5GVUxMPC9jb2RlPiAodGhl IGRlZmF1bHQpIHRvIHNob3cgdGhlIGZ1bGwgbW9udGggbmFtZXMgb3IgPGNvZGU+QUJCUjwv Y29kZT4gdG8gcmVuZGVyIHRoZWlyIGFiYnJldmlhdGVkIG5hbWVzLiBBbHRlcm5hdGl2ZWx5 LCBzdXBwbHkgYW55IHZhbGlkIDxhIGhyZWY9Imh0dHA6Ly91azIucGhwLm5ldC9zdHJmdGlt ZSI+c3RyZnRpbWUoKTwvYT4gY29kZXMgdG8gdXNlIHRoYXQgaW5zdGVhZC4gTG9jYWxlLXNw ZWNpZmljIG5hbWVzIGFyZSByZXR1cm5lZDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5zZWxlY3Q8L3NwYW4+IDogdXNlIGEgc2VsZWN0IGRyb3Bkb3duIGZvciByYXBpZCBhY2Nl c3MgdG8gd2Vla3MsIG1vbnRocyBvciB5ZWFycyBpbnN0ZWFkIG9mIHJlbmRlcmluZyBqdXN0 IHRoZSBuYW1lcy4gRGVmYXVsdDogdW5zZXQsIGJ1dCB5b3UgbWF5IG1ha2UgYSAoY29tbWEt c2VwYXJhdGVkKSBsaXN0IGZyb20gZWl0aGVyIDxjb2RlPndlZWs8L2NvZGU+IC8gPGNvZGU+ bW9udGg8L2NvZGU+IG9yIDxjb2RlPnllYXI8L2NvZGU+ICh3ZWVrIGFuZCBtb250aCBhcmUg bXV0dWFsbHkgZXhjbHVzaXZlKS4gTm90ZSB0aGF0IHdoZW4gdXNpbmcgPGNvZGU+d2Vlazwv Y29kZT4sIHRoZSBwbHVnaW4gbWFrZXMgYW4gZWR1Y2F0ZWQgZ3Vlc3MgYXQgdGhlIG1vbnRo IGFuZCBtYXkgbm90IGdldCBpdCByaWdodDxkaXYgY2xhc3M9ImJyZWFrIj5Zb3UgbWF5IGFs c28gc3BlY2lmeSB1cCB0byB0d28gb3B0aW9uYWwgZXh0cmEgYXJndW1lbnRzLCBzZXBhcmF0 ZWQgYnkgPGNvZGU+OjwvY29kZT4gY2hhcnMuIFRoZXNlIGFkZCB0ZXh0IGluIGZyb250IG9m IGFuZCBiZWhpbmQgdGhlIHdlZWsgLyBtb250aCAvIHllYXIsIHJlc3BlY3RpdmVseS4gRm9y IGV4YW1wbGU6IDxjb2RlPnNlbGVjdD0mcXVvdDt3ZWVrOldFRUsjLCB5ZWFyOiZsdDs6Jmd0 OyZxdW90OzwvY29kZT4gd291bGQgcmVuZGVyIGEgc2VsZWN0IGxpc3Qgd2l0aCBlbnRyaWVz IHRoYXQgbWlnaHQgbG9vayBsaWtlIHRoaXM6IDxjb2RlPldFRUsjMTUgJmx0OzIwMDkmZ3Q7 PC9jb2RlPjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zZWxlY3RidG48 L3NwYW4+IDogYnkgZGVmYXVsdCwgdGhlIHNlbGVjdCBkcm9wZG93bnMgd2lsbCBhdXRvLXN1 Ym1pdCB3aGVuIHRoZXkgYXJlIGNoYW5nZWQuIElmIHlvdSBwcmVmZXIgYSBkZWRpY2F0ZWQg c3VibWl0IGJ1dHRvbiwgZ2l2ZSB0aGUgdGV4dCB5b3Ugd2lzaCB0byBhcHBlYXIgb24gdGhl IGJ1dHRvbiBoZXJlLiBUaGUgYnV0dG9uIGhhcyBhIGZpeGVkIGNsYXNzIG9mIDxjb2RlPnNt ZF9jYWxfaW5wdXQ8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlzb3dl ZWtzPC9zcGFuPiA6IHNob3cgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdl ZWsgbnVtYmVycyBhcyBhIGNvbHVtbiBhdCB0aGUgc3RhcnQgb2YgdGhlIGNhbGVuZGFyLiBB bnkgdGV4dCBpbiB0aGlzIGF0dHJpYnV0ZSBlbmFibGVzIHRoZSBmZWF0dXJlLCBhbmQgeW91 ciB0ZXh0IGJlY29tZXMgdGhlIGhlYWRpbmcgb2YgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5J U088L3NwYW4+IHdlZWsgY29sdW1uLiBZb3UgbWF5IG9wdGlvbmFsbHkgb3ZlcnJpZGUgdGhl IGRlZmF1bHQgd2VlayBudW1iZXIgZGlzcGxheWVkIGluIGVhY2ggY2VsbCBieSBhZGRpbmcg YSBjb21tYSBhbmQgc29tZSB0ZXh0OyB3aGF0ZXZlciB5b3UgZW50ZXIgd2lsbCBiZSBwdXQg aW4gZWFjaCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB3ZWVrIGNlbGwuIFVzZSB0 aGUgcmVwbGFjZW1lbnQgY29kZSA8Y29kZT57d2Vla308L2NvZGU+IGluIHlvdXIgbWFya3Vw IHRvIGluc2VydCB0aGUgY3VycmVudCB3ZWVrIG51bWJlci4gPGRpdiBjbGFzcz0iYnJlYWsi PkV4YW1wbGU6IDxjb2RlPmlzb3dlZWtzPSZxdW90O3drLCAje3dlZWt9JnF1b3Q7PC9jb2Rl PiB3aWxsIHJlbmRlciAmIzgyMTY7d2smIzgyMTc7IGF0IHRoZSB0b3Agb2YgdGhlIGNvbHVt biBhbmQgc29tZXRoaW5nIGxpa2UgPGNvZGU+IzI0PC9jb2RlPiwgPGNvZGU+IzI1PC9jb2Rl PiwgPGNvZGU+IzI2PC9jb2RlPiYjODIzMDsgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggd2VlayBy b3cuIElmIHRoZSBhdHRyaWJ1dGUgYmVnaW5zIHdpdGggYSBjb21tYSAoaS5lIHRoZSBmaXJz dCBpdGVtIGlzIG9taXR0ZWQpLCB0aGVyZSB3aWxsIGJlIG5vIGNvbHVtbiBoZWFkaW5nLjwv ZGl2PjxkaXYgY2xhc3M9ImJyZWFrIj5Ob3RlIHRoYXQgaWYgdGhlIGlzb3dlZWtzIGZlYXR1 cmUgaXMgZW5hYmxlZCwgPGNvZGU+Zmlyc3RkYXk8L2NvZGU+IHdpbGwgYmUgZm9yY2VkIHRv IHN0YXJ0IG9uIGEgTW9uZGF5IGFzIGdvdmVybmVkIGJ5IHRoZSA8c3BhbiBjbGFzcz0iY2Fw cyI+SVNPPC9zcGFuPiBzcGVjaWZpY2F0aW9uLiBEZWZhdWx0OiB1bnNldDwvZGl2PjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zdGF0dXM8L3NwYW4+IDogZXZlbnRzIGluIHRo aXMgbGlzdCBvZiBzdGF0dXMgYXJlIHB1Ymxpc2hlZC4gRGVmYXVsdDogPGNvZGU+bGl2ZTwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2F0ZWdvcnk8L3NwYW4+IDog ZmlsdGVyIGV2ZW50cyBieSB0aGlzIGxpc3Qgb2YgY2F0ZWdvcmllcy4gRGVmYXVsdDogdW5z ZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2VjdGlvbjwvc3Bhbj4gOiBmaWx0 ZXIgZXZlbnRzIGJ5IHRoaXMgbGlzdCBvZiBzZWN0aW9ucy4gRGVmYXVsdDogdW5zZXQ8L2xp PgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YXV0aG9yPC9zcGFuPiA6IGZpbHRlciBldmVu dHMgYnkgdGhpcyBsaXN0IG9mIGF1dGhvciBsb2dpbiBuYW1lcy4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cmVhbG5hbWU8L3NwYW4+IDogZmlsdGVy IGV2ZW50cyBieSB0aGlzIGxpc3Qgb2YgYXV0aG9yIFJlYWwgTmFtZXMgKG5vdGU6IGFkZHMg b25lIGV4dHJhIHF1ZXJ5KS4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+c2hvd2FsbDwvc3Bhbj4gOiBpZiB5b3VyIGNhbGVuZGFyIGFwcGVhcnMgb24g dGhlIGZyb250IHBhZ2UgYW5kIHlvdSBoYXZlIDxlbT5ub3Q8L2VtPiB1c2VkIHRoZSA8Y29k ZT5zZWN0aW9uPC9jb2RlPiBhdHRyaWJ1dGUgeW91ciBjYWxlbmRhciBvbmx5IHNob3dzIGV2 ZW50cyBmcm9tIHNlY3Rpb25zIHRoYXQgaGF2ZSB0aGVpciA8Y29kZT5PbiBmcm9udCBwYWdl PC9jb2RlPiByYWRpbyBidXR0b24gc2V0LiBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgYmVoYXZp b3VyIHdpdGggPGNvZGU+c2hvd2FsbD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB3aGljaCBzaG93 cyBhbGwgZXZlbnRzIGZyb20gYWxsIHNlY3Rpb25zIG9uIGZyb250IHBhZ2UgY2FsZW5kYXJz PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlkPC9zcGFuPiA6IHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gSUQgdG8gYXBwbHkgdG8gdGhlIHRhYmxlIHRoYXQg aG9sZHMgdGhlIGNhbGVuZGFyLiBUaGlzIGlzIHRoZSB2YWx1ZSBvZiB0aGUgPHNwYW4gY2xh c3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgPGNvZGU+Y2FsaWQ8L2NvZGU+IGFuZCBp dHMgZGVmYXVsdCBpcyB1bnNldC4gRWFjaCBjYWxlbmRhciBvbiBhIHBhZ2UgPGEgaHJlZj0i I25hbWluZyI+bXVzdCBiZSB1bmlxdWU8L2E+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPm5hdmlkPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4g SUQgdG8gYXBwbHkgdG8gdGhlIHByZXYvbmV4dC9tb250aC95ZWFyIG5hdmlnYXRpb24gZm9y bS4gSWYgdXNlZCwgZWFjaCBjYWxlbmRhciBvbiBhIHBhZ2UgbXVzdCBoYXZlIGEgdW5pcXVl IG5hdmlkLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5u YXZhcnJvdzwvc3Bhbj4gOiBjb21tYS1zZXBhcmF0ZWQgcGFpciBvZiBpdGVtcyB5b3Ugd2Fu dCB0byBhcHBlYXIgYXMgcHJldi9uZXh0IGFycm93cyBpbiB0aGUgY2FsZW5kYXIuIERlZmF1 bHQ6IDxjb2RlPiZhbXA7IzYwOywgJmFtcDsjNjI7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5tb250aDwvc3Bhbj4gOiBzdGFydCB0aGUgY2FsZW5kYXIgb24gdGhp cyBtb250aCBmcm9tIDEgKEphbnVhcnkpIHRvIDEyIChEZWNlbWJlcikuIE5vcm1hbCBjYWxl bmRhciBuYXZpZ2F0aW9uIG92ZXJyaWRlcyB0aGlzIHZhbHVlLiBJZiA8Y29kZT5zdGF0aWM8 L2NvZGU+IGlzIHVzZWQsIHRoaXMgbW9udGggYmVjb21lcyB0aGUgb25seSBvbmUgeW91IG1h eSB2aWV3LiBJZiB1bnNldCwgYW5kIG5vIDxjb2RlPm09PC9jb2RlPiB2YWx1ZSBhcHBlYXJz IG9uIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBsaW5lLCB0aGUgY3VycmVu dCBtb250aCBpcyB1c2VkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPndlZWs8L3Nw YW4+IDogc3RhcnQgdGhlIGNhbGVuZGFyIGR1cmluZyB0aGUgbW9udGggY29udGFpbmluZyB0 aGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgKGZyb20gMSB0byA1Myku IElnbm9yZWQgaWYgPGNvZGU+c3RhdGljPC9jb2RlPiBvciBvbmUgb2YgdGhlIGNhbGVuZGFy IG5hdmlnYXRpb24gY29udHJvbHMgaXMgdXNlZC4gSWYgYSA8Y29kZT53PTwvY29kZT4gdmFs dWUgYXBwZWFycyBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gbGluZSwg dGhlIGdpdmVuIHdlZWsgb3ZlcnJpZGVzIGFueSBtb250aCB2YWx1ZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj55ZWFyPC9zcGFuPiA6IHN0YXJ0IHRoZSBjYWxlbmRhciBhdCB0 aGlzIDQtZGlnaXQgeWVhci4gTm9ybWFsIGNhbGVuZGFyIG5hdmlnYXRpb24gb3ZlcnJpZGVz IHRoaXMgdmFsdWUuIElmIDxjb2RlPnN0YXRpYzwvY29kZT4gaXMgdXNlZCwgdGhpcyB5ZWFy IGJlY29tZXMgdGhlIG9ubHkgb25lIHlvdSBtYXkgdmlldy4gSWYgdW5zZXQsIGFuZCBubyA8 Y29kZT55PTwvY29kZT4gdmFsdWUgYXBwZWFycyBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMi PlVSTDwvc3Bhbj4gbGluZSwgdGhlIGN1cnJlbnQgeWVhciBpcyB1c2VkPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnllYXJ3aWR0aDwvc3Bhbj4gOiBhIGNvbW1hLXNlcGFyYXRl ZCBsaXN0IHRoYXQgc3BlY2lmaWVzIGhvdyBtYW55IHllYXJzIHlvdXIgY2FsZW5kYXIgc3Bh bnMuIEJ5IGRlZmF1bHQgaXQgaXMgPGNvZGU+MDwvY29kZT4gd2hpY2ggdXNlcyB0aGUgZWFy bGllc3QgKHBvc3RlZCkgZXZlbnQgaW4gdGhlIHNlY3Rpb24gYXMgdGhlIGxvd2VzdCB5ZWFy IGFuZCB0aGUgbGF0ZXN0IChtb2RpZmllZCBvciBwb3N0ZWQsIHdoaWNoZXZlciBpcyBncmVh dGVyKSBldmVudCBpbiB0aGUgc2VjdGlvbiBhcyB0aGUgbGF0ZXN0IHllYXIuIFlvdSB3aWxs IG5vdCBiZSBwZXJtaXR0ZWQgdG8gbmF2aWdhdGUgdGhlIGNhbGVuZGFyIG91dHNpZGUgdGhp cyByYW5nZS48ZGl2IGNsYXNzPSJicmVhayI+VG8gd2lkZW4gdGhlIHJhbmdlLCBzcGVjaWZ5 IHNvbWUgdmFsdWVzLCBmb3IgZXhhbXBsZSA8Y29kZT55ZWFyd2lkdGg9JnF1b3Q7Miw0JnF1 b3Q7PC9jb2RlPiB3aWxsIHN1YnRyYWN0IDIgd2hvbGUgeWVhcnMgZnJvbSB0aGUgZWFybGll c3QgZXZlbnQgYW5kIGFkZCA0IHdob2xlIHllYXJzIHRvIHRoZSBsYXRlc3QgKHBvc3RlZCBv ciBtb2RpZmllZCkgZXZlbnQuIElmIHlvdSBzcGVjaWZ5IGEgc2luZ2xlIG51bWJlciwgdGhh dCB2YWx1ZSB3aWxsIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSByYW5nZSBlcXVhbGx5IGluIGJv dGggZGlyZWN0aW9ucy48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+IElmIHlvdSBhZGQgJiM4 MjE2O0BjQCYjODIxNzsgdG8gZWl0aGVyIHZhbHVlIHRoZSBjdXJyZW50IHllYXIgaXMgdXNl ZCBpbnN0ZWFkIG9mIHRoZSBlYXJsaWVzdCBvciBsYXRlc3QgZXZlbnQsIGUuZy4gPGNvZGU+ eWVhcndpZHRoPSZxdW90OzIsNGMmcXVvdDs8L2NvZGU+IHdpbGwgc3VidHJhY3QgMiB5ZWFy cyBmcm9tIHRoZSBlYXJsaWVzdCBldmVudCBhbmQgYWRkIDQgd2hvbGUgeWVhcnMgdG8gdG9k YXkmIzgyMTc7cyBkYXRlPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmZv cm08L3NwYW4+IDogdXNlIHRoaXMgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9y bSB0byBwcm9jZXNzIGVhY2ggZXZlbnQuIElmIHRoZSBjYWxlbmRhciB0YWcgaXMgdXNlZCBh cyBhIGNvbnRhaW5lciBpdCB3aWxsIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgZm9y bS4gSWYgbmVpdGhlciBhcmUgdXNlZCwgdGhlIGRlZmF1bHQgZm9yIGEgbGFyZ2UgY2FsZW5k YXIgaXMgYSBoeXBlcmxpbmtlZCBhcnRpY2xlIHRpdGxlLiBUaGUgc21hbGwgY2FsZW5kYXIg cmVuZGVycyBhbiBlbXB0eSBldmVudDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5z cGFuZm9ybTwvc3Bhbj4gOiB5b3UgbWF5IGVsZWN0IHRvIHJlbmRlciBzcGFubmVkIGV2ZW50 cyBkaWZmZXJlbnRseSB0byBzdGFuZGFyZCBldmVudHMuIEJ5IGRlZmF1bHQgdGhleSB1c2Ug dGhlIHNhbWUgPGNvZGU+Zm9ybTwvY29kZT4gYnV0ICYjODIxMjsgaWYgbmVpdGhlciB0aGF0 IG5vciB0aGUgY29udGFpbmVyIGFyZSBzcGVjaWZpZWQgJiM4MjEyOyB3aWxsIGJlIHJlbmRl cmVkIGFzIGEgaHlwZXJsaW5rZWQgcmlnaHQtYXJyb3cgdG8gaW5kaWNhdGUgY29udGludWF0 aW9uIG9mIHRoZSBwcmV2aW91cyBkYXkmIzgyMTc7cyBldmVudC4gTm90ZSB0aGUgZmlyc3Qg ZGF5IG9mIGEgc3Bhbm5lZCBzZXQgaXMgPGVtPm5vdDwvZW0+IHBhc3NlZCB0byB0aGUgPGNv ZGU+c3BhbmZvcm08L2NvZGU+OyBvbmx5IGNvbnRpbnVhdGlvbiBjZWxscyBhcmUgcGFzc2Vk IHRvIGl0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJlY3VyZm9ybTwvc3Bhbj4g OiBzaW1pbGFybHkgdG8gPGNvZGU+c3BhbmZvcm08L2NvZGU+IHlvdSBtYXkgZWxlY3QgdG8g cmVuZGVyIHJlY3VycmluZyBldmVudHMgZGlmZmVyZW50bHkgdG8gc3RhbmRhcmQgZXZlbnRz LiBCeSBkZWZhdWx0IHRoZXkgdXNlIHRoZSBzYW1lIDxjb2RlPmZvcm08L2NvZGU+IChvciBj b250YWluZXIpIGFzIHN0YW5kYXJkIGV2ZW50cyBhbmQgdGhlIGZpcnN0IGV2ZW50IG9mIGEg cmVjdXJyaW5nIHNldCBpcyBub3QgcGFzc2VkIHRvIDxjb2RlPnJlY3VyZm9ybTwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2VsbGZvcm08L3NwYW4+ICg8c3BhbiBj bGFzcz0icmVxdWlyZWQiPm9ubHkgb24gbGFyZ2UgY2FsZW5kYXJzPC9zcGFuPikgOiB1c2Ug dGhpcyBpZiB5b3Ugd2lzaCB0byBidWlsZCBlYWNoIGNlbGwgZW50aXJlbHkgZnJvbSBzY3Jh dGNoLiBJdCB3b3JrcyBkaWZmZXJlbnRseSB0byB0aGUgb3RoZXIgZm9ybSBhdHRyaWJ1dGVz IGluIHRoYXQgaXQgPGVtPm11c3Q8L2VtPiBiZSBhIGZvcm0gYW5kIGNhbm5vdCB1c2UgdGhl IGNvbnRhaW5lci4gVGhlcmUgYXJlIGFsc28gc29tZSA8YSBocmVmPSIjY2VsbGZvcm0iPnJl cGxhY2VtZW50IHZhcmlhYmxlczwvYT4geW91IGNhbiB1c2UgdG8gaW5zZXJ0IGR5bmFtaWMg cGllY2VzIG9mIGluZm9ybWF0aW9uIGluIHlvdXIgY2VsbHM8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+c3RlcGZpZWxkPC9zcGFuPiA6IHRoZSBJRCBvZiBhIGZpZWxkIHdpdGhp biB3aGljaCBhbiBldmVudCBtYXkgYmUgdG9sZCB0byByZXBlYXQuIE5vdGUgaXQgaXMgdGhl IGZpZWxkJiM4MjE3O3MgSUQgPGVtPm5vdCBpdHMgbmFtZTwvZW0+LCBzbyBmb3IgY3VzdG9t IGZpZWxkcyB5b3UgbXVzdCB1c2UgPGNvZGU+Y3VzdG9tXzE8L2NvZGU+IG9yIDxjb2RlPmN1 c3RvbV8yPC9jb2RlPiBldGMuIFdpdGhvdXQgdGhpcyBhdHRyaWJ1dGUgKGl0cyBkZWZhdWx0 KSwgbm8gcmVjdXJyaW5nIGV2ZW50cyBtYXkgYmUgZGVmaW5lZC4gU2VlIDxhIGhyZWY9IiNy ZWN1ciI+cmVjdXJyaW5nIGV2ZW50czwvYT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+b21pdGZpZWxkPC9zcGFuPiA6IHRoZSBJRCAobm90IG5hbWUpIG9mIGEgZmllbGQgZnJv bSB3aGljaCBldmVudCBkYXRlcyBtYXkgYmUgb21pdHRlZC4gU3BlY2lmeSBhIGxpc3Qgb2Yg ZGF0ZXMgb24gd2hpY2ggdGhpcyBldmVudCBpcyBub3QgcnVubmluZy4gU2VlIDxhIGhyZWY9 IiNjYW5jZWwiPmNhbmNlbGxpbmcgYW5kIG9taXR0aW5nIGV2ZW50czwvYT48L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+c2tpcGZpZWxkPC9zcGFuPiA6IHRoZSBJRCAobm90IG5h bWUpIG9mIGEgZmllbGQgZnJvbSB3aGljaCBldmVudCBkYXRlcyBtYXkgYmUgY2FuY2VsbGVk LiBHaXZlIGEgbGlzdCBvZiBkYXRlcyBvbiB3aGljaCB0aGlzIGV2ZW50IHdpbGwgYmUgPGEg aHJlZj0iI2NhbmNlbCI+Y2FuY2VsbGVkPC9hPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5leHRyYWZpZWxkPC9zcGFuPiA6IHRoZSBJRCAobm90IG5hbWUpIG9mIGEgZmllbGQg ZnJvbSB3aGljaCBhIGxpc3Qgb2YgPGEgaHJlZj0iI2V4dHJhIj5hZGRpdGlvbmFsIGV2ZW50 IGRhdGVzPC9hPiBtYXkgYmUgZ2l2ZW47IHRoZSBzYW1lIGV2ZW50IGRldGFpbHMgd2lsbCBi ZSBjb3BpZWQgdG8gdGhlIG5ldyBkYXk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ ZXh0cmFzdHJpY3Q8L3NwYW4+IDogYW55IGRhdGVzIGluIDxjb2RlPmV4dHJhZmllbGQ8L2Nv ZGU+IGF1dG9tYXRpY2FsbHkgYXBwZWFyIG9uIHRoZSBjYWxlbmRhciwgYnV0IHlvdSBtYXkg Y2hvb3NlIHRvIHJlc3RyaWN0IG5ldyBkYXRlcyBmcm9tIGFwcGVhcmluZyBhZnRlciB0aGUg ZXZlbnQmIzgyMTc7cyBleHBpcnkgZGF0ZSBieSBzZXR0aW5nIDxjb2RlPmV4dHJhc3RyaWN0 PSZxdW90OzEmcXVvdDs8L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5zaG93c2tpcHBlZDwvc3Bhbj4gOiB3aGVuIGFuIGV2 ZW50IGlzIGNhbmNlbGxlZCB5b3UgY2FuIHJlbW92ZSBpdCBmcm9tIHRoZSBjYWxlbmRhciAo PGNvZGU+MDwvY29kZT4pIG9yIHNob3cgaXQgKDxjb2RlPjE8L2NvZGU+KS4gRGVmYXVsdDog PGNvZGU+MDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c2hvd3NwYW5u ZWQ8L3NwYW4+IDogZXZlbnRzIHdpdGggZXhwaXJ5IHRpbWVzIGxhdGVyIHRoYW4gdGhlaXIg cG9zdGVkIGRhdGUgbWF5IGJlIHJlbmRlcmVkIGFjcm9zcyBtdWx0aXBsZSBjZWxscy4gSWYg eW91IGRvIG5vdCB3YW50IHRoaXMgZmVhdHVyZSB5b3UgY2FuIHR1cm4gaXQgb2ZmICg8Y29k ZT4wPC9jb2RlPikuIERlZmF1bHQ6IDxjb2RlPjE8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmhvbGlkYXlzPC9zcGFuPiA6IGxpc3Qgb2YgZGF0ZXMgdGhhdCBhcmUg ZGVjcmVlZCBhcyA8YSBocmVmPSIjaG9saWRheXMiPmhvbGlkYXlzPC9hPi4gRXZlbnRzIGNh biBiZSBzY2hlZHVsZWQgb24gaG9saWRheXMgYnV0IG1heSBub3QgcmVjdXIgb3Igc3BhbiBh IGhvbGlkYXkgdW5sZXNzIHlvdSBleHBsaWNpdGx5IHNheSBzbyB2aWEgdGhlIDxjb2RlPmhv bGlkYXlmbGFnczwvY29kZT4gYXR0cmlidXRlLiBZb3VyIGxpc3Qgb2YgZGF0ZXMgbWF5IGJl IGRlZmVycmVkIHRvIGEgPGNvZGU+Jmx0O3R4cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4sIGlu IHdoaWNoIGNhc2UgZGVmaW5lIHlvdXIgbGlzdCBpbiBhIG5hbWVkIHZhcmlhYmxlIGFuZCB1 c2UgPGNvZGU+aG9saWRheXM9JnF1b3Q7dHhwdmFyOm15X3Zhcl9uYW1lJnF1b3Q7PC9jb2Rl PiB0byByZWFkIHRoZW0gaW50byB0aGUgcGx1Z2luPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmhvbGlkYXlmbGFnczwvc3Bhbj4gOiBwZXJtaXQgY2VydGFpbiA8YSBocmVmPSIj bmFtaW5nIj5ldmVudCBmbGFnczwvYT4gdG8gYmUgc2NoZWR1bGVkIG9uIGhvbGlkYXlzLiBE ZWZhdWx0OiA8Y29kZT5zdGFuZGFyZDwvY29kZT4gKGkuZS4gc3RhbmRhcmQgb25lLW9mZiBl dmVudHMpIGJ1dCBvdGhlcnMgbWF5IGJlIGxpc3RlZCBhcyB3ZWxsLiBDaG9vc2UgZnJvbSA8 Y29kZT5zdGFuZGFyZDwvY29kZT4sIDxjb2RlPnJlY3VyPC9jb2RlPiBvciA8Y29kZT5tdWx0 aTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bGlua3Bvc3RlZDwvc3Bh bj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBvbiBzbWFsbCBjYWxlbmRhcnM8L3Nw YW4+KSA6IGVhY2ggY2VsbCB0aGF0IGNvbnRhaW5zIGFuIDxhIGhyZWY9IiNuYW1pbmciPmV2 ZW50IGZsYWc8L2E+IG9mIHRoZSBnaXZlbiB0eXBlKHMpIHdpbGwgaGF2ZSBpdHMgZGF5IG51 bWJlciBsaW5rZWQgdG8gdGhlIGV2ZW50JiM4MjE3O3MgdHJ1ZSBzdGFydCBkYXRlIGluc3Rl YWQgb2YgdGhlIGNlbGwmIzgyMTc7cyBkYXRlLiBUaHVzLCBpZiB5b3UgaGF2ZSBhIHdlZWts eSBldmVudCB0aGF0IHN0YXJ0cyBvbiB0aGUgMjB0aCBEZWNlbWJlciAyMDA4LCBzZXR0aW5n IDxjb2RlPmxpbmtwb3N0ZWQ9JnF1b3Q7cmVjdXImcXVvdDs8L2NvZGU+IHdpbGwgY2F1c2Ug dGhlIGxpbmsgdG8gc2hvdyA8Y29kZT5kYXRlPTIwMDgtMTItMjA8L2NvZGU+IGVhY2ggd2Vl ay4gVGhpcyBhbGxvd3MgeW91IHRvIGFsd2F5cyBsaW5rIHRvIGEgdmFsaWQgYXJ0aWNsZS9l dmVudC4gV2l0aG91dCBsaW5rcG9zdGVkLCB0aGUgZGF0ZXMgd291bGQgYmUgMjAwOC0xMi0y MCwgMjAwOC0xMi0yNywgMjAwOS0wMS0wMywgYW5kIHNvIG9uLiBEZWZhdWx0OiA8Y29kZT5y ZWN1ciwgbXVsdGksIG11bHRpcHJldiwgbXVsdGlsYXN0PC9jb2RlPiAoaS5lLiBhbnkgcmVj dXJyaW5nIG9yIHNwYW5uZWQgZXZlbnQpLiBOb3RlIHRoYXQgaWYgbW9yZSB0aGFuIG9uZSBl dmVudCBvY2N1cnMgaW4gdGhlIGNlbGwsIHRoZSBsaW5rIHdpbGwgb25seSBiZSB0byB0aGUg Zmlyc3QgZXZlbnQgdGhlIHBsdWdpbiBmaW5kczwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5tYWludGFpbjwvc3Bhbj4gOiBrZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHN0YXRl IG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB3aGVuIG5hdmlnYXRpbmcg dGhlIGNhbGVuZGFyIHVzaW5nIHRoZSBuZXh0L3ByZXYgb3IgbW9udGgveWVhciBzZWxlY3Qg bGlzdHMuIEl0ZW1zIHRoYXQgeW91IHdhbnQgdG8gcHJlc2VydmUgc2hvdWxkIGJlIGNvbW1h LXNlcGFyYXRlZCBoZXJlLiBDaG9vc2UgZnJvbSA8Y29kZT5jYWxpZDwvY29kZT4sIDxjb2Rl PnNlY3Rpb248L2NvZGU+LCA8Y29kZT5jYXRlZ29yeTwvY29kZT4sIDxjb2RlPmF1dGhvcjwv Y29kZT4sIDxjb2RlPmFydGljbGU8L2NvZGU+LCA8Y29kZT5wZzwvY29kZT4gb3IgeW91ciBv d24gPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUuIERlZmF1bHQ6IDxj b2RlPmNhbGlkPC9jb2RlPi48ZGl2IGNsYXNzPSJicmVhayI+VXNlIDxjb2RlPm1haW50YWlu PSZxdW90O3NlY3Rpb24sIGFydGljbGUsIGNhbGlkJnF1b3Q7PC9jb2RlPiBpZiB5b3UgaGF2 ZSBhbiBpbmRpdmlkdWFsIGFydGljbGUgcGFnZSB3aXRoIGEgY2FsZW5kYXIgaW4gYSBzaWRl YmFyLCBzbyB0aGUgY3VycmVudGx5IHZpZXdlZCBhcnRpY2xlIHdpbGwgcmVtYWluIGluIHZp ZXcgd2hlbiBjaGFuZ2luZyBkYXRlLiBJZiB5b3Ugd2lzaCB0byBtYWludGFpbiBzdGF0ZSB5 b3Vyc2VsZiBvciBkbyBzb21ldGhpbmcgZXhvdGljLCBlbXB0eSB0aGlzIGF0dHJpYnV0ZSBm aXJzdCB0byBhdm9pZCB3ZWlyZG5lc3M8L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+bmFtZXZhbDwvc3Bhbj4gOiBhZGQgeW91ciBvd24gbmFtZS92YWx1ZSBwYWlycyB0 byB0aGUgY2FsZW5kYXImIzgyMTc7cyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPi4g ZS5nLiA8Y29kZT5uYW1ldmFsPSZxdW90O3RyYWNrZXI9bXljYWwsIGtlZXA9MSZxdW90Ozwv Y29kZT4gd291bGQgYWRkIDxjb2RlPj90cmFja2VyPW15Y2FsJmFtcDtrZWVwPTE8L2NvZGU+ IHRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPi4gVXNlZnVsIGlmIHlvdSB3 YW50IHRvIDxjb2RlPm1haW50YWluPC9jb2RlPiBzb21lIHZhbHVlcyB3aGljaCB5b3UgY2Fu JiM4MjE3O3QgYWRkIHRvIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvbiBw YWdlIGxvYWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdGljPC9zcGFuPiA6 IGZvcmNlIHRoZSBjYWxlbmRhciB0byBiZSBmaXhlZCB0byBvbmUgbW9udGgveWVhciAoaS5l LiBubyBuYXZpZ2F0aW9uKS4gTW9udGggYW5kIHllYXIgZGVjaWRlZCBieSBhdHRyaWJ1dGVz IDxjb2RlPm1vbnRoPC9jb2RlPiBhbmQgPGNvZGU+eWVhcjwvY29kZT4gb3IgJiM4MjEyOyBp ZiBvbWl0dGVkICYjODIxMjsgdGhlIGN1cnJlbnQgZGF0ZSB3aWxsIGJlIHVzZWQ8L2xpPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z210PC9zcGFuPiA6IHJldHVybiBlaXRoZXIgbG9j YWwgdGltZSAoPGNvZGU+MDwvY29kZT4pIGFjY29yZGluZyB0byB0aGUgdGltZSB6b25lIHNl dCBpbiBCYXNpYyBQcmVmcywgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkdNVDwvc3Bhbj4gdGlt ZSAoPGNvZGU+MTwvY29kZT4pLiBEZWZhdWx0OiA8Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5sYW5nPC9zcGFuPiA6IGFuIDxzcGFuIGNsYXNzPSJjYXBz Ij5JU088L3NwYW4+IGxhbmd1YWdlIGNvZGUgdGhhdCBmb3JtYXRzIHRpbWUgc3RyaW5ncyBz dWl0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBsYW5ndWFnZSAob3IgbG9jYWxlKSBhcyBkZWZp bmVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPXzYzOSI+ PHNwYW4gY2xhc3M9ImNhcHMiPklTTzwvc3Bhbj4gNjM5PC9hPi4gRGVmYXVsdDogdW5zZXQg KGkuZS4gdXNlIHRoZSB2YWx1ZSBhcyBzdGF0ZWQgaW4gPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gcHJlZnMpPC9saT4KCTwvdWw+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0 dHN0eWxlcyI+U3R5bGUgYXR0cmlidXRlczwvaDM+CgoJPHA+T25jZSB5b3UgaGF2ZSB0d2Vh a2VkIHlvdXIgYmFzaWMgY2FsZW5kYXIgYXMgZGVzY3JpYmVkIGFib3ZlIHlvdSBjYW4gbW92 ZSBvbnRvIHRoZSBzdHlsZSBhdHRyaWJ1dGVzIHNvIHlvdSBtYXkgZ2V0IGF0IGVhY2ggZmFj ZXQgb2YgdGhlIGNhbGVuZGFyIGFuZCB2aXN1YWxseSBhbHRlciBpdDo8L3A+CgoJPHVsPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3NsZXZlbHM8L3NwYW4+IDogY2xhc3NlcyBj YW4gYmUgYXBwbGllZCBhdCB0aGUgZXZlbnQgbGV2ZWwgKHNvIHlvdSBjYW4gY29sb3VyIGVh Y2ggZXZlbnQgaW4gYSBjZWxsKSwgb3IgdGhlIGNlbGwgbGV2ZWwgKHNvIHlvdSBjYW4gY29s b3VyIHRoZSB3aG9sZSBkYXkpLCBvciBib3RoLiBZb3UgbWF5IGFsc28gcHJvbW90ZSAoaS5l LiBjb3B5KSBhbGwgZXZlbnQtbGV2ZWwgY2xhc3NlcyB0aGF0IG9jY3VyIGluIGEgZGF5IHRv IHRoZSBjZWxsIGxldmVsIHNvIHlvdSBjYW4gY29sb3VyIHRoZSBjZWxsIGJhc2VkIG9uIHRo ZSBldmVudHMgdGhhdCBpdCBjb250YWlucy4gQ29tbWEtc2VwYXJhdGUgYW55IG9mIDxjb2Rl PmV2ZW50PC9jb2RlPiAoZm9yIHJlbmRlcmluZyBldmVudC1sZXZlbCBzdHlsZXMpLCA8Y29k ZT5jZWxsPC9jb2RlPiAoZm9yIHJlbmRlcmluZyBzdHlsZXMgYXQgdGhlIGNlbGwgbGV2ZWwp LCBvciA8Y29kZT5jZWxscGx1czwvY29kZT4gKGZvciBjb3B5aW5nIHVuaXF1ZSBldmVudCBj bGFzc2VzIHRvIHRoZSBjZWxsKS4gTm90ZSB5b3Ugd2lsbCBub3QgbmVlZCB0byB1c2UgPGNv ZGU+Y2VsbDwvY29kZT4gYW5kIDxjb2RlPmNlbGxwbHVzPC9jb2RlPiB0b2dldGhlciBiZWNh dXNlIHRoZSBsYXR0ZXIgb3ZlcnJpZGVzIHRoZSBmb3JtZXIsIGJ1dCB0aGVyZSYjODIxNztz IG5vIGhhcm0gaWYgeW91IGRvLiBEZWZhdWx0OiA8Y29kZT5jZWxsLCBldmVudDwvY29kZT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3NwcmVmaXhlczwvc3Bhbj4gOiBh IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHVwIHRvIHR3byBwcmVmaXhlcyB0byBhcHBseSB0 byB5b3VyIGNsYXNzIG5hbWVzLiBUaGUgZmlyc3QgcHJlZml4IGlzIGFwcGxpZWQgdG8gY2Vs bC1sZXZlbCBjbGFzc2VzIChhbmQgZmxhZ3MpIGFuZCB0aGUgc2Vjb25kIHByZWZpeCBpcyBh cHBsaWVkIHRvIGV2ZW50IGNsYXNzZXMgKHNlZSA8Y29kZT5ldmVudGNsYXNzZXM8L2NvZGU+ KSBzbyB5b3UgbWF5IGRpc3Rpbmd1aXNoIHRoZW0gaWYgeW91IHdpc2guIElmIHlvdSBvbmx5 IHNwZWNpZnkgb25lIHByZWZpeCBpdCB3aWxsIGJlIHVzZWQgZm9yIGJvdGggdHlwZXMgb2Yg Y2xhc3MuIElmIHlvdSB1c2UgPGNvZGU+Y2xhc3NwcmVmaXhlcz0mcXVvdDsmcXVvdDs8L2Nv ZGU+IHRoZW4gbm8gcHJlZml4ZXMgd2lsbCBiZSB1c2VkIGF0IGFsbC4gRGVmYXVsdDogPGNv ZGU+c21kX2NhbF8sIHNtZF9jYWxfZXZfPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdG5tIj5jbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVm aXgpIHRvIGFwcGx5IHRvIHRoZSBjYWxlbmRhciB0YWJsZSBpdHNlbGYuIERlZmF1bHQ6IHVu c2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJvd2NsYXNzPC9zcGFuPiA6IHRo ZSBjbGFzcyBuYW1lIChwbHVzIGNsYXNzIHByZWZpeCkgdG8gYXBwbHkgdG8gZWFjaCB0YWJs ZSByb3cuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNl bGxjbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVmaXgpIHRv IGFwcGx5IHRvIGVhY2ggdGFibGUgY2VsbC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+ZW1wdHljbGFzczwvc3Bhbj4gOiB0aGUgY2xhc3MgbmFtZSAo cGx1cyBjbGFzcyBwcmVmaXgpIHRvIGFwcGx5IHRvIGFueSBjZWxscyB0aGF0IGRvbiYjODIx Nzt0IGNvbnRhaW4gYSBkYXkgbnVtYmVyIChpLmUuIHRoZSBibGFuayBjZWxscyBhdCB0aGUg c3RhcnQgYW5kIGVuZCBvZiBhIG1vbnRoKS4gRGVmYXVsdDogPGNvZGU+ZW1wdHk8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmlzb3dlZWtjbGFzczwvc3Bhbj4gOiB0 aGUgY2xhc3MgbmFtZSAocGx1cyBjbGFzcyBwcmVmaXgpIHRvIGFwcGx5IHRvIGVhY2ggY2Vs bCBjb250YWluaW5nIGFuIDxzcGFuIGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHdlZWsgKGlm IDxjb2RlPmlzb3dlZWtzPC9jb2RlPiBpcyB1c2VkKS4gRGVmYXVsdDogPGNvZGU+d2Vlazwv Y29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2Y2xhc3M8L3NwYW4+IDog dGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4KSB0byBhcHBseSB0byB0aGUgcHJl di9uZXh0IG1vbnRoIG5hdmlnYXRpb24gYXJyb3dzLiBJZiBhIGNvbW1hLXNlcGFyYXRlZCBs aXN0IGlzIHVzZWQsIHRoZSBmaXJzdCBpdGVtIHdpbGwgYmUgdGhlIG5hbWUgb2YgdGhlIGNs YXNzIG9uIHRoZSBsaW5rIHRvIHRoZSBwcmV2aW91cyBtb250aCwgdGhlIDJuZCBpdGVtIHRv IHRoZSBuZXh0IG1vbnRoLiBJZiBhIHNpbmdsZSB2YWx1ZSBpcyB1c2VkLCBib3RoIGNsYXNz IG5hbWVzIHdpbGwgYmUgdGhlIHNhbWUuIERlZmF1bHQ6IDxjb2RlPm5hdnByZXYsIG5hdm5l eHQ8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm15Y2xhc3M8L3NwYW4+ IDogdGhlIGNsYXNzIG5hbWUgKHBsdXMgY2xhc3MgcHJlZml4KSB0byBhcHBseSB0byBib3Ro IHRoZSBtb250aCBhbmQgeWVhciBpbiB0aGUgY2FsZW5kYXIgaGVhZGVyIChlaXRoZXIgdGhl IDxjb2RlPiZsdDtzcGFuJmd0OzwvY29kZT4gb3IgPGNvZGU+Jmx0O3NlbGVjdCZndDs8L2Nv ZGU+IHRhZ3MpLiBJZiA8Y29kZT5teXdyYXB0YWc8L2NvZGU+IGlzIHVzZWQsIHRoZSBjbGFz cyBpcyBhcHBsaWVkIHRvIHRoZSB3cmFwdGFnIGluc3RlYWQuIERlZmF1bHQ6IHVuc2V0PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmV2ZW50Y2xhc3Nlczwvc3Bhbj4gOiBhIGNv bW1hLXNlcGFyYXRlZCBsaXN0IG9mIGl0ZW1zIHRvIGFkZCBhcyBjbGFzc2VzIHRvIGVhY2gg ZXZlbnQgKGVhY2ggcHJlZml4ZWQgd2l0aCB0aGUgZXZlbnQgcHJlZml4KS4gSXQgZGVmYXVs dHMgdG8gPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+IHNvIGl0IGFkZHMgdGhlIENhdGVnb3J5MSBh bmQgMiBuYW1lcyBhcyBjbGFzcyBpZGVudGlmaWVycyB0byBlYWNoIGV2ZW50LiBUaHVzLCBv dXQgb2YgdGhlIGJveCwgeW91IGNhbiBzdHlsZSBldmVudHMgYnkgY2F0ZWdvcnkuIDxkaXYg Y2xhc3M9ImJyZWFrIj5JZiB5b3Ugd2lzaCB0byBleHRlbmQgb3IgYWx0ZXIgdGhpcywganVz dCBnaXZlIGEgbGlzdCBvZiBmaWVsZHMgdGhhdCB5b3Ugd2FudCB0byBhcHBseSB0byB0aGUg ZXZlbnQgKGUuZy4gPGNvZGU+ZXZlbnRjbGFzc2VzPSZxdW90O0lELCBBdXRob3JJRCwgY3Vz dG9tXzUmcXVvdDs8L2NvZGU+IHdvdWxkIGFkZCB0aHJlZSBjbGFzc2VzIHRvIGVhY2ggZXZl bnQgY29ycmVzcG9uZGluZyB0byB0aGUgZXZlbnQmIzgyMTc7cyBJRCwgaXRzIGF1dGhvciAo bG9naW4pIG5hbWUgYW5kIHRoZSBjb250ZW50cyBvZiBjdXN0b21fNSkuIE9mIGNvdXJzZSwg aWYgeW91IHVzZSA8Y29kZT5jZWxscGx1czwvY29kZT4gbW9kZSB0aGVzZSBjbGFzc2VzIHdp bGwgYmUgY29waWVkIHRvIHRoZSBjZWxsIGxldmVsLiA8L2Rpdj48ZGl2IGNsYXNzPSJicmVh ayI+U29tZSBzcGVjaWFsIG5hbWVzIGV4aXN0OiA8Y29kZT5jYXRlZ29yeTwvY29kZT4gcmV0 dXJucyBib3RoIENhdGVnb3J5MSBhbmQgQ2F0ZWdvcnkyIChpZiBzZXQpOyA8Y29kZT5nY2F0 PC9jb2RlPiB3aWxsIHJldHVybiB0aGUgY3VycmVudCAmIzgyMTY7Z2xvYmFsJiM4MjE3OyBj YXRlZ29yeSAoaWYgY3VycmVudGx5IGZpbHRlcmluZyBieSBjYXRlZ29yeSk7IDxjb2RlPmF1 dGhvcjwvY29kZT4gcmV0dXJucyB0aGUgYXV0aG9yIElEIChpZiBjdXJyZW50bHkgZmlsdGVy aW5nIGJ5IGF1dGhvcik7IDxjb2RlPnNlY3Rpb248L2NvZGU+IGdpdmVzIHRoZSBjdXJyZW50 IHNlY3Rpb248L2Rpdj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXZlbnR3cmFw dGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZywgd2l0aG91dCBpdHMgYnJhY2tldHMsIHRv IHdyYXAgZWFjaCBldmVudCB3aXRoLiBEZWZhdWx0OiA8Y29kZT5zcGFuPC9jb2RlPjwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5teXdyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhU TUwgdGFnLCB3aXRob3V0IGl0cyBicmFja2V0cywgdG8gd3JhcCBhcm91bmQgPGVtPmJvdGg8 L2VtPiBtb250aCArIHllYXIgZHJvcGRvd24gc2VsZWN0IGxpc3RzIGFuZCBvcHRpb25hbCBz dWJtaXQgYnV0dG9uIChpdCB3cmFwcyB0aGUgbG90LCBjb21iaW5lZCkuIERlZmF1bHQ6IHVu c2V0PC9saT4KCTwvdWw+CgoJPGgyIGlkPSJjZWxsZm9ybSI+VXNpbmcgYSA8Y29kZT5jZWxs Zm9ybTwvY29kZT4gd2l0aCByZXBsYWNlbWVudCB2YXJpYWJsZXM8L2gyPgoKCTxwPklmIHlv dSBkb24mIzgyMTc7dCBsaWtlIHRoZSBsYXlvdXQgb2YgdGhlIGRlZmF1bHQgY2VsbCwgeW91 IGNhbiBkbyBpdCB5b3Vyc2VsZiB3aXRoIHRoZSA8Y29kZT5jZWxsZm9ybTwvY29kZT4gYXR0 cmlidXRlLiBUaGUgY2VsbHMgYXJlIGdlbmVyYXRlZCA8ZW0+bGFzdDwvZW0+LCBzbyBieSB0 aGUgdGltZSB0aGUgcGx1Z2luIHJlYWNoZXMgdGhpcyBhdHRyaWJ1dGUsIGFsbCBldmVudHMg aGF2ZSBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIGJ5IGFueSBvZiB5b3VyIGZvcm1zL2NvbnRh aW5lcnMuPC9wPgoKCTxwPlRvIGJ1aWxkIHlvdXIgb3duIGNlbGxzIHlvdSBvZnRlbiBuZWVk IGluZm9ybWF0aW9uIHN1Y2ggYXMgdGhlIGV2ZW50cyB0aGF0IGZhbGwgb24gdGhhdCBwYXJ0 aWN1bGFyIGRheSwgb3IgdGhlIGRheSwgd2Vlaywgb3IgbW9udGggbnVtYmVycywgZXRjLiBT byAmIzgyMTI7IGluIGFkZGl0aW9uIHRvIHlvdXIgdXN1YWwgbWFya3VwIGFuZCA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzICYjODIxMjsgeW91IG1heSBhbHNvIGluc2Vy dCBhbnkgb2YgdGhlIGZvbGxvd2luZyAmIzgyMTY7cmVwbGFjZW1lbnRzJiM4MjE3OyB0byBo YXZlIHRoZSByZWxldmFudCB2YWx1ZSBpbnNlcnRlZCBhdCB0aGF0IHBsYWNlIGluIHRoZSBj ZWxsOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPntkYXl9PC9jb2RlPiA6IGN1cnJlbnQgZGF5 IChhcyBhIG51bWJlciBmcm9tIDEgdG8gMzEpPC9saT4KCQk8bGk+PGNvZGU+e3dlZWtkYXl9 PC9jb2RlPiA6IGN1cnJlbnQgd2Vla2RheSAoYXMgYSB3b3JkIGluIHRoZSBsb2NhbCBsYW5n dWFnZSwgb3IgZnJvbSB5b3VyIDxjb2RlPmRheWZvcm1hdDwvY29kZT4gbGlzdCk8L2xpPgoJ CTxsaT48Y29kZT57d2Vla308L2NvZGU+IDogY3VycmVudCA8c3BhbiBjbGFzcz0iY2FwcyI+ SVNPPC9zcGFuPiB3ZWVrIG51bWJlcjwvbGk+CgkJPGxpPjxjb2RlPnttb250aH08L2NvZGU+ IDogY3VycmVudCBtb250aCAoYXMgYSBudW1iZXIgZnJvbSAxIHRvIDEyKTwvbGk+CgkJPGxp Pjxjb2RlPnttb250aG5hbWV9PC9jb2RlPiA6IG1vbnRoIG5hbWUgaW4gdGhlIGxvY2FsIGxh bmd1YWdlPC9saT4KCQk8bGk+PGNvZGU+e3llYXJ9PC9jb2RlPiA6IGN1cnJlbnQgeWVhciAo NCBkaWdpdHMpPC9saT4KCQk8bGk+PGNvZGU+e3Nob3J0eWVhcn08L2NvZGU+IDogY3VycmVu dCB5ZWFyICgyIGRpZ2l0cyk8L2xpPgoJCTxsaT48Y29kZT57aXNveWVhcn08L2NvZGU+IDog Y3VycmVudCA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB5ZWFyICg0IGRpZ2l0cyk8 L2xpPgoJCTxsaT48Y29kZT57c2hvcnRpc295ZWFyfTwvY29kZT4gOiBjdXJyZW50IDxzcGFu IGNsYXNzPSJjYXBzIj5JU088L3NwYW4+IHllYXIgKDIgZGlnaXRzKTwvbGk+CgkJPGxpPjxj b2RlPntldmVudHN9PC9jb2RlPiA6IGFsbCBldmVudHMgZm9yIHRoZSBkYXk8L2xpPgoJCTxs aT48Y29kZT57c3RhbmRhcmR9PC9jb2RlPiA6IG9ubHkgc3RhbmRhcmQgZXZlbnRzPC9saT4K CQk8bGk+PGNvZGU+e3JlY3VyZmlyc3R9PC9jb2RlPiAvIDxjb2RlPntyZWN1cn08L2NvZGU+ IDogdGhlIGNob3NlbiB0eXBlIG9mIHJlY3VycmluZyBldmVudDwvbGk+CgkJPGxpPjxjb2Rl PnthbGxyZWN1cn08L2NvZGU+IDogYWxsIHJlY3VycmluZyBldmVudHMgZm9yIHRoZSBkYXk8 L2xpPgoJCTxsaT48Y29kZT57bXVsdGlmaXJzdH08L2NvZGU+IC8gPGNvZGU+e211bHRpfTwv Y29kZT4gLyA8Y29kZT57bXVsdGlwcmV2fTwvY29kZT4gLyA8Y29kZT57bXVsdGlsYXN0fTwv Y29kZT4gOiB0aGUgY2hvc2VuIHR5cGUgb2YgbXVsdGkgZXZlbnQ8L2xpPgoJCTxsaT48Y29k ZT57YWxsbXVsdGl9PC9jb2RlPiA6IGFsbCBtdWx0aSBldmVudHMgZm9yIHRoZSBkYXk8L2xp PgoJCTxsaT48Y29kZT57Y2FuY2VsfTwvY29kZT4gOiBvbmx5IGNhbmNlbGxlZCBldmVudHM8 L2xpPgoJCTxsaT48Y29kZT57ZXh0cmF9PC9jb2RlPiA6IG9ubHkgZXh0cmEgZXZlbnRzPC9s aT4KCTwvdWw+CgoJPGgyIGlkPSJzaXplZGlmZiI+RGlmZmVyZW5jZXMgYmV0d2VlbiBsYXJn ZSBhbmQgc21hbGwgY2FsZW5kYXJzPC9oMj4KCgk8cD5Ob3QgYSBsb3QhIEJ1dCB0aGVyZSBh cmUgc29tZSBzdWJ0bGV0aWVzOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPmNlbGxmb3JtPC9j b2RlPiBjYW5ub3QgYmUgdXNlZCBvbiBhIHNtYWxsIGNhbGVuZGFyPC9saT4KCQk8bGk+Qnkg ZGVmYXVsdCwgbm8gZXZlbnRzIGFyZSBwbGFjZWQgaW4gdGhlIHNtYWxsIGNhbGVuZGFyLiBZ b3UgY2FuIGFkZCB0aGVtIHlvdXJzZWxmIGlmIHlvdSB3aXNoIGJlY2F1c2UgeW91IGNhbiB1 c2UgdGhlIHNhbWUgZm9ybS9jb250YWluZXIgbWVjaGFuaXNtIGFzIHRoZSBsYXJnZSBjYWxl bmRhcjwvbGk+CgkJPGxpPlRoZSBvbmx5IHRoaW5nIHJlbmRlcmVkIGluIGEgc21hbGwgY2Fs ZW5kYXIgY2VsbCBpcyB0aGUgaHlwZXJsaW5rZWQgZGF0ZSBhbmQgYW55IDxhIGhyZWY9IiNu YW1pbmciPmZsYWdzPC9hPiBzbyB5b3UgY2FuIHN0eWxlIHRoZSBib3hlczwvbGk+CgkJPGxp Pjxjb2RlPmNsYXNzbGV2ZWxzPC9jb2RlPiBhcmUgaWdub3JlZDogZXZlcnl0aGluZyBpcyBh dXRvbWF0aWNhbGx5IGFzc2lnbmVkIGF0IHRoZSBjZWxsIGxldmVsIChpLmUuIDxjb2RlPmNl bGxwbHVzPC9jb2RlPiBpcyBzZXQpPC9saT4KCQk8bGk+PGNvZGU+ZXZlbnRjbGFzc2VzPC9j b2RlPiBhcmUgc3RpbGwgaG9ub3VyZWQgaWYgeW91IHdpc2ggdG8gdXNlIGEgPGNvZGU+Zm9y bTwvY29kZT4gdG8gcHJvY2VzcyB0aGVtIHlvdXJzZWxmPC9saT4KCQk8bGk+VGhlIHNtYWxs IGNhbGVuZGFyIG91dHB1dHMgeWVhci1tb250aC1kYXktdGl0bGUgb3IgbWVzc3kgcGVybWxp bmtzIG9ubHk8L2xpPgoJPC91bD4KCgk8cD5Bc2lkZSBmcm9tIHRoYXQgdGhleSYjODIxNzty ZSBwcmV0dHkgbXVjaCBpZGVudGljYWwuPC9wPgoKCTxoMiBpZD0iaWZjYWwiPlRhZzogPGNv ZGU+Jmx0O3R4cDpzbWRfaWZfY2FsJmd0OzwvY29kZT48L2gyPgoKCTxwPlRoaXMgY29uZGl0 aW9uYWwgdGFnIGFsbG93cyB5b3UgJiM4MjEyOyBpbnNpZGUgeW91ciBjb250YWluZXIvZm9y bXMgICYjODIxMjsgdG8gdGVzdCBjZXJ0YWluIGNvbmRpdGlvbnMgb2YgdGhlIGN1cnJlbnQg ZXZlbnQvY2VsbC4gRm9yIGVuaGFuY2VkIGNvbmRpdGlvbmFsIGNoZWNraW5nIChwZXJoYXBz IGluIGNvbmp1bmN0aW9uIHdpdGggPGEgaHJlZj0iI2NhbG5vdyI+c21kX2NhbF9ub3c8L2E+ KSwgY29uc2lkZXIgdGhlIHNtZF9pZiBwbHVnaW4uPC9wPgoKCTxoMyBjbGFzcz0iYXR0cyAi IGlkPSJhdHRzaWZjYWwiPkF0dHJpYnV0ZXM8L2gzPgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPmZsYWc8L3NwYW4+IDogdGhlIGNlbGwgb3IgZXZlbnQgZmxhZyhzKSB5b3Ug d2FudCB0byB0ZXN0LCBlYWNoIHNlcGFyYXRlZCBieSBhIGNvbW1hLiBDaG9vc2UgZnJvbTog PGNvZGU+ZXZlbnQ8L2NvZGU+LCA8Y29kZT5zdGFuZGFyZDwvY29kZT4sIDxjb2RlPnJlY3Vy Zmlyc3Q8L2NvZGU+LCA8Y29kZT5yZWN1cjwvY29kZT4sIDxjb2RlPm11bHRpZmlyc3Q8L2Nv ZGU+LCA8Y29kZT5tdWx0aWxhc3Q8L2NvZGU+LCA8Y29kZT5tdWx0aTwvY29kZT4sIDxjb2Rl Pm11bHRpcHJldjwvY29kZT4sIDxjb2RlPmNhbmNlbDwvY29kZT4sIDxjb2RlPm9taXQ8L2Nv ZGU+LCA8Y29kZT5leHRyYTwvY29kZT4sIDxjb2RlPmhvbHM8L2NvZGU+LCA8Y29kZT50b2Rh eTwvY29kZT4sIG9yIHRoZSBzcGVjaWFsIGZsYWcgPGNvZGU+U01EX0FOWTwvY29kZT4gd2hp Y2ggd2lsbCB0cmlnZ2VyIGlmIHRoZSBjZWxsIG9yIGV2ZW50IGNvbnRhaW5zIGFueSBvZiB0 aGUgYWJvdmUuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0i PmNhbGlkPC9zcGFuPiA6IHRoZSBjYWxlbmRhciBJRCB5b3Ugd2lzaCB0byBjaGVjayBmb3Ig YSBtYXRjaC4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ eWVhcjwvc3Bhbj4gOiB0aGUgeWVhciB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pc295ZWFyPC9zcGFu PiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SVNPPC9zcGFuPiB5ZWFyIHRoZSBjdXJyZW50 IGNlbGwgZmFsbHMgaW4uIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPm1vbnRoPC9zcGFuPiA6IHRoZSBtb250aCBudW1iZXIgKDEtMTIpIHRoYXQgdGhl IGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+d2Vlazwvc3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPklT Tzwvc3Bhbj4gd2VlayBudW1iZXIgdGhhdCB0aGUgY3VycmVudCBjZWxsIGZhbGxzIGluLiBE ZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kYXk8L3NwYW4+ IDogdGhlIGRheSBudW1iZXIgdGhlIGN1cnJlbnQgY2VsbCBmYWxscyBpbi4gRGVmYXVsdDog dW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bG9naWM8L3NwYW4+IDogd2hl dGhlciB5b3Ugd2FudCB0byBjaGVjayBpZiA8ZW0+YWxsPC9lbT4gdGVzdHMgeW91IG5vbWlu YXRlZCBhcmUgdHJ1ZSBpbiB0aGUgY3VycmVudCBjZWxsICg8Y29kZT5sb2dpYz0mcXVvdDth bmQmcXVvdDs8L2NvZGU+KSBvciA8ZW0+YXQgbGVhc3Qgb25lPC9lbT4gb2YgdGhlIHRlc3Rz IGlzIHRydWUgKDxjb2RlPmxvZ2ljPSZxdW90O29yJnF1b3Q7PC9jb2RlPikuIERlZmF1bHQ6 IDxjb2RlPm9yPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxwPiYjODIxNjtBbmQmIzgyMTc7IGxv Z2ljIGlzIGdvb2QgZm9yIGNoZWNraW5nIGlmIHRoZSBjZWxsIGlzIG9mIGEgY2VydGFpbiB0 eXBlIDxzcGFuIGNsYXNzPSJjYXBzIj5BTkQ8L3NwYW4+IGlzIGxhdGVyIHRoYW4gdGhlIDE1 dGggb2YgdGhlIG1vbnRoLCBmb3IgZXhhbXBsZS48L3A+CgoJPHA+UnVkaW1lbnRhcnkgY29t cGFyYXRvcnMgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIDxjb2RlPihpc28peWVhcjwvY29kZT4s IDxjb2RlPm1vbnRoPC9jb2RlPiwgPGNvZGU+d2VlazwvY29kZT4gYW5kIDxjb2RlPmRheTwv Y29kZT4gYXR0cmlidXRlcy4gTm9ybWFsbHkgdGhlIHZhbHVlIHlvdSBzdXBwbHkgd2lsbCBi ZSB0ZXN0ZWQgZm9yIGFuIGV4YWN0IG1hdGNoIGJ1dCBpZiB5b3UgcHJlZml4IGl0IHdpdGgg b25lIG9mIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIHNlcXVlbmNlcyB0aGVuIHRoZSBiZWhh dmlvdXIgY2hhbmdlczo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT4mZ3Q7PC9jb2RlPiB0ZXN0 cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPmdyZWF0ZXIgdGhhbjwvZW0+IHRoZSBnaXZlbiB2YWx1 ZSAoZS5nLiA8Y29kZT55ZWFyPSZxdW90OyZndDsyMDA4JnF1b3Q7PC9jb2RlPik8L2xpPgoJ CTxsaT48Y29kZT4mZ3Q7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlzIDxlbT5ncmVh dGVyIHRoYW4gb3IgZXF1YWwgdG88L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNvZGU+ bW9udGg9JnF1b3Q7Jmd0Oz03JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT4mbHQ7 PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPmxlc3MgdGhhbjwvZW0+IHRoZSBn aXZlbiB2YWx1ZSAoZS5nLiA8Y29kZT5kYXk9JnF1b3Q7Jmx0OzE1JnF1b3Q7PC9jb2RlPik8 L2xpPgoJCTxsaT48Y29kZT4mbHQ7PTwvY29kZT4gdGVzdHMgaWYgYXR0cmlidXRlIGlzIDxl bT5sZXNzIHRoYW4gb3IgZXF1YWwgdG88L2VtPiB0aGUgZ2l2ZW4gdmFsdWUgKGUuZy4gPGNv ZGU+bW9udGg9JnF1b3Q7Jmx0Oz01JnF1b3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT4h PC9jb2RlPiB0ZXN0cyBpZiBhdHRyaWJ1dGUgaXMgPGVtPm5vdDwvZW0+IHRoZSBnaXZlbiB2 YWx1ZSAoZS5nLiA8Y29kZT5kYXk9JnF1b3Q7ITE1JnF1b3Q7PC9jb2RlPik8L2xpPgoJPC91 bD4KCgk8aDIgaWQ9ImNhbGluZm8iPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8g LyZndDs8L2NvZGU+PC9oMj4KCgk8cD5JbnNpZGUgeW91ciBjb250YWluZXIvZm9ybXMsIHVz ZSB0aGlzIHRhZyB0byBvdXRwdXQgY2VydGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3Vy cmVudCBldmVudC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxpbmZvIj5B dHRyaWJ1dGVzPC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50eXBlPC9z cGFuPiA6IHRoZSB0eXBlKHMpIG9mIGluZm9ybWF0aW9uIHlvdSB3YW50IHRvIHJldHVybiwg ZWFjaCBzZXBhcmF0ZWQgYnkgYSBjb21tYS4gQ2hvb3NlIGZyb206IDxjb2RlPmZsYWc8L2Nv ZGU+LCA8Y29kZT5jYWxpZDwvY29kZT4sIDxjb2RlPihpc28peWVhcjwvY29kZT4gLyA8Y29k ZT5tb250aDwvY29kZT4gLyA8Y29kZT53ZWVrPC9jb2RlPiAvIDxjb2RlPmRheTwvY29kZT4s IDxjb2RlPnM8L2NvZGU+IChjdXJyZW50IHNlY3Rpb24pIC8gPGNvZGU+Y2F0ZWdvcnk8L2Nv ZGU+IC8gPGNvZGU+YXV0aG9yPC9jb2RlPiAob3IgPGNvZGU+cmVhbG5hbWU8L2NvZGU+KSwg PGNvZGU+YXJ0aWNsZTwvY29kZT4gKGlkIG9mIHRoZSBjdXJyZW50bHkgdmlld2VkIGFydGlj bGUpLCBvciBhbnkgb3RoZXIgYXJ0aWNsZSB2YXJpYWJsZSBzdWNoIGFzIDxjb2RlPnNlY3Rp b248L2NvZGU+ICh0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3Mgc2VjdGlvbiksIDxjb2Rl PmF1dGhvcmlkPC9jb2RlPiwgPGNvZGU+YXJ0aWNsZV9pbWFnZTwvY29kZT4sIGV0YzxkaXYg Y2xhc3M9ImJyZWFrIj5JZiB1c2luZyB0aGUgPGNvZGU+aHRtbDwvY29kZT4gYXR0cmlidXRl LCB5b3UgbWF5IG9wdGlvbmFsbHkgc3BlY2lmeSB0aGUgbmFtZSB5b3Ugd2FudCB0aGUgdmFy aWFibGUgdG8gYXBwZWFyIGFzIGluIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBzdHJpbmcuIFRoZSB2YXJpYWJsZXMgYWxsIHRha2Ugb24gc2Vuc2libGUgZGVmYXVsdHMg KGUuZy4gJiM4MjE2O3NlY3Rpb24mIzgyMTc7IGJlY29tZXMgPGNvZGU+P3M9Jmx0O3NlY3Rp b24gbmFtZSZndDs8L2NvZGU+LCAmIzgyMTY7Y2F0ZWdvcnkxJiM4MjE3OyBiZWNvbWVzIDxj b2RlPj9jPSZsdDtjYXRlZ29yeTEgbmFtZSZndDs8L2NvZGU+LCBldGMpIGJ1dCBpZiwgc2F5 LCB5b3Ugd2FudGVkIGNhdGVnb3J5MSB0byBiZSBrbm93biBhcyA8Y29kZT50aGVfY2F0PC9j b2RlPiB5b3UgY291bGQgd3JpdGUgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2luZm8gdHlwZT0m cXVvdDtjYXRnZW9yeTp0aGVfY2F0JnF1b3Q7IGh0bWw9JnF1b3Q7MSZxdW90OyAvJmd0Ozwv Y29kZT4uIFlvdSB3b3VsZCB0aGVuIHNlZSA8Y29kZT4/dGhlX2NhdD0mbHQ7Y2F0ZWdvcnkx IG5hbWUmZ3Q7PC9jb2RlPjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5q b2luPC9zcGFuPiA6IHRoZSBjaGFyYWN0ZXJzIHlvdSB3YW50IHRvIHVzZSB0byBzZXBhcmF0 ZSBlYWNoIGl0ZW0geW91IGFza2VkIGZvci4gTm90ZSBpdCBpcyB0aGUgY2hhcmFjdGVycyA8 ZW0+YmV0d2VlbjwvZW0+IGVhY2ggaXRlbSBzbyB0aGUgdmVyeSBmaXJzdCBlbnRyeSB3aWxs IDxzdHJvbmc+bm90PC9zdHJvbmc+IGhhdmUgdGhlIDxjb2RlPmpvaW48L2NvZGU+IGluIGZy b250IG9mIGl0IChzZWUgPGNvZGU+am9pbl9wcmVmaXg8L2NvZGU+KS4gRGVmYXVsdDogYSBz cGFjZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5qb2luX3ByZWZpeDwvc3Bhbj4g OiB0aGUgc3RyaW5nIHlvdSB3YW50IHRvIHB1dCBpbiBmcm9udCBvZiB0aGUgZmlyc3QgaXRl bSBpbiB0aGUgcmV0dXJuZWQgbGlzdC4gSWYgeW91IGRvIG5vdCBzcGVjaWZ5IHRoaXMgYXR0 cmlidXRlIGl0IGRlZmF1bHRzIHRvIDxjb2RlPlNNRF9BVVRPPC9jb2RlPiB3aGljaCB0cmll cyB0byBiZSBjbGV2ZXI6Cgk8dWw+CgkJPGxpPmlmIHVzaW5nIDxjb2RlPnR5cGU9JnF1b3Q7 ZmxhZyZxdW90OzwvY29kZT4gdGhlIGpvaW5fcHJlZml4IGlzIHNldCB0byB0aGUgc2FtZSBh cyA8Y29kZT5qb2luPC9jb2RlPi4gVGh1cyB3aXRoIDxjb2RlPmpvaW49JnF1b3Q7IGNhbF8m cXVvdDs8L2NvZGU+IHlvdSBtaWdodCBnZXQgPGNvZGU+IGNhbF9tdWx0aSBjYWxfdG9kYXkg Y2FsX2hvbHM8L2NvZGU+PC9saT4KCQk8bGk+aWYgdXNpbmcgPGNvZGU+aHRtbD0mcXVvdDsx JnF1b3Q7PC9jb2RlPiB0aGUgam9pbl9wcmVmaXggaXMgc2V0IHRvIGEgcXVlc3Rpb24gbWFy aywgdGh1czogPGNvZGU+dHlwZT0mcXVvdDttb250aCx5ZWFyLGNhdGVnb3J5JnF1b3Q7IGh0 bWw9JnF1b3Q7MSZxdW90OzwvY29kZT4gbWlnaHQgcmVuZGVyIDxjb2RlPj9tPTEyJmFtcDt5 PTIwMDgmYW1wO2M9Z2lnczwvY29kZT4sIHdoaWNoIGNhbiBiZSBwdXQgc3RyYWlnaHQgb24g dGhlIGVuZCBvZiBhbiBhbmNob3I8L2xpPgoJPC91bD48L2xpPgoJCTxsaT48c3BhbiBjbGFz cz0iYXRubSI+aHRtbDwvc3Bhbj4gOiBJZiBzZXQgdG8gPGNvZGU+MTwvY29kZT4sIHJldHVy bnMgbm90IG9ubHkgdGhlIHZhbHVlcyB5b3Ugc3BlY2lmaWVkIGJ1dCB0aGVpciA8c3BhbiBj bGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBuYW1lcyBhcyB3ZWxsLCBnaXZpbmcg eW91IHRoZSBlbnRpcmUgc3RyaW5nIGFzIGEgdmFsaWQgc2V0IG9mIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IHBhcmFtZXRlcnMgd2hpY2ggY2FuIGJlIGFkZGVkIHRvIGFuIGFu Y2hvci4gSXQgb3ZlcnJpZGVzIHRoZSA8Y29kZT5qb2luPC9jb2RlPiBhdHRyaWJ1dGUgYW5k IHNldHMgaXQgdG8gYW4gYW1wZXJzYW5kLiBEZWZhdWx0OiA8Y29kZT4wPC9jb2RlPi48ZGl2 IGNsYXNzPSJicmVhayI+VGhpcyBhdHRyaWJ1dGUgaXMgdXNlZnVsIGlmIHlvdSBhcmUgYnVp bGRpbmcgeW91ciBvd24gY29udGVudCBpbnNpZGUgZWFjaCBjZWxsIHZpYSBhIDxjb2RlPmZv cm08L2NvZGU+IGFuZCB3aXNoIHRvIG1haW50YWluIHRoZSBjdXJyZW50IHNlYXJjaCBlbnZp cm9ubWVudC4gSWYgeW91IGFsbG93IHBlb3BsZSB0byBmaWx0ZXIgZXZlbnRzIGJ5IGNhdGVn b3J5IG9yIGF1dGhvciB5b3UgY2FuIHVzZSB0aGlzIHRvIHJldHVybiB0aGUgJiM4MjE2O2N1 cnJlbnQmIzgyMTc7IHN0YXRlIG9mIGNlcnRhaW4gdmFyaWFibGVzIHNvIHlvdSBjYW4gcGFz cyB0aGVtIHRvIHRoZSBuZXh0IHBhZ2UgYW5kIG1haW50YWluIHN0YXRlPC9kaXY+PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmVzY2FwZTwvc3Bhbj4gOiBlc2NhcGUgPHNwYW4g Y2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGVudGl0aWVzIHN1Y2ggYXMgPGNvZGU+Jmx0Ozwv Y29kZT4sIDxjb2RlPiZndDs8L2NvZGU+IGFuZCA8Y29kZT4mYW1wOzwvY29kZT4gZm9yIHBh Z2UgdmFsaWRhdGlvbiBwdXJwb3Nlcy4gU2V0IHRvIDxjb2RlPmVzY2FwZT0mcXVvdDsmcXVv dDs8L2NvZGU+IHRvIHR1cm4gaXQgb2ZmLiBEZWZhdWx0OiA8Y29kZT5odG1sPC9jb2RlPjwv bGk+Cgk8L3VsPgoKCTxoMiBpZD0iY2FsY2xhc3MiPlRhZzogPGNvZGU+Jmx0O3R4cDpzbWRf Y2FsX2NsYXNzIC8mZ3Q7PC9jb2RlPjwvaDI+CgoJPHA+SW5zaWRlIHlvdXIgY29udGFpbmVy L2Zvcm1zLCB1c2UgdGhpcyB0YWcgdG8gYWRkIGEgbGlzdCBvZiBjbGFzc2VzIHRvIHRoZSBj dXJyZW50IGNlbGwvZXZlbnQuIFZlcnkgdXNlZnVsIGlmIGJ1aWxkaW5nIGNlbGxzIHlvdXJz ZWxmIGJlY2F1c2UgaW5zaWRlIGEgPGEgaHJlZj0iI2lmY2FsIj5jb25kaXRpb25hbDwvYT4g dGFnIHlvdSBjb3VsZCBhZGQgcGFydGljdWxhciBjbGFzcyBuYW1lcyBiYXNlZCBvbiBzb21l IHZhbHVlIGluIGEgY2VsbC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9ImF0dHNjYWxj bGFzcyI+QXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ bmFtZTwvc3Bhbj4gOiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNsYXNzbmFtZXMgdG8g YWRkIHRvIHRoZSBjdXJyZW50IGNlbGwvZXZlbnQuIFRoZXNlIGFyZSA8c3Ryb25nPm5vdDwv c3Ryb25nPiBzdWJqZWN0IHRvIGFueSA8Y29kZT5jbGFzc3ByZWZpeGVzPC9jb2RlPiBzbyB3 aWxsIGFsd2F5cyBhcHBlYXIgZXhhY3RseSBhcyB5b3Ugd3JpdGUgdGhlbTwvbGk+Cgk8L3Vs PgoKCTxoMiBpZD0iY2Fsbm93Ij5UYWc6IDxjb2RlPiZsdDt0eHA6c21kX2NhbF9ub3cgLyZn dDs8L2NvZGU+PC9oMj4KCgk8cD5SZXR1cm4gdGhlIGN1cnJlbnQgZGF0ZS90aW1lLCBmb3Jt YXR0ZWQgaG93ZXZlciB5b3UgcGxlYXNlLiBVc2VmdWwgZm9yIGV4dHJhY3RpbmcgcGFydHMg b2YgdGhlIGN1cnJlbnQgc3lzdGVtIHRpbWVzdGFtcCB0byBjb21wYXJlIHRoaW5ncyB2aWEg b3RoZXIgY29uZGl0aW9uYWwgcGx1Z2lucyBvciB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfaWZf Y2FsJmd0OzwvY29kZT4gdGFnLjwvcD4KCgk8aDMgY2xhc3M9ImF0dHMgIiBpZD0iYXR0c2Nh bG5vdyI+QXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ Zm9ybWF0PC9zcGFuPiA6IHRoZSB3YXkgeW91IHdhbnQgdGhlIGRhdGUvdGltZSByZXByZXNl bnRlZC4gVXNlIGFueSB2YWxpZCA8YSBocmVmPSJodHRwOi8vdWsyLnBocC5uZXQvc3RyZnRp bWUiPnN0cmZ0aW1lKCk8L2E+IHN0cmluZy4gRGVmYXVsdHMgdG8gdGhlIGRhdGUgZm9ybWF0 IHlvdSBzZXQgaW4gQmFzaWMgUHJlZnM8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ bm93PC9zcGFuPiA6IGlmIHlvdSBkb24mIzgyMTc7dCB3YW50IHRoZSB0aW1lIHRvIGJlLCB1 bW0sICYjODIxNjtub3cmIzgyMTc7IHlvdSBjYW4gc3RhdGUgd2hhdCB0aW1lICYjODIxNjtu b3cmIzgyMTc7IGlzISBVc2UgYW55IHN0YW5kYXJkIGRhdGUvdGltZSBmb3JtYXQuICBEZWZh dWx0OiB0aGUgdGltZSBhdCB3aGljaCB5b3UgY2FsbCB0aGUgdGFnLjxkaXYgY2xhc3M9ImJy ZWFrIj5Zb3UgbWF5IGFsc28gdXNlIHRoZSBjb2RlcyA8Y29kZT4/ZGF5PC9jb2RlPiwgPGNv ZGU+P21vbnRoPC9jb2RlPiBvciA8Y29kZT4/eWVhcjwvY29kZT4gaW4geW91ciB0aW1lIHN0 cmluZyB3aGljaCB3aWxsIGRvIG9uZSBvZiB0d28gdGhpbmdzOgoJPHVsPgoJCTxsaT5yZXBs YWNlIHRoZSBjb2RlcyB3aXRoIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBw YXJhbWV0ZXJzIDxjb2RlPmQ9PC9jb2RlPiwgPGNvZGU+bT08L2NvZGU+IG9yIDxjb2RlPnk9 PC9jb2RlPiwgaWYgdGhleSBhcmUgYmVpbmcgdXNlZDwvbGk+CgkJPGxpPnVzZSB0aGUgY3Vy cmVudCBkYXksIG1vbnRoIG9yIHllYXIgKGkuZS4gdGhlIHBhcnRzIG9mIHRvZGF5JiM4MjE3 O3MgZGF0ZSk8YnIgLz4KPC9kaXY+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPm9mZnNldDwvc3Bhbj4gOiBhbiBvZmZzZXQgaW50byB0aGUgZnV0dXJlIHRo YXQgeW91IHdpc2ggdG8gYXBwbHkgdG8gPGNvZGU+bm93PC9jb2RlPi4gZS5nLiA8Y29kZT4y IG1vbnRoczwvY29kZT4uIFNlZSA8YSBocmVmPSIjZWc2Ij5FeGFtcGxlIDY8L2E+IGZvciBh IHByYWN0aWNhbCBhcHBsaWNhdGlvbiBvZiB0aGlzIGF0dHJpYnV0ZTwvbGk+CgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5nbXQ8L3NwYW4+IDogcmV0dXJuIGVpdGhlciBsb2NhbCB0aW1l ICg8Y29kZT4wPC9jb2RlPikgYWNjb3JkaW5nIHRvIHRoZSB0aW1lIHpvbmUgc2V0IGluIEJh c2ljIFByZWZzLCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiB0aW1lICg8Y29k ZT4xPC9jb2RlPikuIERlZmF1bHQ6IDxjb2RlPjA8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmxhbmc8L3NwYW4+IDogYW4gPHNwYW4gY2xhc3M9ImNhcHMiPklTTzwv c3Bhbj4gbGFuZ3VhZ2UgY29kZSB0aGF0IGZvcm1hdHMgdGltZSBzdHJpbmdzIHN1aXRhYmxl IGZvciB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIChvciBsb2NhbGUpIGFzIGRlZmluZWQgYnkg PGEgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fNjM5Ij48c3BhbiBj bGFzcz0iY2FwcyI+SVNPPC9zcGFuPiA2Mzk8L2E+LiBEZWZhdWx0OiB1bnNldCAoaS5lLiB1 c2UgdGhlIHZhbHVlIGFzIHN0YXRlZCBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBwcmVmcyk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImFydGV2Ij5UYWc6IDxjb2RlPiZsdDt0 eHA6c21kX2FydGljbGVfZXZlbnQgLyZndDs8L2NvZGU+PC9oMj4KCgk8cD5XaGVuIHlvdSBj cmVhdGUgZXZlbnRzLCB0aGV5IHJlYWxseSBvbmx5IGV4aXN0IG9uY2UgYXMgYSBzaW5nbGUg YXJ0aWNsZTsgdGhlIHJlcGV0aXRpb24gaXMgYSB0cmljay4gVGh1cyB0aGUgYnVpbHQtaW4g YXJ0aWNsZSB0YWdzIG9ubHkgc2hvdyB0aGUgc2luZ2xlLCByZWFsIGFydGljbGVzLjwvcD4K Cgk8cD5UaGlzIHRhZyAmIzgyMTI7IHNpbWlsYXIgaW4gZnVuY3Rpb24gdG8gPGNvZGU+Jmx0 O3R4cDphcnRpY2xlX2N1c3RvbSAvJmd0OzwvY29kZT4gJiM4MjEyOyBhbGxvd3MgeW91IHRv IHNlZSByZWN1cnJpbmcgYXJ0aWNsZXMgYXMgaWYgdGhleSB3ZXJlICYjODIxNjtyZWFsJiM4 MjE3OyBhcnRpY2xlcyBpbiB0aGUgZGF0YWJhc2UuIEluc2lkZSB0aGUgdGFnJiM4MjE3O3Mg PGNvZGU+Zm9ybTwvY29kZT4gb3IgY29udGFpbmVyIHlvdSBjYW4gdXNlIGFsbCBleGlzdGlu ZyBhcnRpY2xlIHRhZ3MgdG8gZGlzcGxheSBhbnkgaW5mb3JtYXRpb24geW91IGxpa2UgYWJv dXQgZWFjaCAmIzgyMTY7dmlydHVhbCYjODIxNzsgYXJ0aWNsZS48L3A+CgoJPGgzIGNsYXNz PSJhdHRzICIgaWQ9ImF0dHNhcnRldiI+QXR0cmlidXRlczwvaDM+CgoJPHVsPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+c3RlcGZpZWxkPC9zcGFuPiA6IHNhbWUgYXMgaW4gPGEgaHJl Zj0iI3NtZGNhbCI+c21kX2NhbGVuZGFyPC9hPiwgdGhlIElEIG9mIHRoZSBmaWVsZCB0aGF0 IGNvbnRhaW5zIGV2ZW50IHJlcGV0aXRpb25zLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5za2lwZmllbGQ8L3NwYW4+IDogc2FtZSBhcyBpbiA8YSBo cmVmPSIjc21kY2FsIj5zbWRfY2FsZW5kYXI8L2E+LCB0aGUgSUQgb2YgdGhlIGZpZWxkIHRo YXQgY29udGFpbnMgdGhlIGxpc3Qgb2YgZXZlbnQgY2FuY2VsbGF0aW9uIGRhdGVzLiBEZWZh dWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbWl0ZmllbGQ8L3Nw YW4+IDogc2FtZSBhcyBpbiA8YSBocmVmPSIjc21kY2FsIj5zbWRfY2FsZW5kYXI8L2E+LCB0 aGUgSUQgb2YgdGhlIGZpZWxkIHRoYXQgY29udGFpbnMgdGhlIGxpc3Qgb2YgZXZlbnQgb21p c3Npb24gZGF0ZXMuIERlZmF1bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmV4dHJhZmllbGQ8L3NwYW4+IDogc2FtZSBhcyBpbiA8YSBocmVmPSIjc21kY2FsIj5z bWRfY2FsZW5kYXI8L2E+LCB0aGUgSUQgb2YgdGhlIGZpZWxkIHRoYXQgY29udGFpbnMgdGhl IGxpc3Qgb2YgYWRkaXRpb25hbCBkYXRlcy4gRGVmYXVsdDogdW5zZXQ8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+dHlwZTwvc3Bhbj4gOiB0aGUgdHlwZXMgb2YgZXZlbnQgdG8g ZGlzcGxheS4gQ2hvb3NlIGZyb20gPGNvZGU+c3RhbmRhcmQ8L2NvZGU+LCA8Y29kZT5yZWN1 cjwvY29kZT4gb3IgPGNvZGU+bXVsdGk8L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5zdGFuZGFy ZCwgcmVjdXIsIG11bHRpPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5z ZWN0aW9uPC9zcGFuPiA6IHJlc3RyaWN0IHRoZSBldmVudHMgdG8gYSBsaXN0IG9mIHNlY3Rp b25zLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jYXRl Z29yeTwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEgbGlzdCBvZiBjYXRlZ29y aWVzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5hdXRo b3I8L3NwYW4+IDogcmVzdHJpY3QgdGhlIGV2ZW50cyB0byBhIGxpc3Qgb2YgYXV0aG9yIGxv Z2luIG5hbWVzLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij5yZWFsbmFtZTwvc3Bhbj4gOiByZXN0cmljdCB0aGUgZXZlbnRzIHRvIGEgbGlzdCBvZiBh dXRob3IgUmVhbCBOYW1lcyAobm90ZTogYWRkcyBvbmUgZXh0cmEgcXVlcnkpLiBEZWZhdWx0 OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5pZDwvc3Bhbj4gOiByZXN0 cmljdCB0aGUgZXZlbnRzIHRvIGEgbGlzdCBvZiBhcnRpY2xlIElEcy4gRGVmYXVsdDogdW5z ZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+c3RhdHVzPC9zcGFuPiA6IHJlc3Ry aWN0IHRoZSBldmVudHMgdG8gdGhpcyBsaXN0IG9mIGFydGljbGUgc3RhdHVzLiBEZWZhdWx0 OiA8Y29kZT5saXZlPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5leHBp cmVkPC9zcGFuPiA6IGRlZmluaXRpdmVseSBoaWRlICg8Y29kZT4wPC9jb2RlPikgb3Igc2hv dyAoPGNvZGU+MTwvY29kZT4pIGV4cGlyZWQgZXZlbnRzLiBMZWF2ZSBibGFuayB0byB1c2Ug dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkdmFuY2VkIFByZWZlcmVuY2Ug PGNvZGU+UHVibGlzaCBleHBpcmVkIGFydGljbGVzPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj50aW1lPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgaW4gdGhpcyB0 aW1lIGZyYW1lLiBDaG9vc2UgZnJvbSA8Y29kZT5hbnk8L2NvZGU+LCA8Y29kZT5mdXR1cmU8 L2NvZGU+IG9yIDxjb2RlPnBhc3Q8L2NvZGU+LiBEZWZhdWx0OiA8Y29kZT5hbnk8L2NvZGU+ PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm1vbnRoPC9zcGFuPiA6IG9ubHkgc2hv dyBldmVudHMgdGhhdCBvY2N1ciBpbiB0aGUgZ2l2ZW4gPHNwYW4gY2xhc3M9ImNhcHMiPllZ WVk8L3NwYW4+LW1tLiBEZWZhdWx0OiB1bnNldDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5mcm9tPC9zcGFuPiA6IG9ubHkgc2hvdyBldmVudHMgZnJvbSB0aGlzIHN0YXJ0IGRh dGUuIENhbiBiZSBhbnkgdmFsaWQgZGF0ZSBmb3JtYXQuIERlZmF1bHQ6IHVuc2V0IChpLmUu IGFsbCBkYXRlcyk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dG88L3NwYW4+IDog b25seSBzaG93IGV2ZW50cyB1cCB0byB0aGlzIGVuZCBkYXRlLiBDYW4gYmUgYW55IHZhbGlk IGRhdGUgZm9ybWF0LiBEZWZhdWx0OiB1bnNldCAoaS5lLiBhbGwgZGF0ZXMpPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3NwYW4+IDogb3JkZXIgdGhlIGV2ZW50cyBi eSB0aGlzIGNvbHVtbi4gVGhlIG1vc3QgdXNlZnVsIHZhbHVlIGlzIHRoZSBkZWZhdWx0OiA8 Y29kZT5Qb3N0ZWQgYXNjPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5m b3JtPC9zcGFuPiA6IHBhc3MgZWFjaCBtYXRjaGluZyBldmVudCB0byB0aGUgZ2l2ZW4gPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybS4gRGVmYXVsdDogdW5zZXQuIE5vdGUg dGhhdCB1c2luZyB0aGUgY29udGFpbmVyIG92ZXJyaWRlcyB0aGlzIGF0dHJpYnV0ZSwgYW5k IGlmIHlvdSBzcGVjaWZ5IG5laXRoZXIgYSBmb3JtIG5vciBjb250YWluZXIsIHlvdSB3aWxs IHNlZSBhIGxpc3Qgb2YgYXJ0aWNsZSBwb3N0ZWQgZGF0ZXM8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+b2Zmc2V0PC9zcGFuPiA6IHVubGlrZSBhcnRpY2xlX2N1c3RvbSwgZXZl bnRzIGZyb20gdGhlIHNtZF9hcnRpY2xlX2V2ZW50IHRhZyBtYXkgYmUgcGFnZWQgdXNpbmcg PGNvZGU+Jmx0O3R4cDpvbGRlciAvJmd0OzwvY29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6bmV3 ZXIgLyZndDs8L2NvZGU+LiBZb3UgbWF5IHNwZWNpZnkgYSBmaXhlZCBvZmZzZXQgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIGxpc3Qgb2YgZXZlbnRzIGlmIHlvdSB3aXNoLiBEZWZhdWx0OiA8 Y29kZT4wPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bh bj4gOiBvbmx5IHNob3cgdGhpcyBtYW55IGV2ZW50cyBtYXhpbXVtIDxzdHJvbmc+cGVyIHBh Z2U8L3N0cm9uZz4sIGkuZS4gdGhlIG51bWJlciBvZiBldmVudHMgdG8gZGlzcGxheSwgd2hl dGhlciB0aGV5IGNvbWUgZnJvbSBvbmUgJiM4MjE2O3JlYWwmIzgyMTc7IGFydGljbGUgb3Ig bWFueS4gRGVmYXVsdDogPGNvZGU+MTA8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmV2ZW50bGltaXQ8L3NwYW4+IDogb25seSBzaG93IHRoaXMgbWFueSBldmVudHMg bWF4aW11bSwgPHN0cm9uZz5wZXIgZXZlbnQ8L3N0cm9uZz4uIFNvIGlmIHlvdSBoYXZlIGEg d2Vla2x5IHJlcGVhdGVkIGV2ZW50IHRoYXQgbGFzdHMgZm9yIGZvdXIgbW9udGhzIGFuZCB5 b3Ugc2V0IDxjb2RlPmV2ZW50bGltaXQ9JnF1b3Q7NiZxdW90OzwvY29kZT4geW91IHdpbGwg b25seSBzZWUgYSBtYXhpbXVtIG9mIDYgZXZlbnRzIGZyb20gZXZlcnkgYXJ0aWNsZSBjb250 YWluaW5nIHJlcGV0aXRpb24uIFRoZSByYW5nZSAoc3RhcnQgYW5kIGVuZCBkYXRlKSBpcyBk ZXRlcm1pbmVkIGJ5IG90aGVyIHBsdWdpbiBhdHRyaWJ1dGVzLiBEZWZhdWx0OiA8Y29kZT4x MDwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZWJ5PC9zcGFuPiA6 IGVzb3RlcmljIHBhZ2luZyBmZWF0dXJlLCBpZGVudGljYWwgdG8gPGNvZGU+Jmx0O3R4cDph cnRpY2xlIC8mZ3Q7PC9jb2RlPi4gRGVmYXVsdDogc2FtZSBhcyA8Y29kZT5saW1pdDwvY29k ZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGdvbmx5PC9zcGFuPiA6IHNldCB0 byA8Y29kZT4xPC9jb2RlPiB0byBwZXJmb3JtIHRoZSBwYWdpbmcgYWN0aW9uIHdpdGhvdXQg ZGlzcGxheWluZyBhbnl0aGluZy4gUHJvYmFibHkgdXNlbGVzcy4gRGVmYXVsdDogdW5zZXQ8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgp SFRNTCB0YWcgKHdpdGhvdXQgYnJhY2tldHMpIHRvIHdyYXAgdGhlIGxpc3QgaW4uIERlZmF1 bHQ6IHVuc2V0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6 IHRoZSAoWClIVE1MIHRhZyB0byBzZXBhcmF0ZSBlYWNoIGl0ZW0gd2l0aC4gRGVmYXVsdDog dW5zZXQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3 cmFwdGFnLiBEZWZhdWx0OiB1bnNldDwvbGk+Cgk8L3VsPgoKCTxwPkl0IGlzIHdvcnRoIG5v dGluZyB0aGF0IHRoaXMgdGFnIGV4ZWN1dGVzIGluIDMtcGhhc2VzOjwvcD4KCgk8b2w+CgkJ PGxpPlByZS1maWx0ZXI6IGFsbCBldmVudHMgdGhhdCBtYXRjaCA8Y29kZT50eXBlPC9jb2Rl PiwgPGNvZGU+Y2F0ZWdvcnk8L2NvZGU+LCA8Y29kZT5zZWN0aW9uPC9jb2RlPiwgPGNvZGU+ YXV0aG9yPC9jb2RlPiwgPGNvZGU+c3RhdHVzPC9jb2RlPiwgPGNvZGU+aWQ8L2NvZGU+LCBh bmQgPGNvZGU+ZXhwaXJlZDwvY29kZT4gYXJlIGV4dHJhY3RlZDwvbGk+CgkJPGxpPlRpbWUt ZmlsdGVyOiBhbnkgJiM4MjIwO3RpbWUtYmFzZWQmIzgyMjE7IGF0dHJpYnV0ZXMgYXJlIHRo ZW4gYXBwbGllZCB0byB0aGUgYWJvdmUgbGlzdC4gQXQgdGhpcyBwb2ludCwgYW55IDxjb2Rl PmV4dHJhZmllbGQ8L2NvZGU+LCA8Y29kZT5zdGVwZmllbGQ8L2NvZGU+LCA8Y29kZT5vbWl0 ZmllbGQ8L2NvZGU+LCBvciA8Y29kZT5za2lwZmllbGQ8L2NvZGU+IGFyZSBjYWxjdWxhdGVk IHRvIGZpbmQgcmVwZWF0ZWQgZGF0ZXMgKHVwIHRvIGFzIG1hbnkgYXMgPGNvZGU+ZXZlbnRs aW1pdDwvY29kZT4gYWxsb3dzIG9yIHRoZSBjYWxjdWxhdGlvbiBleGNlZWRzIHRoZSBldmVu dCYjODIxNztzIGV4cGlyeSB0aW1lKS4gU28gdGhlIGF0dHJpYnV0ZXMgPGNvZGU+dGltZTwv Y29kZT4sIDxjb2RlPm1vbnRoPC9jb2RlPiwgPGNvZGU+ZnJvbTwvY29kZT4sIGFuZCA8Y29k ZT50bzwvY29kZT4gYXJlIHVzZWQgdG8gcmVmaW5lIHRoZSBmaWx0cmF0aW9uPC9saT4KCQk8 bGk+T3V0cHV0OiB3aGF0ZXZlciB0aGUgcHJldmlvdXMgcGhhc2VzIGhhdmUgbGVmdCBiZWhp bmQgaXMgc3ViamVjdCB0byBhbnkgcGFnaW5nLCA8Y29kZT5vZmZzZXQ8L2NvZGU+IGFuZCA8 Y29kZT5saW1pdDwvY29kZT4geW91IG1heSBoYXZlIHNwZWNpZmllZCwgdGhlbiB3cmFwcGVk IGFuZCBkaXNwbGF5ZWQ8L2xpPgoJPC9vbD4KCgk8aDIgaWQ9ImRhdGVzIj5EYXRlcywgZ290 Y2hhcyBhbmQgaWRpb3N5bmNyYWNpZXM8L2gyPgoKCTxwPklmIHRoZXJlIHdhcyBvbmUgZ2xv YmFsIHRpbWUgem9uZSB0aGUgd29ybGQgd291bGQgYmUgc2ltcGxlci4gU2FkbHksIHdlIGFs bCBsaXZlIGluIGRpZmZlcmVudCBwbGFjZXMgYW5kIHRoZSBJbnRlcm5ldCBCZWF0IGhhc24m IzgyMTc7dCByZWFsbHkgdGFrZW4gb2ZmLiBFdmVuIG1vcmUgc2FkbHksIGNlcnRhaW4gdXBw ZXIgZWNoZWxvbnMgb2YgcG93ZXIgZGVjcmVlIHRoYXQgdHdpY2UgYSB5ZWFyIHNvbWUgY291 bnRyaWVzIG11c3QgYWx0ZXIgdGhlaXIgY2xvY2tzIHRvIFNhdmUgRGF5bGlnaHQgKHdoYXRl dmVyIHRoYXQgbWVhbnMpLjwvcD4KCgk8cD48c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFu PiBkb2VzIGl0cyBiZXN0IHRvIHNoaWVsZCB5b3UgZnJvbSB0aGlzIG1heWhlbSBieSBhbGxv d2luZyB5b3UgdG8gc3BlY2lmeSB5b3VyIGxvY2FsZSwgdGltZSBvZmZzZXQgZnJvbSA8c3Bh biBjbGFzcz0iY2FwcyI+R01UPC9zcGFuPiwgYW5kIHdoZW4gPHNwYW4gY2xhc3M9ImNhcHMi PkRTVDwvc3Bhbj4gYXBwbGllcyBpbiB5b3VyIHRpbWUgem9uZSAobm90IGZvcmdldHRpbmcg dGhlIHRpbWUgem9uZSBvZiB5b3VyIHNlcnZlciBpZiBpdCBoYXBwZW5zIHRvIGJlIG5vd2hl cmUgbmVhciB5b3UpLjwvcD4KCgk8cD5BbmQgdGhlcmVpbiBsaWVzIHRoZSBydWIuPC9wPgoK CTxwPkZvciBhIGNhbGVuZGFyIHN5c3RlbSwgdGhpcyBpcyBzdWItb3B0aW1hbC4gSW4gZmFj dCBpdCYjODIxNztzIGRvd25yaWdodCBhbm5veWluZyBiZWNhdXNlIHdoZW4geW91IHNheSB0 aGF0IGFuIGV2ZW50IGlzIGdvaW5nIHRvIG9jY3VyIGF0IDhwbSBpbiBzaXggbW9udGhzJiM4 MjE3OyB0aW1lLCBwZXNreSBEYXlsaWdodCBTYXZpbmdzIG1heSB0aGVuIGJlIGluIGVmZmVj dCBhbmQgeW91ciBldmVudCB3aWxsIGFwcGVhciBhbiBob3VyICYjODIxNjtvZmYmIzgyMTc7 IChpdCBtYXkgbG9vayB3cm9uZyBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlIGFzIHdlbGwgYXMg aW4geW91ciBjYWxlbmRhciwgZGVwZW5kaW5nIG9uIHRoZSBzZXR0aW5ncykuPC9wPgoKCTxw PkFsc28sIGlmIHlvdXIgc2VydmVyIG9yIHlvdXIgb2ZmaWNlIGlzIHJlbG9jYXRlZCBhbmQg eW91IGhhdmUgdG8gYWRqdXN0IHRpbWUgem9uZSwgYWxsIHlvdXIgYmVhdXRpZnVsbHkgY3Jh ZnRlZCBkYXRlcyB3aWxsIGJlIHNoaWZ0ZWQuIFdlbGwsIHRoZXkmIzgyMTc7cmUgbm90IGFj dHVhbGx5IGNoYW5nZWQgaW4gdGhlIGRhdGFiYXNlIHVubGVzcyB5b3UgZWRpdCBhbiBhcnRp Y2xlIGFuZCByZS1zYXZlIGl0LCBidXQgdGhleSA8ZW0+YXBwZWFyPC9lbT4gdG8gaGF2ZSBz aGlmdGVkIGJlY2F1c2UgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gaXMgdHJ5aW5n IHRvIHNoaWVsZCB5b3UgZnJvbSB0aW1lIGJ1cmVhdWNyYWN5IGluIGEgd29ybGQgZ29uZSBt YWQuPC9wPgoKCTxwPlVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbGl0dGxlIHdlIGNhbiBkbyBh Ym91dCB0aGlzIGF0IHRoZSBtb21lbnQgdW50aWwgdGhlIHdheSBkYXRlcyBhcmUgaGFuZGxl ZCBpbiA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBpcyBjaGFuZ2VkLiBCdXQgdGhl cmUgYXJlIHNvbWUgc2V0dGluZ3MgdGhhdCB5b3UgY2FuIHBsYXkgd2l0aCB0byB0cnkgYW5k IG1ha2Ugc2Vuc2Ugb2YgaXQgYWxsLiBOYW1lbHkgdGhlIDxjb2RlPmdtdDwvY29kZT4gYXR0 cmlidXRlIHRvIHRoZSBjYWxlbmRhciBwbHVnaW4gYW5kIGFueSBvZiA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiYjODIxNztzIGRhdGUtYmFzZWQgdGFncyBzdWNoIGFzIDxjb2Rl PiZsdDt0eHA6cG9zdGVkIC8mZ3Q7PC9jb2RlPiBhbmQgPGNvZGU+Jmx0O3R4cDpleHBpcmVz IC8mZ3Q7PC9jb2RlPi4gU29tZXRpbWVzIGZpZGRsaW5nIHdpdGggdGhhdCBhbmQgdGhlIHRp bWUgem9uZS9EU1QgZmxhZ3Mgd2lsbCBoZWxwLiBPdGhlciB0aW1lcyB5b3UmIzgyMTc7bGwg Z2V0IGluIGEgcmlnaHQgb2xkIG1lc3MuPC9wPgoKCTxwPklmIGFsbCB0aGF0IGZhaWxzLCB0 aGUgY29uZGl0aW9uYWwgdGFnIG1heSBiZSBhYmxlIHRvIGhlbHAgeW91IGNvbXBhcmUgY2Vy dGFpbiBkYXRlcyBhbmQgYXBwbHkgZGlmZmVyZW50IGF0dHJpYnV0ZXMgZGVwZW5kaW5nIG9u IHRoZSBkYXkgb2YgdGhlIHllYXIuIEZhaWxpbmcgdGhhdCwganVzdCB1c2UgPHNwYW4gY2xh c3M9ImNhcHMiPkdNVDwvc3Bhbj4gYW5kIHJlZnVzZSB0byBvYnNlcnZlIDxzcGFuIGNsYXNz PSJjYXBzIj5EU1Q8L3NwYW4+IDotKTwvcD4KCgk8aDIgY2xhc3M9ImV4YW1wbGVzIj5FeGFt cGxlczwvaDI+CgoJPGgzIGlkPSJlZzEiPkV4YW1wbGUgMTwvaDM+CgoJPHA+VGhlIGJlYXV0 eSBvZiB0aGUgcGx1Z2luIGlzIHRoYXQgeW91IGhhdmUgdGhlIGVudGlyZSBhcnNlbmFsIG9m IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRhZ3MgYXZhaWxhYmxlIHRvIHlvdSBp ZiB5b3UgY2hvb3NlIHRvIHVzZSBhIDxjb2RlPmZvcm08L2NvZGU+LiBUaHVzIHlvdSBjYW4g c2V0IHRoZSBhcnRpY2xlJiM4MjE3O3Mgc3RhcnQgYW5kIGVuZCBkYXRlcyB0byB0aGUgc2Ft ZSBkYXkgYW5kIHNldCB0aGUgc3RhcnQgYW5kIGVuZCB0aW1lcyB0byBpbmRpY2F0ZSB0aGUg c3RhcnQgYW5kIGVuZCBvZiB0aGUgZXZlbnQuIFlvdSBjYW4gdGhlbiB1c2Ugc3RhbmRhcmQg PGNvZGU+Jmx0O3R4cDpwb3N0ZWQgLyZndDs8L2NvZGU+IG9yIDxjb2RlPiZsdDt0eHA6ZXhw aXJlcyAvJmd0OzwvY29kZT4gdGFncyB3aXRoIHZhcmlvdXMgPGNvZGU+Zm9ybWF0PC9jb2Rl PiBzdHJpbmdzIHRvIHJlbmRlciB0aGUgZXZlbnQmIzgyMTc7cyBjcml0ZXJpYS48L3A+CgoJ PHA+U2ltaWxhcmx5IHlvdSBjYW4gdXNlIDxjb2RlPiZsdDt0eHA6ZXhjZXJwdCAvJmd0Ozwv Y29kZT4gYW5kIDxjb2RlPiZsdDt0eHA6dGl0bGUgLyZndDs8L2NvZGU+IG9yIG9mIGNvdXJz ZSBhbnkgY3VzdG9tIGZpZWxkcyB0byBzaG93IGFzIG11Y2ggb3IgYXMgbGl0dGxlIGRldGFp bCBhcyB5b3UgbGlrZSBpbiB0aGUgY2FsZW5kYXIgY2VsbC48L3A+Cgo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9jYWxlbmRhciBzZWN0aW9u PSZxdW90O2V2ZW50cyZxdW90OyZndDsKJmx0O2RpdiZndDsKICAgRXZlbnQ6ICZsdDt0eHA6 cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0Owog ICAmbHQ7YnIgLyZndDsmbHQ7dHhwOmV4Y2VycHQgLyZndDsKJmx0Oy9kaXYmZ3Q7CiZsdDtk aXYgY2xhc3M9JnF1b3Q7ZXZ0aW1lJnF1b3Q7Jmd0OwogICBTdGFydDogJmx0O3R4cDpwb3N0 ZWQgZm9ybWF0PSZxdW90OyVIOiVNJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7ZGl2 IGNsYXNzPSZxdW90O2V2dGltZSZxdW90OyZndDsKICAgRW5kOiAmbHQ7dHhwOmV4cGlyZXMg Zm9ybWF0PSZxdW90OyVIOiVNJnF1b3Q7IC8mZ3Q7CiZsdDsvZGl2Jmd0OwombHQ7L3R4cDpz bWRfY2FsZW5kYXImZ3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMiI+RXhhbXBsZSAy PC9oMz4KCgk8cD5Vc2luZyB0aGUgY29uZGl0aW9uYWwgdGFnIHlvdSBjYW4gdGFrZSBhY3Rp b24gaWYgY2VydGFpbiBldmVudHMgY29udGFpbiBwYXJ0aWN1bGFyIGZsYWdzLiBUaGlzIGV4 YW1wbGUgYWxzbyBzaG93IGEgY29tcGxldGVseSB1c2VsZXNzIG1hbm5lciBvZiBlbXBsb3lp bmcgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX25vdyAvJmd0OzwvY29kZT4uPC9wPgoKPHByZSBj bGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGltZSBpczogJmx0O3R4cDpzbWRf Y2FsX25vdyBmb3JtYXQ9JnF1b3Q7JVQmcXVvdDsgLyZndDsKJmx0O3R4cDpzbWRfY2FsZW5k YXIgZm9ybT0mcXVvdDtldmZvcm0mcXVvdDsKICAgICBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9t XzMmcXVvdDsgc2tpcGZpZWxkPSZxdW90O2N1c3RvbV82JnF1b3Q7CiAgICAgc3BhbmZvcm09 JnF1b3Q7bXVsdGlzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5JbiBmb3JtIDxj b2RlPmV2Zm9ybTwvY29kZT46PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNz PSJibG9jayI+Jmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7cmVjdXImcXVvdDsmZ3Q7 CiAgJmx0O3R4cDpwZXJtbGluayZndDsoUkVDVVIpJmx0Oy90eHA6cGVybWxpbmsmZ3Q7CiZs dDt0eHA6ZWxzZSAvJmd0OwogICAmbHQ7dHhwOnBlcm1saW5rJmd0OyZsdDt0eHA6dGl0bGUg LyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgJmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9 JnF1b3Q7bXVsdGlmaXJzdCZxdW90OyZndDsKICAgICAgJmx0O3NwYW4gY2xhc3M9JnF1b3Q7 cmlnaHQmcXVvdDsmZ3Q7JmFtcDtsYXF1bzstLSZsdDsvc3BhbiZndDsKICAgJmx0Oy90eHA6 c21kX2lmX2NhbCZndDsKICAgJmx0O3R4cDpzbWRfaWZfY2FsIGZsYWc9JnF1b3Q7cmVjdXJm aXJzdCZxdW90OyZndDsKICAgICAgJmx0O3NwYW4mZ3Q7T25lIG9mIG1hbnkuLi4mbHQ7L3Nw YW4mZ3Q7CiAgICZsdDsvdHhwOnNtZF9pZl9jYWwmZ3Q7CiZsdDsvdHhwOnNtZF9pZl9jYWwm Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5BbmQgaW4gZm9ybSA8Y29kZT5tdWx0aXM8L2NvZGU+ OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6 c21kX2lmX2NhbCBmbGFnPSZxdW90O211bHRpLCBtdWx0aXByZXYmcXVvdDsmZ3Q7CiAgICZs dDt0eHA6cGVybWxpbmsmZ3Q7LS0mYW1wO3JhcXVvOy0tJmx0Oy90eHA6cGVybWxpbmsmZ3Q7 CiZsdDsvdHhwOnNtZF9pZl9jYWwmZ3Q7CiZsdDt0eHA6c21kX2lmX2NhbCBmbGFnPSZxdW90 O211bHRpbGFzdCZxdW90OyZndDsKICAgJmx0O3R4cDpwZXJtbGluayZndDsKICAgICAgJmx0 O3NwYW4gY2xhc3M9JnF1b3Q7bGVmdCZxdW90OyZndDstLSZhbXA7cmFxdW87Jmx0Oy9zcGFu Jmd0OyBFTkQgJmx0O3R4cDp0aXRsZSAvJmd0OwogICAmbHQ7L3R4cDpwZXJtbGluayZndDsK Jmx0Oy90eHA6c21kX2lmX2NhbCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGljZSB0aGF0 IDxjb2RlPm11bHRpZmlyc3Q8L2NvZGU+IGlzIHRlc3RlZCBpbnNpZGUgdGhlIHNhbWUgZm9y bSBhcyBzdGFuZGFyZCBldmVudHMuIFRoaXMgaXMgYmVjYXVzZSBvbmx5IDxlbT5jb250aW51 YXRpb24gc3Bhbm5lZCBjZWxsczwvZW0+IGFyZSBwYXNzZWQgdG8gdGhlIDxjb2RlPnNwYW5m b3JtPC9jb2RlPjsgdGhlIGZpcnN0IGV2ZW50IG9mIGEgc3Bhbm5lZCBncm91cCBpcyBqdXN0 IGxpa2UgYW55IHN0YW5kYXJkIGV2ZW50LiBTaW1pbGFybHksIGlmIHlvdSBoYWQgYmVlbiB1 c2luZyA8Y29kZT5yZWN1cmZvcm08L2NvZGU+IHRoZSBmaXJzdCBldmVudCBvZiB0aGUgcmVj dXJyaW5nIHNldCB3b3VsZCBiZSBwcm9jZXNzZWQgaW4gdGhlIHVzdWFsIGZvcm0vY29udGFp bmVyIGFuZCBldmVyeSBzdWJzZXF1ZW50IGV2ZW50IHdvdWxkIGJlIHBhc3NlZCB0byB0aGUg ZGVkaWNhdGVkIGZvcm0uPC9wPgoKCTxoMyBpZD0iZWczIj5FeGFtcGxlIDM8L2gzPgoKCTxw PllvdSBjb3VsZCB1c2UgdGhlIGNhbGVuZGFyIHRhZ3MgdG8gb3V0cHV0IHZhcmlvdXMgcGll Y2VzIG9mIGZsYWcgaW5mb3JtYXRpb24gdG8gYnVpbGQgeW91ciBvd24gY2xhc3MgbmFtZXMu IFRoaXMgZXhhbXBsZSBhbHNvIGRlbW9uc3RyYXRlcyB0aGUgPGNvZGU+aHRtbDwvY29kZT4g YXR0cmlidXRlIG9mIDxjb2RlPiZsdDt0eHA6c21kX2NhbF9pbmZvIC8mZ3Q7PC9jb2RlPiB0 byBidWlsZCB1cCBhIHF1ZXJ5IHN0cmluZyB0aGF0IGlzIHBhc3NlZCBhbG9uZyB3aXRoIGFu IGV2ZW50JiM4MjE3O3MgPGNvZGU+Y2F0ZWdvcnkxPC9jb2RlPiB3aGVuIGEgdmlzaXRvciBj bGlja3MgdGhlIGFuY2hvci48L3A+CgoJPHA+VGhpcyBhbGxvd3MgeW91ciBzaXRlIHZpc2l0 b3JzIHRvIGZpbHRlciBldmVudHMgYnkgY2F0ZWdvcnkgd2hpbGUgcmV0YWluaW5nIHRoZSBh YmlsaXR5IHRvIHNob3cgdGhlIGNhbGVuZGFyIGZvciB0aGUgY3VycmVudCBtb250aC95ZWFy IGFuZCBzZWN0aW9uIHRoZXkgYXJlIHZpZXdpbmcgaW5zdGVhZCBvZiBkcm9wcGluZyBiYWNr IHRvIHRoZSBjdXJyZW50IG1vbnRoL3llYXIgbGlrZSBvdGhlciBjYWxlbmRhciBzeXN0ZW1z IG9mdGVuIGRvLjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX2NhbGVuZGFyIGlzb3dlZWtzPSZxdW90O1dFRUsjJnF1b3Q7CiAgICAg eWVhcndpZHRoPSZxdW90OzAsMiZxdW90OyBzZWxlY3Q9JnF1b3Q7eWVhciwgbW9udGgmcXVv dDsKICAgICBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsgc2tpcGZpZWxkPSZxdW90 O2N1c3RvbV8yJnF1b3Q7CiAgICAgc2hvd3NraXBwZWQ9JnF1b3Q7MSZxdW90OyBleHBpcmVk PSZxdW90OzEmcXVvdDsmZ3Q7CiAgICZsdDtzcGFuIGNsYXNzPSZxdW90OyZsdDt0eHA6c21k X2NhbF9pbmZvIGpvaW49JnF1b3Q7IGNhbF8mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAg ICZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvdHhwOnBlcm1s aW5rJmd0OwogICAgICAmbHQ7YSBocmVmPSZxdW90Oz9jPSZsdDt0eHA6Y2F0ZWdvcnkxCiAg ICAgICAgIC8mZ3Q7JmFtcDsmbHQ7dHhwOnNtZF9jYWxfaW5mbyB0eXBlPSZxdW90O3MsIHll YXIsCiAgICAgICAgIG1vbnRoLCBjYWxpZCZxdW90OyBodG1sPSZxdW90OzEmcXVvdDsgam9p bl9wcmVmaXg9JnF1b3Q7JnF1b3Q7CiAgICAgICAgIC8mZ3Q7JnF1b3Q7Jmd0OyZsdDt0eHA6 Y2F0ZWdvcnkxIHRpdGxlPSZxdW90OzEmcXVvdDsgLyZndDsmbHQ7L2EmZ3Q7CiAgICZsdDsv c3BhbiZndDsKJmx0Oy90eHA6c21kX2NhbGVuZGFyJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ V2hhdCBpcyBhbHNvIHVzZWZ1bCBhYm91dCB0aGUgPGNvZGU+Jmx0O3R4cDpzbWRfY2FsX2lu Zm8gLyZndDs8L2NvZGU+IHRhZyBpcyB0aGF0IGlmIGEgcGFydGljdWxhciB2YWx1ZSBpcyBu b3Qgc2V0IGl0IHdpbGwgPGVtPm5vdDwvZW0+IGJlIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQu PC9wPgoKCTxoMyBpZD0iZWc0Ij5FeGFtcGxlIDQ8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2si Pjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2gyJmd0O1VwY29taW5nIEV2ZW50cyZsdDsvaDIm Z3Q7CiZsdDt0eHA6c21kX2FydGljbGVfZXZlbnQgc3RlcGZpZWxkPSZxdW90O2N1c3RvbV8x JnF1b3Q7CiAgICAgd3JhcHRhZz0mcXVvdDtkbCZxdW90OyB0aW1lPSZxdW90O2Z1dHVyZSZx dW90OyBldmVudGxpbWl0PSZxdW90OzUmcXVvdDsmZ3Q7CiAgICZsdDt0eHA6aWZfZGlmZmVy ZW50Jmd0OwogICAgICZsdDtkdCZndDsmbHQ7dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JUIg JVkmcXVvdDsgLyZndDsmbHQ7L2R0Jmd0OwogICAmbHQ7L3R4cDppZl9kaWZmZXJlbnQmZ3Q7 CiAgICZsdDtkZCZndDsKICAgICAgJmx0O3R4cDpwZXJtbGluayZndDsmbHQ7dHhwOnRpdGxl LyZndDsmbHQ7L3R4cDpwZXJtbGluayZndDsKICAgICAgJmx0O3R4cDpwb3N0ZWQgLyZndDsK ICAgJmx0Oy9kZCZndDsKJmx0Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5UaGF0IGxpc3RzIHRoZSBuZXh0IDUgdXBjb21pbmcgJiM4MjEyOyByZWN1 cnJpbmcgJiM4MjEyOyBldmVudHMsIHBsdXMgYW55IHN0YW5kYXJkIGFuZCBzcGFubmVkIGV2 ZW50cywgZm9ybWF0dGluZyB0aGVtIGFzIGEgZGVmaW5pdGlvbiBsaXN0LiBJZiB5b3UgYWRk IHBhZ2luYXRpb24gdGFncyB5b3UgY2FuIGZsaXAgdGhyb3VnaCBhbGwgdGhlIGV2ZW50czsg dGhleSB3aWxsIGJlIGRpc3BsYXllZCAxMCBhdCBhIHRpbWUgb24gZWFjaCBwYWdlIChpZiB5 b3Ugd2FudCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIHBhZ2UgeW91IGFyZSBvbiBhcyB5b3Ug ZmxpcCB0aHJvdWdoIGEgY2FsZW5kYXIgdGhhdCBpcyBpbiBhIHNpZGViYXIsIGFkZCA8Y29k ZT5wZzwvY29kZT4gdG8gdGhlIDxjb2RlPm1haW50YWluPC9jb2RlPiBhdHRyaWJ1dGUgaW4g eW91ciBjYWxlbmRhcikuPC9wPgoKCTxwPk5vdGUgdGhlIGh5cGVybGlua2VkIHRpdGxlIHNo b3duIGhlcmUgd2lsbCByZXR1cm4gdG8gdGhlICYjODIxNjtyZWFsJiM4MjE3OyBhcnRpY2xl IHdoZW4gY2xpY2tlZC4gSWYgeW91IHdhbnRlZCB0byBhbGxvdyBwZW9wbGUgdG8gYm9vayBh biBldmVudCBvbiB5b3VyIGluZGl2aWR1YWwgYXJ0aWNsZSwgdHJ5IHRoaXM6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDppZl9pbmRpdmlk dWFsX2FydGljbGUmZ3Q7CiAmbHQ7dHhwOmFydGljbGUgbGltaXQ9JnF1b3Q7MSZxdW90OyZn dDsKICAmbHQ7aDMmZ3Q7Jmx0O3R4cDp0aXRsZSAvJmd0OyZsdDsvaDMmZ3Q7CiAgJmx0O3R4 cDpib2R5IC8mZ3Q7CiAgJmx0O3AmZ3Q7UGxlYXNlIGNob29zZSBhIGRhdGUgdG8gYm9vazom bHQ7L3AmZ3Q7CiAgJmx0O3NlbGVjdCZndDsKICAmbHQ7dHhwOnNtZF9hcnRpY2xlX2V2ZW50 IHN0ZXBmaWVsZD0mcXVvdDtjdXN0b21fMSZxdW90OwogICAgdHlwZT0mcXVvdDtyZWN1ciZx dW90OyBpZD0mIzM5OyZsdDt0eHA6YXJ0aWNsZV9pZCAvJmd0OyYjMzk7Jmd0OwogICAgJmx0 O29wdGlvbgogICAgIHZhbHVlPSYjMzk7Jmx0O3R4cDpwb3N0ZWQgZm9ybWF0PSZxdW90OyVH LSVtLSVkJnF1b3Q7LyZndDsmIzM5OyZndDsKICAgICAgJmx0O3R4cDpwb3N0ZWQgZm9ybWF0 PSZxdW90OyVtICVkLCAkRyZxdW90OyAvJmd0OwogICAgJmx0Oy9vcHRpb24mZ3Q7CiAgJmx0 Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7CiAgJmx0Oy9zZWxlY3QmZ3Q7CiAmbHQ7L3R4 cDphcnRpY2xlJmd0OwombHQ7L3R4cDppZl9pbmRpdmlkdWFsX2FydGljbGUmZ3Q7CjwvY29k ZT48L3ByZT4KCgk8cD5XaXRoIHNvbWUgY3VubmluZyB5b3UgY291bGQgZXZlbiBhZGQgdGhl ICYjODIxNjt2aXJ0dWFsJiM4MjE3OyBkYXRlIHRoYXQgdGhleSBjaG9zZSBpbiB5b3VyIG9y aWdpbmFsIGFydGljbGVfZXZlbnQgbGlzdCBhbmQgcGFzcyBpdCBhcyBhIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlIHRvIHlvdXIgaW5kaXZpZHVhbCBhcnRpY2xl IHdoZXJlIHlvdSBjb3VsZCByZWFkIHRoZSB2YWx1ZSBhbmQgcHJlLXNlbGVjdCB0aGUgZGF0 ZSBmb3IgdGhlIHZpc3Rvci48L3A+CgoJPGgzIGlkPSJlZzUiPkV4YW1wbGUgNTwvaDM+CgoJ PHA+SG93IGFib3V0IGJlaW5nIGFibGUgdG8gb3V0cHV0IHlvdXIgZXZlbnRzIGluIGlDYWwg Zm9ybWF0IHNvIG90aGVyIHBlb3BsZSBjYW4gc3luYyB0aGVpciBjYWxlbmRhcnMgdG8geW91 cnM/IFB1dCB0aGlzIGluIGEgbmV3IFBhZ2UgdGVtcGxhdGUgaW4gaXRzIG93biBTZWN0aW9u OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPkJFR0lOOlZD QUxFTkRBUgpWRVJTSU9OOjIuMApYLVdSLUNBTE5BTUU6R2lncyBDYWxlbmRhcgpQUk9ESUQ6 LS8vQXBwbGUgQ29tcHV0ZXIsIEluYy8vaUNhbCAxLjUvL0VOClgtV1ItVElNRVpPTkU6RXVy b3BlL0xvbmRvbgombHQ7dHhwOnNtZF9hcnRpY2xlX2V2ZW50IGZvcm09JnF1b3Q7aWNzaXRl bSZxdW90OyB0aW1lPSZxdW90O2FueSZxdW90OwpzZWN0aW9uPSZxdW90O2dpZ3MmcXVvdDsg bGltaXQ9JnF1b3Q7MTAwMCZxdW90OyZndDsKIEJFR0lOOlZFVkVOVAogRFRTVEFSVDombHQ7 dHhwOnBvc3RlZCBmb3JtYXQ9JnF1b3Q7JVklbSVkVCVIJWklcyZxdW90OyAvJmd0OwogRFRF TkQ6Jmx0O3R4cDpleHBpcmVzIGZvcm1hdD0mcXVvdDslWSVtJWRUJUglaSVzJnF1b3Q7IC8m Z3Q7CiBTVU1NQVJZOiZsdDt0eHA6dGl0bGUgLyZndDsKIEVORDpWRVZFTlQKJmx0Oy90eHA6 c21kX2FydGljbGVfZXZlbnQmZ3Q7CkVORDpWQ0FMRU5EQVIKPC9jb2RlPjwvcHJlPgoKCTxw PlRoYXQgd2lsbCBvdXRwdXQgYW4gaUNhbC1mb3JtYXR0ZWQgZ2lnIGxpc3QgKHJlcGVhdGVk IG9yIG90aGVyd2lzZSkuIElmIHlvdSBnb3QgZnJlYWt5IHdpdGggaXQgYW5kIGFkZGVkIHNv bWUgY29uZGl0aW9uYWwgbG9naWMgaW5zaWRlIHRoZSB0ZW1wbGF0ZSB5b3UgY291bGQgZXZl biByZWFkIGluIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHZhcmlhYmxlcyBhbmQg cGx1ZyB0aGVtIGluLiBUaHVzIHlvdSBjb3VsZCBsaW5rIHRvIGl0IGRpcmVjdGx5IG9mZiB0 aGUgY2FsZW5kYXIgaXRzZWxmLCBwYXNzIGluIHRoZSBzZWN0aW9uLCBjYXRlZ29yeSBvciBl dmVudCBpbmZvIGFuZCBoYXZlIGEgY3VzdG9taXNlZCBpQ2FsIHN0cmVhbSBwdW1wZWQgb3V0 IG9mIFRleHRwYXR0ZXJuLjwvcD4KCgk8cD5UaGFua3MgdG8gd29vZiBmb3IgYnJpbmdpbmcg dGhlIG9yaWdpbmFsIDxhIGhyZWY9Imh0dHA6Ly9kZS1vbmxpbmUuY28udWsvMjAwNi8wNS8w NS90ZXh0cGF0dGVybi1hbmQtaWNhbCI+RGF2aWQgRW1lcnk8L2E+IGFydGljbGUgdG8gbXkg YXR0ZW50aW9uLjwvcD4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2PC9oMz4KCgk8cD5Vc2lu ZyB0aGUgPGNvZGU+bm93PC9jb2RlPiBhbmQgPGNvZGU+b2Zmc2V0PC9jb2RlPiBhdHRyaWJ1 dGVzIG9mIDxjb2RlPiZsdDt0eHA6c21kX2NhbF9ub3cgLyZndDs8L2NvZGU+IHlvdSBjYW4g ZWZmZWN0aXZlbHkgc2V0ICYjODIxNjtub3cmIzgyMTc7IHRvIGJlIGFueSB0aW1lIHlvdSBs aWtlIGFuZCBtYWtlIGNhbGN1bGF0aW9ucyBiYXNlZCBvbiBhIHBhcnRpY3VsYXIgZGF0ZS48 L3A+CgoJPHA+UGx1Z2dpbmcgdGhlIDxjb2RlPj9tb250aDwvY29kZT4gYW5kIDxjb2RlPj95 ZWFyPC9jb2RlPiBjb2RlcyBpbiBhbGxvd3MgeW91IHRvIG1ha2UgPGNvZGU+Jmx0O3R4cDpz bWRfYXJ0aWNsZV9ldmVudCAvJmd0OzwvY29kZT4gdHJhY2sgdGhlIGNhbGVuZGFyLiBTbyB5 b3UgY2FuIGF1dG9tYXRpY2FsbHkgc2hvdyBvbmx5IHRoZSBldmVudHMgdGhhdCBvY2N1ciBp biB0aGUgbW9udGggdGhlIHZpc2l0b3IgaXMgYnJvd3NpbmcgdmlhIHRoZSBjYWxlbmRhcjo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNt ZF9jYWxlbmRhciBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsgLyZndDsKJmx0O2gy Jmd0O0V2ZW50cyB0aGlzIG1vbnRoJmx0Oy9oMiZndDsKJmx0O3R4cDpzbWRfYXJ0aWNsZV9l dmVudCBzdGVwZmllbGQ9JnF1b3Q7Y3VzdG9tXzEmcXVvdDsKICAgICBmcm9tPSYjMzk7Jmx0 O3R4cDpzbWRfY2FsX25vdyBub3c9JnF1b3Q7MDEtP21vbnRoLT95ZWFyJnF1b3Q7IC8mZ3Q7 JiMzOTsKICAgICB0bz0mIzM5OyZsdDt0eHA6c21kX2NhbF9ub3cgbm93PSZxdW90Oz9tb250 aC0/eWVhciZxdW90OwogICAgICAgIG9mZnNldD0mcXVvdDsxIG1vbnRoJnF1b3Q7IC8mZ3Q7 JiMzOTsgdGltZT0mcXVvdDthbnkmcXVvdDsgd3JhcHRhZz0mcXVvdDt1bCZxdW90OyZndDsK Jmx0O2xpJmd0OyZsdDt0eHA6cGVybWxpbmsmZ3Q7Jmx0O2ImZ3Q7Jmx0O3R4cDp0aXRsZS8m Z3Q7Jmx0Oy9iJmd0OyZsdDsvdHhwOnBlcm1saW5rJmd0OwombHQ7YnIvJmd0OyZsdDt0eHA6 cG9zdGVkIC8mZ3Q7Jmx0Oy9saSZndDsKJmx0Oy90eHA6c21kX2FydGljbGVfZXZlbnQmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8aDIgY2xhc3M9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4K Cgk8dWw+CgkJPGxpPjIxIERlYyAwOCB8IDAuMSB8IEluaXRpYWwgcmVsZWFzZSAoc3BvbnNv cnMgb25seSk8L2xpPgoJCTxsaT4yMiBEZWMgMDggfCAwLjIgfCBGaXhlZCBhIGZldyBXM0Mg dmFsaWRhdGlvbiBpc3N1ZXMgYW5kIGFkZGVkIG1vcmUgZGF0YSB2YWxpZGl0eSBjaGVja3Mg OyBhdHRlbXB0ZWQgdG8gYWRkcmVzcyBkYXRlL3RpbWV6b25lIHByb2JsZW1zIChhbmQgbW9z dGx5IGZhaWxlZCwgc28gd3JvdGUgYWJvdXQgaXQgaW5zdGVhZCkgOyBlbmhhbmNlZCA8Y29k ZT5zbWRfaWZfY2FsPC9jb2RlPiB0YWcgdG8gY2hlY2sgZm9yIGRhdGVzIGFuZCA8Y29kZT5j YWxpZDwvY29kZT4gOyBhZGRlZCA8Y29kZT5lc2NhcGU8L2NvZGU+IGF0dHJpYnV0ZSB0byBz bWRfY2FsX2luZm8gdGFnPC9saT4KCQk8bGk+MjMgRGVjIDA4IHwgMC4yMSB8IENoYW5nZWQg PGNvZGU+aXNvd2Vla3M8L2NvZGU+IHNvIGFueSBnaXZlbiB0ZXh0IGJlY29tZXMgdGhlIGNv bHVtbiBoZWFkaW5nIDsgYWRkZWQgPGNvZGU+d2VlazwvY29kZT4gYXR0cmlidXRlIHRvIGFs bCByZWxldmFudCB0YWdzIDsgYWRkZWQgPGNvZGU+ZGF5PC9jb2RlPiBhdHRyaWJ1dGUgdG8g PGNvZGU+c21kX2NhbF9pbmZvPC9jb2RlPiA7IGZpeGVkIDxjb2RlPm1vbnRoPC9jb2RlPiBh bmQgPGNvZGU+eWVhcjwvY29kZT4gYXR0cmlidXRlcyBzbyBjYWxlbmRhciBuYXZpZ2F0aW9u IG92ZXJyaWRlcyB0aGVtPC9saT4KCQk8bGk+MjYgRGVjIDA4IHwgMC4yMiB8IEVuaGFuY2Vk IDxjb2RlPm5hdmNsYXNzPC9jb2RlPiA7IGFkZGVkIDxjb2RlPmxpbmtwb3N0ZWQ8L2NvZGU+ IChib3RoIHRoYW5rcyBtcmRhbGUpPC9saT4KCQk8bGk+MjggRGVjIDA4IHwgMC4yMyB8IENv cnJlY3RlZCB0aW1lem9uZSBvZmZzZXQgZmF1eCBwYXMgOyBhZGRlZCBmaXJzdC9sYXN0IHdl ZWtkYXkgcmVjdXJyZW5jZSBhbmQgPGNvZGU+cmVjdXJmb3JtPC9jb2RlPiAoYWxsIHRoYW5r cyBtcmRhbGUpIDsgZml4ZWQgbWluaWNhbCAmIzgyMTY7dG9kYXkmIzgyMTc7IGJlaW5nIHdy b25nbHkgc2V0PC9saT4KCQk8bGk+MDEgSmFuIDA5IHwgMC4zIHwgQWRkZWQgPGNvZGU+Y2Vs bGZvcm08L2NvZGU+LCA8Y29kZT5uYXZpZDwvY29kZT4sIDxjb2RlPm5hdmFycm93PC9jb2Rl PiwgYW5kIDxjb2RlPm1haW50YWluPC9jb2RlPiA7IGFkZGVkIDxjb2RlPiZsdDt0eHA6c21k X2FydGljbGVfZXZlbnQgLyZndDs8L2NvZGU+ICh0aGFua3MgbXJkYWxlKSBhbmQgPGNvZGU+ Jmx0O3R4cDpzbWRfY2FsX2NsYXNzIC8mZ3Q7PC9jb2RlPiA7IGFkZGVkIHRoZSA8Y29kZT5z dGFuZGFyZDwvY29kZT4gYW5kIDxjb2RlPnJlY3VyZmlyc3Q8L2NvZGU+IGV2ZW50IGZsYWdz IDsgbWFkZSBjZWxsL2V2ZW50IGZsYWcgZGlzdGluY3Rpb24gYmV0dGVyIChlLmcuIDxjb2Rl PmV2ZW50PC9jb2RlPiBhbmQgPGNvZGU+aG9sczwvY29kZT4gZmxhZ3Mgbm93IG9jY3VyIDxl bT5vbmx5PC9lbT4gYXQgdGhlIGNlbGwgbGV2ZWwpIDsgYWRkZWQgYWJpbGl0eSB0byBzcGVj aWZ5IGEgPGNvZGU+ZGF5Zm9ybWF0PC9jb2RlPiBhcnJheSwgYWRkZWQgYSB3ZWVrIHNlbGVj dCBsaXN0IGFuZCBlbmhhbmNlZCB0aGUgPGNvZGU+aXNvd2Vla3M8L2NvZGU+IGF0dHJpYnV0 ZSAodGhhbmtzIHVsaSkgOyBmaXhlZCBzbWRfaWZfY2FsJiM4MjE3O3MgPGNvZGU+ZmxhZzwv Y29kZT4gYnVtYmxpbmcsIGFuZCBhZGRlZCA8Y29kZT5TTURfQU5ZPC9jb2RlPiB0ZXN0IDsg Zml4ZWQgc21kX2NhbF9pbmZvIDxjb2RlPmF1dGhvcjwvY29kZT4gd2FybmluZyBhbmQgYWRk ZWQgPGNvZGU+am9pbl9wcmVmaXg8L2NvZGU+IDsgZml4ZWQgZGFuZ2xpbmcgYXJ0aWNsZSBh ZnRlciBwbHVnaW4gdGVybWluYXRlczwvbGk+CgkJPGxpPjAyIEphbiAwOSB8IDAuMzEgfCBB ZGRlZCA8Y29kZT5vbWl0ZmllbGQ8L2NvZGU+IGFuZCB0aGUgPGNvZGU+b21pdDwvY29kZT4g Y2VsbCBmbGFnICh0aGFua3Mgd29vZik8L2xpPgoJCTxsaT4wNCBKYW4gMDkgfCAwLjMyIHwg QWRkZWQgPGNvZGU+bm93PC9jb2RlPiBhbmQgPGNvZGU+b2Zmc2V0PC9jb2RlPiB0byA8Y29k ZT5zbWRfY2FsX25vdzwvY29kZT4gOyBmaXhlZCB3YXJuaW5nIGlmIG5vIGV2ZW50cyBtYXRj aCBpbiA8Y29kZT5zbWRfYXJ0aWNsZV9ldmVudDwvY29kZT4gOyBmaXhlZCBmaXJzdC9sYXN0 IHRpbWVzdGFtcHMgKHRoYW5rcyBtcmRhbGUpPC9saT4KCQk8bGk+MDYgSmFuIDA5IHwgMC4z MyB8IEZpeGVkIDxjb2RlPnNtZF9jYWxfY2xhc3M8L2NvZGU+IHR5cG8gOyBjaGFuZ2VkIDxj b2RlPnNtZF9pZl9jYWw8L2NvZGU+IGxvZ2ljIHRvIDxjb2RlPm9yPC9jb2RlPiBieSBkZWZh dWx0IChib3RoIHRoYW5rcyBFbHMpIDsgZml4ZWQgbXVsdGkgZGV0ZWN0aW9uIDsgbWFkZSA8 Y29kZT55ZWFyd2lkdGg8L2NvZGU+IG1vcmUgaW50ZWxsaWdlbnQ8L2xpPgoJCTxsaT4wNyBK YW4gMDkgfCAwLjM0IHwgRml4ZWQgPGNvZGU+e3Nob3J0eWVhcn08L2NvZGU+IHR5cG8gOyBh ZGRlZCA8Y29kZT57aXNveWVhcn08L2NvZGU+IGFuZCA8Y29kZT57c2hvcnRpc295ZWFyfTwv Y29kZT4gOyBhZGRlZCA8Y29kZT5pc295ZWFyPC9jb2RlPiB0byA8Y29kZT5zbWRfaWZfY2Fs PC9jb2RlPiBhbmQgPGNvZGU+c21kX2NhbF9pbmZvPC9jb2RlPjwvbGk+CgkJPGxpPjIxIEph biAwOSB8IDAuNCB8IENoYW5nZWQgPGNvZGU+c2VjdGlvbjwvY29kZT4gdG8gPGNvZGU+czwv Y29kZT4gZm9yIDxjb2RlPnNtZF9jYWxfaW5mbzwvY29kZT4gYW5kIGVuYWJsZWQgZnVsbCBm aWVsZCBzdXBwb3J0IDsgaW1wcm92ZWQgcGVybWxpbmsgc3VwcG9ydCAodGhhbmtzIEVscykg OyBhZGRlZCA8Y29kZT5leHRyYWZpZWxkPC9jb2RlPiBhbmQgPGNvZGU+ZXh0cmFzdHJpY3Q8 L2NvZGU+ICh0aGFua3MgRmlyZUZ1c2lvbikgOyBhZGRlZCA8Y29kZT5yZWFsbmFtZTwvY29k ZT4gKHRoYW5rcyByc2lsbGV0dGkpIDsgYWRkZWQgc2VwYXJhdGUgPGNvZGU+e2ZsYWd9PC9j b2RlPiByZXBsYWNlbWVudHMgOyBhZGRlZCA8Y29kZT5uYW1ldmFsPC9jb2RlPiA7IGFkZGVk IHN1cHBvcnQgZm9yIHNlbGVjdCBsaXN0IHByZWZpeCBhbmQgc3VmZml4ICh0aGFua3MgVWxp KSA7IGZpeGVkIGZyb250cGFnZSBiZWhhdmlvdXIgYW5kIGFkZGVkIDxjb2RlPnNob3dhbGw8 L2NvZGU+ICh0aGFua3MgcnNpbGxldHRpKSA7IGZpeGVkIGluZmluaXRlIGxvb3Agd2hlbiB1 c2luZyA8Y29kZT4/bW9udGg8L2NvZGU+IC8gPGNvZGU+P3llYXI8L2NvZGU+IGluIHJlY3Vy cmluZyBkYXRlcyAodGhhbmtzIGRlY29kZXJsdGQpPC9saT4KCTwvdWw+CgoJPHA+PC9kaXY+ PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVHSU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRl eHQvY3NzIj4KI3NtZF9oZWxwIHsgbGluZS1oZWlnaHQ6MS41IDt9CiNzbWRfaGVscCBjb2Rl IHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNv dXJpZXIsIG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVs cCBjb2RlLmJsb2NrIHsgZm9udC13ZWlnaHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAj OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46 MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21k X2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6ICMwMGM7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNz bWRfaGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4 dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFk ZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIw cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgbWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7 IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRk aW5nOjEwcHggMCAwOyBjb2xvcjogIzM2OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNl cmlmOyB9CiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjMDc5OyBmb250OiBib2xkIDEycHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9 CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsgbGV0 dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06IHVw cGVyY2FzZTsgfQojc21kX2hlbHAgLmF0bm0geyBmb250LXdlaWdodDpib2xkOyBjb2xvcjoj MzNkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9yZGVyOjFweCBk b3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjkwJTsgdGV4dC1hbGlnbjpj ZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9CiNzbWRfaGVscCB0ZCwgI3NtZF9oZWxwIHRo IHtib3JkZXI6MXB4IHNvbGlkICM5OTk7IHBhZGRpbmc6LjVlbSAwO30KI3NtZF9oZWxwIHVs IHsgbGlzdC1zdHlsZS10eXBlOnNxdWFyZTsgfQojc21kX2hlbHAgLnJlcXVpcmVkIHtjb2xv cjpyZWQ7fQojc21kX2hlbHAgbGkgeyBtYXJnaW46NXB4IDIwcHggNXB4IDMwcHg7IH0KI3Nt ZF9oZWxwIC5icmVhayB7IG1hcmdpbi10b3A6NXB4OyB9Cjwvc3R5bGU+CjwhLS0gLS0tIEVO RCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czozMjoiM2NlY2E4YzZhZWQwYWRi NzBhNTFkYzA3M2I1Zjg1ODciO30=