# Name: smd_gallery v0.31 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InNtZF9nYWxsZXJ5IjtzOjY6ImF1dGhvciI7czoxMToi U3RlZiBEYXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29u LmNvbS8iO3M6NzoidmVyc2lvbiI7czo0OiIwLjMxIjtzOjExOiJkZXNjcmlwdGlvbiI7czo2 OToiQShub3RoZXIpIHRodW1ibmFpbCBnYWxsZXJ5L3NsaWRlc2hvdyBjcmVhdG9yIHdpdGgg dW5yZWFsIGZsZXhpYmlsaXR5IjtzOjQ6ImNvZGUiO3M6MjQ0ODA6ImZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXI7DQoNCgkvLyAqKiBMT09LVVAgVEFCTEUNCgkvLyBIb2xkcyBkYXRh YmFzZSBmaWVsZCBhcyBrZXkgaW5kZXggYW5kIHBsdWdpbiBvcHRpb24gbmFtZXMgYXMgdmFs dWUuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVlIGV4aXN0cyBhbmQg cmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJyYXkgcmVmcy4NCgkk ZmllbGRNYXAgPSBhcnJheSgNCgkJInR4cF9pbWFnZS5uYW1lIiA9PiAibmFtZSIsDQoJCSJ0 eHBfaW1hZ2UuaWQiID0+ICJpZCIsDQoJCSJ0eHBfaW1hZ2UuYWx0IiA9PiAiYWx0IiwNCgkJ InR4cF9pbWFnZS5jYXB0aW9uIiA9PiAiY2FwdGlvbiIsDQoJCSJ0eHBfaW1hZ2UuY2F0ZWdv cnkiID0+ICJjYXRlZ29yeSIsDQoJCSJ0eHBfaW1hZ2UuYXV0aG9yIiA9PiAiYXV0aG9yIiwN CgkJInR4cF9pbWFnZS5kYXRlIiA9PiAiZGF0ZSIsDQoJCSJ0eHBfaW1hZ2UuZXh0IiA9PiAi ZXh0IiwNCgkJInR4cF9pbWFnZS53IiA9PiAid2lkdGgiLA0KCQkidHhwX2ltYWdlLmgiID0+ ICJoZWlnaHQiLA0KCQkidHhwX2ltYWdlLnRodW1ibmFpbCIgPT4gImhhc3RodW1iIiwNCgkp Ow0KDQoJLy8gUGx1Z2luIG9wdGlvbnMNCglleHRyYWN0KGxBdHRzKGFycmF5KA0KCQkndHlw ZScgPT4gJ2ltYWdlJywNCgkJJ2RlbGltJyA9PiAnLCcsDQoJCSdwYXJhbWRlbGltJyA9PiAn OicsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2lkJyA9PiAnJywNCgkJJ2NhdGVnb3J5JyA9PiAn JywNCgkJJ2RpcmVjdG9yeScgPT4gJycsDQoJCSdtYXRjaCcgPT4gJycsDQoJCSdzdWJsZXZl bCcgPT4gJzAnLA0KCQknc29ydCcgPT4gJ2NhdGVnb3J5JywNCgkJJ29mZnNldCcgPT4gJzAn LA0KCQknbGltaXQnID0+ICcwJywNCgkJJ21heGxpbWl0JyA9PiAnOTk5OTknLA0KCQkndGh1 bWJsaW1pdCcgPT4gJzk5OTk5JywNCgkJJ3RodW1ib2Zmc2V0JyA9PiAnMCcsDQoJCSd0aHVt YicgPT4gJzAnLA0KCQkndGh1bWJzaXplJyA9PiAnJywNCgkJJ3RleHQnID0+ICcnLA0KCQkn Y29sbGF0ZScgPT4gJycsDQoJCSdjb21ibycgPT4gJycsDQoJCSdwYWdlZm9ybScgPT4gJycs DQoJCSduYXZ3cmFwdGFnJyA9PiAndWwnLA0KCQknbmF2YnJlYWsnID0+ICdsaScsDQoJCSdu YXZjbGFzcycgPT4gJ3NtZF9nYWxsZXJ5X25hdicsDQoJCSdnYWxsZXJ5aWQnID0+ICc/NDo2 JywNCgkJJ3dyYXB0YWcnID0+ICcnLA0KCQknYnJlYWsnID0+ICcnLA0KCQknY2xhc3MnID0+ ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJLy8gQ2F0ZWdvcnkg cmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3BlY2lmaWVkIG9yIG5vdC4NCgkvLyBs QXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBsb2dpYyBzbyBpdCBoYXMgdG8gYmUg ZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAoZW1wdHkoJGNhdGVnb3J5KSAmJiBl bXB0eSgkaWQpKSA/IGZhbHNlIDogdHJ1ZTsNCgkkY2F0ZWdvcnkgPSBpc3NldCgkY2F0ZWdv cnkpID8gZG9TbGFzaCgkY2F0ZWdvcnkpIDogKCgkaWQ9PScnKSA/ICRwcmV0ZXh0WydjJ106 ICcnKTsNCg0KCS8vIEhhbmRsZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcgaWYgbm9u ZSBzcGVjaWZpZWQNCgkkdGhpbmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNo X2Zvcm0oJGZvcm0pOw0KCSR0aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBocmVmPSJ7 dXJsfSIgYWx0PSJ7YWx0fSI+PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6ICR0aGlu ZzsNCg0KCS8vIFBhZ2luZyBpbml0DQoJJHBhZ2luZyA9IDA7DQoJaWYgKCRwYWdlZm9ybSkg ew0KCQkkcGFnaW5nID0gMTsNCgkJJHBhZ2Vmb3JtID0gZmV0Y2hfZm9ybSgkcGFnZWZvcm0p Ow0KCX0NCg0KCS8vIFRoZSBnYWxsZXJ5IGlkZW50aWZpZXIgaXMgdXNlZCBmb3Iga2VlcGlu ZyB0cmFjayBvZiBuZXh0L3ByZXYgdGh1bWJuYWlsIHBhZ2UgbGlua3MNCgkkZ2FsbElEID0g Jyc7DQoJaWYgKCRnYWxsZXJ5aWQgPT0gJycgfHwgc3Vic3RyKCRnYWxsZXJ5aWQsMCwxKSA9 PSAiPyIpIHsNCgkJLy8gR2VuZXJhdGUgYSAoZmFpcmx5IGxpa2VseSkgdW5pcXVlIElEIGZv ciB0aGlzIGdhbGxlcnkgaW5zdGFuY2UNCgkJJGdhbGxUbXAgPSBtZDUoJGNhdGVnb3J5LiRp ZC4kZGlyZWN0b3J5LiRtYXRjaC4kc3VibGV2ZWwuJHNvcnQuJGxpbWl0LiRtYXhsaW1pdCk7 DQoJCWxpc3QoJGdhbGxMZW4sICRnYWxsU2tpcCkgPSBleHBsb2RlKCI6Iiwgc3Vic3RyKCRn YWxsZXJ5aWQsMSkpOw0KCQkkZ2FsbExlbiA9ICAoZW1wdHkoJGdhbGxMZW4pKSA/ICI0IiA6 ICRnYWxsTGVuOw0KCQkkZ2FsbFNraXAgPSAgKGVtcHR5KCRnYWxsU2tpcCkpID8gIjEiIDog JGdhbGxTa2lwOw0KCQlmb3IgKCRpZHggPSAwLCAkY250ID0gMDsgJGNudCA8ICRnYWxsTGVu OyAkY250KyssICRpZHggPSAoKCRpZHgrJGdhbGxTa2lwKSAlIHN0cmxlbigkZ2FsbFRtcCkp KSB7DQoJCQkkZ2FsbElEIC49ICRnYWxsVG1wWyRpZHhdOw0KCQl9DQoJfSBlbHNlIHsNCgkJ JGdhbGxJRCA9ICRnYWxsZXJ5aWQ7DQoJfQ0KCSRnYWxsSUQgPSAic21kX2dscnlfIi4kZ2Fs bElEOyAvLyBBdm9pZCAoYWxyZWFkeSBpbmNyZWRpYmx5IHVubGlrZWx5KSBuYW1lc3BhY2Ug Y2xhc2hlcw0KDQoJLy8gVGhlIG1hbm5lciBvZiBvYnRhaW5pbmcgZmlsZXMgZGlmZmVycyBp ZiB1c2luZyBkaXJlY3RvcnkgdnMgY2F0ZWdvcnkvaWQNCglpZiAoJGRpcmVjdG9yeSkgew0K CQkkcnMgPSBhcnJheSgpOw0KCQkkcnNhbGwgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9y eSwgMCwgJHN1YmxldmVsLCAkbWF0Y2gsICRkZWxpbSk7DQoJCWxpc3QoJG51bVBhZ2VzLCAk dGh1bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzYWxsLCAkZ2FsbElELCAkbGlt aXQsICRvZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAoJGxpbWl0PT0wKSA/ICRt YXhsaW1pdCA6ICRsaW1pdDsNCgkJJHJzID0gYXJyYXlfc2xpY2UoJHJzYWxsLCAkb2Zmc2V0 LCAkZGlybGltaXQpOw0KCQkkcG9zdE9yZGVyID0gYXJyYXkoKTsNCgkJJGZpeGVkT3JkZXIg PSAwOw0KCX0gZWxzZSB7DQoJCS8vIFByb2Nlc3MgY2F0ZWdvcmllcy9JRHMgYW5kIG1ha2Ug dXAgdGhlIGNydXggb2YgdGhlIHdoZXJlIGNsYXVzZS4NCgkJLy8gQ2xhdXNlIG9yZGVyID0g SURzIE9SIGNhdHMgQU5EICFjYXRzIEFORCAhSURzDQoJCSRjbGF1c2VbXSA9ICcxPTEnOw0K CQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KDQoJCS8vIFN1cnJvdW5kIGVhY2ggZW50cnkgaW4g dGhlIElEIGxpc3Qgd2l0aCBxdW90ZXMgYW5kIG1ha2UgYW4gU1FMICJpbiIgbGlzdA0KCQkk c3ViaW5mbyA9ICgkc3VibGV2ZWwpID8gImltYWdlOiIuJHN1YmxldmVsIDogJyc7DQoJCWxp c3QoJGlkaW5jLCAkaWRleGMpID0gc21kX2RvTGlzdCgkaWQsIHRydWUsICcnLCB0cnVlLCAk ZGVsaW0pOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMpID0gc21kX2RvTGlzdCgkY2F0ZWdv cnksIGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGltKTsNCgkJaWYgKCRpZGluYykgew0K CQkJJGNsYXVzZU9SW10gPSAnaWQgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGluYykuJyknOw0K CQl9DQoJCWlmICgkY2F0aW5jKSB7DQoJCQkkY2xhdXNlT1JbXSA9ICdjYXRlZ29yeSBJTiAo Jy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJCWlmICghZW1wdHkoJGNsYXVz ZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gaW1wbG9kZSgiIE9SICIsICRjbGF1c2VPUik7DQoJ CX0NCg0KCQkkY2xhdXNlID0gaW1wbG9kZSgiIEFORCAiLCAkY2xhdXNlKTsNCgkJJGNsYXVz ZSAuPSAoJGNhdGV4YykgPyAnIEFORCBjYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIs ICRjYXRleGMpLicpJyA6ICcnOw0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgaWQg Tk9UIElOICgnLmltcGxvZGUoIiwiLCAkaWRleGMpLicpJyA6ICcnOw0KDQoJCS8vIElmIGEg Y2F0ZWdvcnkvaWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3RoaW5n LCB1c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3QuDQoJCS8vIFRo aXMgZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcgb2Yg bWF0Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMgbm90aGluZy4NCgkJaWYg KCRjbGF1c2UgPT0gIjE9MSIgJiYgJGF0dGVtcHRNYXRjaCkgew0KCSAgCQkkY2xhdXNlID0g J2NhdGVnb3J5ID0gInNtZF8nIC5tdF9yYW5kKCkuICciJzsNCgkJfQ0KDQoJCWlmICgkZGVi dWcgPiAxKSB7DQoJCQllY2hvICIrKyBJTkNMVURFRC9FWENMVURFRCBJRHMgQU5EIENBVHMg KysiOw0KCQkJZG1wKCRpZGluYyk7DQoJCQlkbXAoJGlkZXhjKTsNCgkJCWRtcCgkY2F0aW5j KTsNCgkJCWRtcCgkY2F0ZXhjKTsNCgkJfQ0KDQoJCS8vIENvbnZlcnQgdGhlIHNvcnQgaW50 byBhIHZhbGlkIHNvcnRpbmcgaGllcmFyY2h5Lg0KCQkvLyBOb3RlIHRoYXQgcmFuZG9tIGlz IGEgc3BlY2lhbCBjYXNlIGFuZCB0aGUgZm9sbG93aW5nIHJ1bGVzIGFwcGx5Og0KCQkvLyAg MSkgQW55dGhpbmcgYXBwZWFyaW5nIGJlZm9yZSByYW5kb20gaXMgcGFzc2VkIHRvIHRoZSBk YXRhYmFzZSBxdWVyeSBmb3Igb3JkZXJpbmcNCgkJLy8gIDIpIEFzIHNvb24gYXMgcmFuZG9t IGlzIGVuY291bnRlcmVkLCB0aGUgcmVzdCBvZiB0aGUgc29ydCBzdHJpbmcgaXMgaWdub3Jl ZC4NCgkJLy8gICAgIFRoZSByZXN1bHRzZXQgd2lsbCBiZSBzb3J0ZWQgcmFuZG9tbHkgaW5z dGVhZA0KCQkvLyAgMykgSWYgcmFuZG9tIGFwcGVhcnMgZmlyc3QgaW4gdGhlIGxpc3QsIHRo ZSBkYXRhIGlzIHJldHJpZXZlZCByYW5kb21seSB0aGVuIHRoZQ0KCQkvLyAgICAgcmVtYWlu aW5nIG9wdGlvbnMgc29ydCB0aGUgcmVzdWx0c2V0DQoJCSRjbGF1c2VTb3J0ID0gYXJyYXko KTsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRydWxlID0gInNxbCI7DQoJCSRwb3N0 UHJlZml4ID0gIlNPUlRfIjsNCgkJJGZpeGVkT3JkZXIgPSAkcmFuZHNvcnQgPSBmYWxzZTsN CgkJJHNvcnQgPSBkb19saXN0KCRzb3J0LCAkZGVsaW0pOw0KCQlmb3IgKCRpZHggPSAwOyAk aWR4IDwgY291bnQoJHNvcnQpOyAkaWR4KyspIHsNCgkJCSRzb3J0X2RpciA9IGV4cGxvZGUo JyAnLCAkc29ydFskaWR4XSk7DQoJCQkkZGlyZWN0aW9uID0gJGNvbFJlZiA9ICcnOw0KCQkJ aWYgKGNvdW50KCRzb3J0X2RpcikgPD0gMSkgew0KCQkJCSRzb3J0X2RpclsxXSA9ICJhc2Mi Ow0KCQkJfQ0KCQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgk c29ydF9kaXJbMV0gPT0gImRlc2MiKSA/ICcgZGVzYycgOiAnIGFzYyc7DQoJCQl9IGVsc2Ug ew0KCQkJCSRkaXJlY3Rpb24gPSAoJHNvcnRfZGlyWzFdID09ICJkZXNjIikgPyAkcG9zdFBy ZWZpeC4nREVTQycgOiAkcG9zdFByZWZpeC4nQVNDJzsNCgkJCX0NCg0KCQkJc3dpdGNoICgk c29ydF9kaXJbMF0pIHsNCgkJCQljYXNlICdyYW5kb20nOg0KCQkJCQkkcnVsZSA9ICJwb3N0 IjsNCgkJCQkJaWYgKCRpZHggPT0gMCkgew0KCQkJCQkJJGNsYXVzZVNvcnRbXSA9ICdyYW5k KCknOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJJHJhbmRzb3J0ID0gdHJ1ZTsNCgkJCQkJfQ0K CQkJCQlicmVhazsNCgkJCQljYXNlICdmaXhlZCc6DQoJCQkJCS8vICdmaXhlZCcgb25seSB3 b3JrcyBvbiBpZHMNCgkJCQkJJGZpeGVkT3JkZXIgPSAoJGlkID09ICcnKSA/IGZhbHNlIDog dHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJJGNvbFJlZiA9IGFycmF5 X3NlYXJjaCgkc29ydF9kaXJbMF0sICRmaWVsZE1hcCk7DQoJCQkJCWJyZWFrOw0KCQkJfQ0K CQkJaWYgKCRydWxlID09ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJ CQkJJGNsYXVzZVNvcnRbXSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVs c2Ugew0KCQkJCWlmICghJHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7 DQoJCQkJCQkkcG9zdE9yZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sUmVmLCAic29ydCIg PT4gJGRpcmVjdGlvbik7DQoJCQkJCX0NCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoY291 bnQoJGNsYXVzZVNvcnQpID4gMCkgew0KCQkJJGNsYXVzZSAuPSAnIE9SREVSIEJZICcgLiBp bXBsb2RlKCIsIiwkY2xhdXNlU29ydCk7DQoJCX0NCgkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJ CWVjaG8gIisrIFdIRVJFIENMQVVTRSArKyI7DQoJCQlkbXAoJGNsYXVzZSk7DQoJCX0NCgkJ Ly8gVGhlIGRhdGFiYXNlIGZpZWxkcyByZXF1aXJlZA0KCQkkZmllbGRzID0gaW1wbG9kZSgi LCIsIGFycmF5X2tleXMoJGZpZWxkTWFwKSk7DQoNCgkJLy8gVGltZSB0byBncmFiIHRoZSBt YXRjaGluZyByb3dzIGZyb20gdGhlIGRhdGFiYXNlDQoJCSRyc2FsbCA9IHNhZmVfcm93cygk ZmllbGRzLCAndHhwX2ltYWdlJywgJGNsYXVzZSAuJyBMSU1JVCAnLiRvZmZzZXQuJywnLiRt YXhsaW1pdCk7DQoJCWxpc3QoJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpID0gc21k X2dldFBhZ2UoJHJzYWxsLCAkZ2FsbElELCAkbGltaXQsICRvZmZzZXQsICRwYWdpbmcpOw0K CQkkcnMgPSBzYWZlX3Jvd3MoJGZpZWxkcy4nLCB0eHBfY2F0ZWdvcnkudGl0bGUgQVMgY2F0 X3RpdGxlJywgJ3R4cF9pbWFnZSwgdHhwX2NhdGVnb3J5JywgJ3R4cF9jYXRlZ29yeS5uYW1l ID0gdHhwX2ltYWdlLmNhdGVnb3J5IEFORCB0eHBfY2F0ZWdvcnkudHlwZT0iaW1hZ2UiIEFO RCAnIC4kY2xhdXNlIC4nIExJTUlUICcgLiRvZmZzZXQuICcsJy4gKCgkbGltaXQ9PTApID8g JG1heGxpbWl0IDogJGxpbWl0KSk7DQoJfQ0KDQoJLy8gSXMgcG9zdC1vcmRlcmluZyByZXF1 aXJlZD8gRG8gaXQNCglpZiAoJHJhbmRzb3J0KSB7DQoJCXNodWZmbGUoJHJzKTsNCgl9IGVs c2UgaWYgKGNvdW50KCRwb3N0T3JkZXIpID4gMCkgew0KCQkvLyBUcmFuc2xhdGUgdGhlIHJv d3MgaW50byBjb2x1bW5zIHRoYXQgY2FuIGJlIHNvcnRlZA0KCQlmb3JlYWNoKCRycyBhcyAk a2V5ID0+ICRyb3cpIHsNCgkJCSRjb2xfaWRbJGtleV0gPSAkcm93WydpZCddOw0KCQkJJGNv bF9uYW1lWyRrZXldID0gJHJvd1snbmFtZSddOw0KCQkJJGNvbF9jYXB0aW9uWyRrZXldID0g JHJvd1snY2FwdGlvbiddOw0KCQkJJGNvbF9hbHRbJGtleV0gPSAkcm93WydhbHQnXTsNCgkJ CSRjb2xfY2F0ZWdvcnlbJGtleV0gPSAkcm93WydjYXRlZ29yeSddOw0KCQkJJGNvbF9kYXRl WyRrZXldID0gJHJvd1snZGF0ZSddOw0KCQkJJGNvbF9leHRbJGtleV0gPSAkcm93WydleHQn XTsNCgkJCSRjb2xfYXV0aG9yWyRrZXldID0gJHJvd1snYXV0aG9yJ107DQoJCQkkY29sX3db JGtleV0gPSAkcm93Wyd3J107DQoJCQkkY29sX2hbJGtleV0gPSAkcm93WydoJ107DQoJCQkk Y29sX3RodW1ibmFpbFska2V5XSA9ICRyb3dbJ3RodW1ibmFpbCddOw0KCQl9DQoJCS8vIE1h a2UgdXAgYW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0DQoJCWZv ciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkcG9zdE9yZGVyKTsgJGlkeCsrKSB7DQoJCQkk c29ydGFyZ3NbXSA9ICckY29sXycuJHBvc3RPcmRlclskaWR4XVsnY29sJ107DQoJCQkkc29y dGFyZ3NbXSA9ICRwb3N0T3JkZXJbJGlkeF1bJ3NvcnQnXTsNCgkJfQ0KCQkkc29ydGl0ID0g J2FycmF5X211bHRpc29ydCgnLmltcGxvZGUoIiwgIiwkc29ydGFyZ3MpLicsICRycyk7JzsN CgkJZXZhbCgkc29ydGl0KTsNCgl9DQoNCgkvLyBJcyBmaXhlZC1vcmRlciBvdXRwdXQgZGVz aXJlZD8gSWYgc28sIHJlLW9yZGVyIHRoZSAkcnMNCglpZiAoJGZpeGVkT3JkZXIpIHsNCgkJ JG9yZGVyZWRSUyA9IEFycmF5KCk7DQoJCSRpZ25vcmVMaXN0ID0gQXJyYXkoKTsNCgkJJHJl bWFpbmluZ1JTID0gQXJyYXkoKTsNCgkJLy8gU3VjayBvdXQgdGhlIGZpeGVkIGl0ZW1zIGZp cnN0DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkaWRpbmMpOyAkaWR4KyspIHsN CgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoIiciLiRyb3dbJ2lkJ10uIici ID09ICRpZGluY1skaWR4XSkgew0KCQkJCQkkb3JkZXJlZFJTW10gPSAkcm93Ow0KCQkJCQkk aWdub3JlTGlzdFtdID0gJHJvd1snaWQnXTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gVGFj ayBvbiB0aGUgcmVtYWluaW5nIHJvd3MNCgkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJ aWYgKCFpbl9hcnJheSgkcm93WydpZCddLCAkaWdub3JlTGlzdCkpIHsNCgkJCQkkcmVtYWlu aW5nUlNbXSA9ICRyb3c7DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVyZ2UoJG9yZGVy ZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBIYW5kbGUgdGh1bWJzaXplIC0gb2Yg bGltaXRlZCB1c2Ugbm93IGJ1dCBzdGlsbCBhdmFpbGFibGUNCgkkdGh1bWJXaWR0aCA9ICR0 aHVtYkhlaWdodCA9ICcnOw0KCSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9ICcnOw0K CWlmICgkdGh1bWJzaXplKSB7DQoJCSR0aHVtYlNpemVzID0gc21kX3NwbGl0KCR0aHVtYnNp emUsIGZhbHNlLCAiLFxzIiwgMCk7DQoJCWlmIChjb3VudCgkdGh1bWJTaXplcykgPT0gMSkg ew0KCQkJJHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxhY2UoIlteMC05 XSIsICcnLCAkdGh1bWJTaXplc1swXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2UoIlsw LTldIiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVtYkhV bml0cyA9ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9IGVs c2Ugew0KCQkJJHRodW1iV2lkdGggPSBlcmVnX3JlcGxhY2UoIlteMC05XSIsICcnLCAkdGh1 bWJTaXplc1swXSk7DQoJCQkkdGh1bWJIZWlnaHQgPSBlcmVnX3JlcGxhY2UoIlteMC05XSIs ICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJCQkkdW5pdHMgPSBlcmVnX3JlcGxhY2UoIlswLTld IiwgJycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICgkdW5pdHMgPT0g JycgJiYgJHRodW1iV2lkdGggIT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQkJ JHVuaXRzID0gZXJlZ19yZXBsYWNlKCJbMC05XSIsICcnLCAkdGh1bWJTaXplc1sxXSk7DQoJ CQkkdGh1bWJIVW5pdHMgPSAoJHVuaXRzID09ICcnICYmICR0aHVtYkhlaWdodCAhPSAnJykg PyAkdGh1bWJIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9DQoNCgkvLyBDb2xsYXRpb24gZGVm ZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0dXJuZWQgaXRlbS4NCgkvLyBJbnN0 ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0IGF0IHRoZSBlbmQgKGl0ZW1zIG1h eSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJhY3RlZCBpZiByZXF1aXJlZCkNCgkv L1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNob3J0Y3V0IHRvIHNwZWNpZnkgdGhh dCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mgb2YgIzEsICMyLCAjMyBldGMpIGFy ZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsNCgkJJGRibFF1b3RlID0gJHNnbFF1 b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxhdGVPcHRzID0gZG9fbGlzdCgkY29s bGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxhdGVPcHRzIGFzICRvcHRpb24pIHsN CgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAkcGFyYW1kZWxpbSk7DQoJCQkkY29s VHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJCS8vIFN1cHBseWluZyAncXVvdGUn IG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZhbnQgYXJyYXksIGltcGx5aW5nICJB TEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlzd2l0Y2ggKCRjb2xUeXBlKSB7DQoJ CQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVvdGUgPSAkaW5kZXhlczsNCgkJCQkJ YnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJCWNhc2UgInF1b3RlIjoNCgkJCQkJ JGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KDQoJ Ly8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmluYXRpb25zIG9mIHJlcGxhY2VtZW50 IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9LCAuLi4NCgkkY29tYm9zID0gYXJy YXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9IGRvX2xpc3QoJGNvbWJvLCAkZGVs aW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0RlZikgew0KCQkJbGlzdCgkZGVmUGFy dHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdEZWYsIGZhbHNlLCAnJywgZmFsc2Us ICRwYXJhbWRlbGltKTsNCgkJCSRkZWZOYW1lID0gInsiLmFycmF5X3NoaWZ0KCRkZWZQYXJ0 cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFtZV0gPSAkZGVmUGFydHNbMF07DQoJCX0NCgl9 DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNobyAiKysgQ09NQk9zICsrIjsNCgkJZG1wKCRj b21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3QgdGhlIG91dHB1dA0KCSRvdXQgPSBhcnJheSgp Ow0KCSRjb2xsYXRpb25zID0gYXJyYXkoKTsNCglpZiAoJGRlYnVnID4gMikgew0KCQllY2hv ICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRycyk7DQoJfQ0KCWlmICgkZGVidWcgPiAz KSB7DQoJCWVjaG8gIisrIEFWQUlMQUJMRSAnPycgVkFSUyArKyI7DQoJCWRtcCgkcHJldGV4 dCk7DQoJCWRtcCgkdGhpc2FydGljbGUpOw0KCX0NCg0KCWlmKCRycykgew0KCQkkaWR4ID0g MDsNCgkJJGN0ciA9IDE7DQoJCSRudW1JbWFnZXMgPSBjb3VudCgkcnMpOw0KCQlmb3JlYWNo KCRycyBhcyAkcm93KSB7DQoJCQlpZiAoJGRpcmVjdG9yeSkgew0KCQkJCSR1cmxQYXRoID0g JHJvd1sncGF0aCddLkRTOw0KCQkJfSBlbHNlIHsNCgkJCQkkdXJsUGF0aCA9IGh1LiRpbWdf ZGlyLkRTOw0KCQkJfQ0KCQkJJHRoZVRodW1iID0gJHVybFBhdGggLiAkcm93WydpZCddIC4g J3QnIC4gJHJvd1snZXh0J107DQoJCQkkZnVsbFNpemUgPSAkdXJsUGF0aCAuICRyb3dbJ2lk J10gLiAoKCR0aHVtYikgPyAidCIgOiAnJykgLiRyb3dbJ2V4dCddOw0KDQoJCQkvLyBJcyBh IHRodW1iL3RleHQgb2JqZWN0IHJlcXVpcmVkIHRoaXMgdGltZT8NCgkJCSRvYmplY3QgPSAn JzsNCgkJCWlmICgkaWR4ID49ICR0aHVtYm9mZnNldCAmJiAkaWR4IDwgJHRodW1ib2Zmc2V0 KyR0aHVtYmxpbWl0KSB7DQoJCQkJc3dpdGNoICgkdHlwZSkgew0KCQkJCQljYXNlICdpbWFn ZSc6DQoJCQkJCQkkb2JqZWN0ID0gKCR0ZXh0KSA/ICR0ZXh0IDogJzxpbWcgc3JjPSInLiR0 aGVUaHVtYi4nIicgLigoJHJvd1snYWx0J10pID8gJyBhbHQ9IicuJHJvd1snYWx0J10uJyIn IDogJycpIC4oKCR0aHVtYldpZHRoKSA/ICcgd2lkdGg9IicuJHRodW1iV2lkdGguJHRodW1i V1VuaXRzLiciJyA6ICcnKSAuKCgkdGh1bWJIZWlnaHQpID8gJyBoZWlnaHQ9IicuJHRodW1i SGVpZ2h0LiR0aHVtYkhVbml0cy4nIicgOiAnJykgLicgLz4nOw0KCQkJCQkJYnJlYWs7DQoJ CQkJfQ0KCQkJfQ0KDQoJCQkvLyBDb25zdHJ1Y3QgdGhlIHJlcGxhY2VtZW50IGFycmF5DQoJ CQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoDQoJCQkJCSd7aWR9JyA9PiAkcm93WydpZCddLA0K CQkJCQkne25hbWV9JyA9PiAkcm93WyduYW1lJ10sDQoJCQkJCSd7ZXh0fScgPT4gJHJvd1sn ZXh0J10sDQoJCQkJCSd7Y2F0ZWdvcnl9JyA9PiAkcm93WydjYXRlZ29yeSddLA0KCQkJCQkn e2NhdGVnb3J5X3RpdGxlfScgPT4gJHJvd1snY2F0X3RpdGxlJ10sDQoJCQkJCSd7YXV0aG9y fScgPT4gJHJvd1snYXV0aG9yJ10sDQoJCQkJCSd7aGFzdGh1bWJ9JyA9PiAkcm93Wyd0aHVt Ym5haWwnXSwNCgkJCQkJJ3t1cmx9JyA9PiAkZnVsbFNpemUsDQoJCQkJCSd7dGh1bWJ1cmx9 JyA9PiAkdGhlVGh1bWIsDQoJCQkJCSd7aW1hZ2VwYXRofScgPT4gJHVybFBhdGgsDQoJCQkJ CSd7aW1hZ2VkZWZ9JyA9PiBiYXNlbmFtZSgkZnVsbFNpemUpLA0KCQkJCQkne3RodW1iZGVm fScgPT4gYmFzZW5hbWUoJHRoZVRodW1iKSwNCgkJCQkJJ3thbHR9JyA9PiAkcm93WydhbHQn XSwNCgkJCQkJJ3t0aXRsZX0nID0+ICRyb3dbJ2NhcHRpb24nXSwNCgkJCQkJJ3t0aHVtYndp ZHRofScgPT4gJHRodW1iV2lkdGgsDQoJCQkJCSd7dGh1bWJoZWlnaHR9JyA9PiAkdGh1bWJI ZWlnaHQsDQoJCQkJCSd7dGh1bWJ3dW5pdHN9JyA9PiAkdGh1bWJXVW5pdHMsDQoJCQkJCSd7 dGh1bWJodW5pdHN9JyA9PiAkdGh1bWJIVW5pdHMsDQoJCQkJCSd7d2lkdGh9JyA9PiAkcm93 Wyd3J10sDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHJvd1snaCddLA0KCQkJCQkne2RhdGV9JyA9 PiAkcm93WydkYXRlJ10sDQoJCQkJCSd7b2JqZWN0fScgPT4gJG9iamVjdCwNCgkJCQkJJ3tn YWxsZXJ5aWR9JyA9PiAkZ2FsbElELA0KCQkJCQkne2luZGV4fScgPT4gJGlkeCwNCgkJCQkJ J3tjb3VudGVyfScgPT4gJGN0ciwNCgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFn ZXMsDQoJCQkJKTsNCg0KCQkJLy8gQXBwZW5kIGFueSBjb21ib3MNCgkJCWZvcmVhY2ggKCRj b21ib3MgYXMgJGRlZk5hbWUgPT4gJG5ld0RlZikgew0KCQkJCWlmICghYXJyYXlfa2V5X2V4 aXN0cygkZGVmTmFtZSwgJHJlcGxhY2VtZW50cykpIHsNCgkJCQkJJHJlcGxhY2VtZW50c1sk ZGVmTmFtZV0gPSBzdHJ0cigkbmV3RGVmLCAkcmVwbGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9 DQoNCgkJCS8vIFNvbG9zIGFyZSBpdGVtcyBpbiB0aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1 aXJlIGRldGFpbHMgZnJvbSBhIHNwZWNpZmljIHJvdy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0 aW9uDQoJCQkvLyBtb2RlLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFy cmF5IG9uIGFuIGFzLW5lZWRlZCBiYXNpcyB0byBzYXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xv UkUgPSAnL1x7KFthLXowLTldKykjJy4kY3RyLidcfS8nOw0KCQkJJG51bVNvbG9zID0gcHJl Z19tYXRjaF9hbGwoJHNvbG9SRSwgJHRoaW5nLCAkc29sb3MpOw0KCQkJZm9yICgkc29sb0N0 ciA9IDA7ICRzb2xvQ3RyIDwgJG51bVNvbG9zOyAkc29sb0N0cisrKSB7DQoJCQkJJGZpZWxk bmFtZSA9ICd7Jy4kc29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCQkkZ3Jh YmZpZWxkID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVu dHNbJGZpZWxkbmFtZV0gPSAkcmVwbGFjZW1lbnRzWyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJ CQlpZiAoJGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIFJFUExBQ0VNRU5UUyA6IElNQUdF ICIuJGN0ci4iICsrIjsNCgkJCQlkbXAoJHJlcGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJCS8v IEluIGNvbGxhdGUgbW9kZSB0aGUgZm9ybSBpcyBvbmx5IHBhcnNlZCBhdCB0aGUgZW5kOiBi dWlsZCBhIGNvbGxvc2FsIG11bHRpLWRpbWVuc2lvbiBhcnJheSBvZiBhbGwgaXRlbXMgaGVy ZQ0KCQkJaWYgKCRjb2xsYXRlKSB7DQoJCQkJZm9yZWFjaCAoJHJlcGxhY2VtZW50cyBhcyAk ZGVmTmFtZSA9PiAkZGVmVmFsKSB7DQoJCQkJCSRjb2xsYXRpb25zWyRkZWZOYW1lXVtdID0g JGRlZlZhbDsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCSRvdXRbXSA9IHBhcnNlKHN0cnRy KCR0aGluZywgJHJlcGxhY2VtZW50cykpOw0KCQkJfQ0KDQoJCQkkaWR4Kys7DQoJCQkkY3Ry Kys7DQoJCX0NCgkJaWYgKCRjb2xsYXRlKSB7DQoJCQlmb3JlYWNoICgkY29sbGF0aW9ucyBh cyAkaXRlbSA9PiAkbGlzdCkgew0KCQkJCS8vIFF1b3RlIHRoZSBsaXN0cyBpZiByZXF1aXJl ZA0KCQkJCSRsaXN0ID0gKGVtcHR5KCRkYmxRdW90ZSkgfHwgaW5fYXJyYXkoJGl0ZW0sICRk YmxRdW90ZSkpID8gZG9BcnJheSgkbGlzdCwgJ3NtZF9kb0RibFF1b3RlJykgOiAkbGlzdDsN CgkJCQkkbGlzdCA9IChlbXB0eSgkc2dsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkc2ds UXVvdGUpKSA/IGRvQXJyYXkoJGxpc3QsICdkb1F1b3RlJykgOiAkbGlzdDsNCgkJCQkkY29s bGF0aW9uc1skaXRlbV0gPSBpbXBsb2RlKCRkZWxpbSwgJGxpc3QpOw0KCQkJfQ0KCQkJaWYg KCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBDT0xMQVRJT05TICsrIjsNCgkJCQlkbXAo JGNvbGxhdGlvbnMpOw0KCQkJfQ0KCQkJJG91dFtdID0gcGFyc2Uoc3RydHIoJHRoaW5nLCAk Y29sbGF0aW9ucykpOw0KCQl9DQoNCgkJLy8gQWRkIHRoZSBwYWdpbmcgZmVhdHVyZXMgaWYg cmVxdWlyZWQNCgkJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCQkkbmF2b3V0 ID0gYXJyYXkoKTsNCgkJCSRuZXh0ID0gKCRudW1QYWdlcyA+IDEgJiYgJHRodW1QYWdlICE9 ICRudW1QYWdlcyk7DQoJCQkkcHJldiA9ICgkbnVtUGFnZXMgPiAxICYmICR0aHVtUGFnZSA+ IDEpOw0KDQoJCQkvLyBSZXBsYWNlIGFueSBwYWdpbmcgaW5mbyBpbiB0aGUgcXVlcnkgc3Ry aW5nDQoJCQkkcHJldlBhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJp J10sICRnYWxsSUQsICR0aHVtUGFnZS0xKTsNCgkJCSRuZXh0UGFnZSA9IHNtZF9hZGRRU1Zh cigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlKzEpOw0KCQkJ JHRoaXNQYWdlID0gc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2Fs bElELCAkdGh1bVBhZ2UpOw0KCQkJJGZpcnN0UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4 dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgMSk7DQoJCQkkbGFzdFBhZ2UgPSBzbWRfYWRk UVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJpJ10sICRnYWxsSUQsICRudW1QYWdlcyk7DQoN CgkJCS8vIExhYmVscyBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSByZXBsYWNlbWVudCB0YWcg YWZ0ZXIgYSBwYXJhbWRlbGltLg0KCQkJLy8gJ2VhcmxpZXInIGFuZCAnbGF0ZXInIGRvbid0 IGhhdmUgbGFiZWxzLiBBbnl0aGluZyBzcGVjaWZpZWQgYWZ0ZXIgcGFyYW1kZWxpbSBpcyB0 aGUgbWF4IG51bWJlciBvZiBwYWdlcyB0byBzaG93OyBlbXB0eSA9IGFsbCBwYWdlcw0KCQkJ JGxhYmVsID0gYXJyYXkoDQoJCQkJCSd7bmF2Zmlyc3R9JyA9PiAnRmlyc3QnLA0KCQkJCQkn e25hdnByZXZ9JyA9PiAnJmxhcXVvOycsDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICcnLA0K CQkJCQkne25hdnRoaXN9JyA9PiAkdGh1bVBhZ2UsDQoJCQkJCSd7bmF2dGhpc3VybH0nID0+ ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZsYXRlcn0nID0+ICcnLA0KCQkJCQkne25hdm5leHR9 JyA9PiAnJnJhcXVvOycsDQoJCQkJCSd7bmF2bGFzdH0nID0+ICdMYXN0JywNCgkJCQkpOw0K DQoJCQkkbGFiZWxSRSA9ICcvXHsobmF2W2Etel0rKScuJHBhcmFtZGVsaW0uJyguKz8pXH0v JzsNCgkJCSRudW1MYWJlbHMgPSBwcmVnX21hdGNoX2FsbCgkbGFiZWxSRSwgJHBhZ2Vmb3Jt LCAkbGFiZWxzKTsNCg0KCQkJZm9yICgkbGFiZWxDdHIgPSAwOyAkbGFiZWxDdHIgPCAkbnVt TGFiZWxzOyAkbGFiZWxDdHIrKykgew0KCQkJCSRmaWVsZG5hbWUgPSAneycuJGxhYmVsc1sx XVskbGFiZWxDdHJdLid9JzsNCgkJCQkkbGFiZWxbJGZpZWxkbmFtZV0gPSAkbGFiZWxzWzJd WyRsYWJlbEN0cl07DQoJCQkJJHBhZ2Vmb3JtID0gc3RyX3JlcGxhY2UoJGxhYmVsc1swXVsk bGFiZWxDdHJdLCAneycuJGxhYmVsc1sxXVskbGFiZWxDdHJdLid9JywgJHBhZ2Vmb3JtKTsN CgkJCX0NCg0KCQkJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJCQllY2hvICIrKyBQQUdJTkcgTEFC RUxTICsrIjsNCgkJCQlkbXAoJGxhYmVsKTsNCgkJCX0NCg0KCQkJLy8gR2VuZXJhdGUgJ2Vh cmxpZXInIGFuZCAnbGF0ZXInIGxpc3RzDQoJCQkkbnVtRWFybGllciA9IGludHZhbCgkbGFi ZWxbJ3tuYXZlYXJsaWVyfSddKTsNCgkJCSRudW1MYXRlciA9IGludHZhbCgkbGFiZWxbJ3tu YXZsYXRlcn0nXSk7DQoJCQkkbnVtRWFybGllciA9ICgkbnVtRWFybGllciAmJiAoJHRodW1Q YWdlLSRudW1FYXJsaWVyID4gMSkpID8gJG51bUVhcmxpZXIgOiAkdGh1bVBhZ2UtMTsNCgkJ CSRudW1MYXRlciA9ICgkbnVtTGF0ZXIgJiYgKCR0aHVtUGFnZSskbnVtTGF0ZXIgPCAkbnVt UGFnZXMpKSA/ICRudW1MYXRlciA6ICRudW1QYWdlcy0kdGh1bVBhZ2U7DQoJCQkkbmF2RWFy bGllciA9ICRuYXZMYXRlciA9IGFycmF5KCk7DQoJCQlmb3IgKCRpZHggPSAkdGh1bVBhZ2Ut JG51bUVhcmxpZXI7ICRpZHggPCAkdGh1bVBhZ2U7ICRpZHgrKykgew0KCQkJCSRuYXZFYXJs aWVyW10gPSAnPGEgaHJlZj0iJy5zbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3RfdXJp J10sICRnYWxsSUQsICRpZHgpLiciPicuJGlkeC4nPC9hPic7DQoJCQl9DQoJCQlmb3IgKCRp ZHggPSAkdGh1bVBhZ2UrMTsgJGlkeCA8PSAkdGh1bVBhZ2UrJG51bUxhdGVyOyAkaWR4Kysp IHsNCgkJCQkkbmF2TGF0ZXJbXSA9ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4 dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJGlkeCkuJyI+Jy4kaWR4Lic8L2E+JzsNCgkJ CX0NCgkJCSRuYXZFYXJsaWVyID0gZG9XcmFwKCRuYXZFYXJsaWVyLCAnJywgJG5hdmJyZWFr LCAnJyk7DQoJCQkkbmF2TGF0ZXIgPSBkb1dyYXAoJG5hdkxhdGVyLCAnJywgJG5hdmJyZWFr LCAnJyk7DQoNCgkJCS8vIE1ha2UgdXAgdGhlIHJlcGxhY2VtZW50cyBhcnJheSBmb3IgcGFn ZWZvcm0NCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ ICgoJHByZXYpID8gZG9UYWcoJzxhIGhyZWY9IicuJGZpcnN0UGFnZS4nIj4nLiRsYWJlbFsn e25hdmZpcnN0fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmZp cnN0fSddLCAkbmF2YnJlYWspKSwNCgkJCQkJJ3tuYXZwcmV2fScgPT4gKCgkcHJldikgPyBk b1RhZygnPGEgaHJlZj0iJy4kcHJldlBhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZwcmV2fSddLic8 L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdnByZXZ9J10sICRuYXZicmVh aykpLA0KCQkJCQkne25hdmVhcmxpZXJ9JyA9PiAkbmF2RWFybGllciwNCgkJCQkJJ3tuYXZ0 aGlzfScgPT4gZG9UYWcoJGxhYmVsWyd7bmF2dGhpc30nXSwgJG5hdmJyZWFrLCAnY3VycmVu dCcpLA0KCQkJCQkne25hdnRoaXN1cmx9JyA9PiBkb1RhZygnPGEgaHJlZj0iJy4kdGhpc1Bh Z2UuJyI+Jy4kbGFiZWxbJ3tuYXZ0aGlzdXJsfSddLic8L2E+JywgJG5hdmJyZWFrLCAnY3Vy cmVudCcpLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJG5hdkxhdGVyLA0KCQkJCQkne25hdm5l eHR9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8YSBocmVmPSInLiRuZXh0UGFnZS4nIj4nLiRs YWJlbFsne25hdm5leHR9J10uJzwvYT4nLCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7 bmF2bmV4dH0nXSwgJG5hdmJyZWFrKSksDQoJCQkJCSd7bmF2bGFzdH0nID0+ICgoJG5leHQp ID8gZG9UYWcoJzxhIGhyZWY9IicuJGxhc3RQYWdlLiciPicuJGxhYmVsWyd7bmF2bGFzdH0n XS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZsYXN0fSddLCAkbmF2 YnJlYWspKSwNCgkJCQkJJ3t0b3RhbGltYWdlc30nID0+ICRudW1JbWFnZXMsDQoJCQkJCSd7 dG90YWxwYWdlc30nID0+ICRudW1QYWdlcywNCgkJCQkpOw0KDQoJCQlpZiAoJGRlYnVnID4g MCkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBSRVBMQUNFTUVOVFMgKysiOw0KCQkJCWRtcCgk cmVwbGFjZW1lbnRzKTsNCgkJCX0NCgkJCS8vIFBlcmZvcm0gYWxsIHN1YnN0aXR1dGlvbnMg YW5kIHdyYXAgdGhlIGVudGlyZSBsb3QgaWYgcmVxdWlyZWQNCgkJCSRuYXZvdXRbXSA9IHBh cnNlKHN0cnRyKCRwYWdlZm9ybSwgJHJlcGxhY2VtZW50cykpOw0KCQkJJG91dFtdID0gZG9X cmFwKCRuYXZvdXQsICRuYXZ3cmFwdGFnLCAnJywgJG5hdmNsYXNzKTsNCgkJfQ0KCQlpZiAo JGRlYnVnID4gMikgew0KCQkJZWNobyAiKysgRklOQUwgT1VUUFVUICsrIjsNCgkJCWRtcCgk b3V0KTsNCgkJfQ0KCX0NCg0KCXJldHVybiBkb1dyYXAoJG91dCwgJHdyYXB0YWcsICRicmVh aywgJGNsYXNzKTsNCn0NCg0KLy8gUmV0dXJuIGFuIGV4cGFuZGVkIGxpc3Qgb2YgaXRlbXM6 DQovLyAxKSBBbnl0aGluZyBjb250YWluaW5nICc/JyBvciAnIScgaXMgY2hlY2tlZCBmb3Ig YSBtYXRjaCB3aXRoIGEgVFhQIGZpZWxkDQovLyAyKSBBbnkgcmFuZ2VzIG9mIGl0ZW1zIGFy ZSBleHBhbmRlZCAoZS5nLiA0LTcgPSA0LDUsNiw3KQ0KLy8gMykgVFhQIGZpZWxkcyBtYXkg dGhlbXNlbHZlcyBiZSBsaXN0cyBvciByYW5nZXMNCi8vIDQpIEFueXRoaW5nIHRoYXQgaXMg bm90IGEgVFhQIGZpZWxkIGlzIHVzZWQgdmVyYmF0aW0NCi8vIDUpIFRoZSBpdGVtcyBhcmUg cmV0dXJuZWQgYXMgMiBsaXN0czsgaW5jbHVzaW9uIGFuZCBleGNsdXNpb24NCi8vIEFyZ3M6 DQovLyAgbHN0ID0gdGhlIGxpc3QgYXMgYSBkZWxpbWl0ZWQgc3RyaW5nDQovLyAgcm5nID0g d2hldGhlciB0byBhbGxvdyByYW5nZXMgb3Igbm90IChib29sKQ0KLy8gIHN1YiA9IHRoZSB0 eXBlIG9mIHN1YmNhdGVnb3J5IHRvIHRyYXZlcnNlIChpbWFnZSwgZmlsZSwgbGluaywgYXJ0 aWNsZSwgbm9uZT0iIikgYW5kIGhvdyBtYW55IGxldmVscyB0byBnbyBkb3duIChlLmcuIGlt YWdlOjIpDQovLyAgcXRlID0gd2hldGhlciB0byBxdW90ZSBlYWNoIGl0ZW0gaW4gdGhlIGFy cmF5IG9yIG5vdCAoYm9vbCkNCi8vICBkbG0gPSB0aGUgZGVsaW1pdGVyIChzdHJpbmcpDQpp ZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2RvTGlzdCIpKSB7DQpmdW5jdGlvbiBzbWRfZG9M aXN0KCRsc3QsICRybmc9dHJ1ZSwgJHN1Yj0iIiwgJHF0ZT10cnVlLCAkZGxtPSIsIikgew0K CWdsb2JhbCAkdGhpc2FydGljbGUsICRwcmV0ZXh0Ow0KDQoJJGluYyA9ICRleGMgPSBhcnJh eSgpOw0KCSRsc3QgPSBkb19saXN0KCRsc3QsICRkbG0pOw0KCSRtb2RSRSA9ICcvKFw/fFwh KShbQS1aYS16MC05X1wtIF0rKS8nOw0KCWZvcmVhY2ggKCRsc3QgYXMgJGl0ZW0pIHsNCgkJ JG1vZCA9IDA7IC8vIDAgPSBpbmNsdWRlLCAxID0gZXhjbHVkZQ0KCQkkbnVtTW9kcyA9IHBy ZWdfbWF0Y2hfYWxsKCRtb2RSRSwgJGl0ZW0sICRtb2RzKTsNCg0KCQlmb3IgKCRtb2RDdHIg PSAwOyAkbW9kQ3RyIDwgJG51bU1vZHM7ICRtb2RDdHIrKykgew0KCQkJLy8gbW9kICJ0eXBl IiBpcyBnb3Zlcm5lZCBieSB0aGUgZmlyc3Qgb25lIGZvdW5kIG9ubHkuIGkuZS4gaWYgImFy dGljbGUtP2MhcyIgd2FzIHVzZWQgaW4gb25lIGZpZWxkDQoJCQkvLyBpdCB3b3VsZCBiZSBh biAiaW5jbHVkZSIgb2YgdGhlIHdvcmQgImFydGljbGUtIiBwbHVzIHRoZSBjYXRlZ29yeSBh bmQgc2VjdGlvbiBjb25jYXRlbmF0ZWQNCgkJCSRtb2QgPSAoJG1vZHNbMV1bMF0gPT09ICIh IikgPyAxIDogMDsNCgkJCSRtb2RDaGFyID0gJG1vZHNbMV1bJG1vZEN0cl07DQoJCQkkbW9k SXRlbSA9IHRyaW0oJG1vZHNbMl1bJG1vZEN0cl0pOw0KCQkJJGxvd2l0ZW0gPSBzdHJ0b2xv d2VyKCRtb2RJdGVtKTsNCgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRsb3dpdGVtLCAkcHJl dGV4dCkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFyLiRtb2RJdGVtLCAk cHJldGV4dFskbG93aXRlbV0sICRpdGVtKTsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNh cnRpY2xlWyRsb3dpdGVtXSkpIHsNCgkJCQkkaXRlbSA9IHN0cl9yZXBsYWNlKCRtb2RDaGFy LiRtb2RJdGVtLCAkdGhpc2FydGljbGVbJGxvd2l0ZW1dLCAkaXRlbSk7DQoJCQl9IGVsc2Ug ew0KCQkJCSRpdGVtID0gc3RyX3JlcGxhY2UoJG1vZENoYXIuJG1vZEl0ZW0sICRtb2RJdGVt LCAkaXRlbSk7DQoJCQl9DQoJCX0NCg0KCQkvLyBIYW5kbGUgcmFuZ2VzIG9mIHZhbHVlcw0K CQlpZiAoJHJuZyAmJiBwcmVnX21hdGNoKCcvXihcZCspXC0oXGQrKSQvJywgJGl0ZW0pKSB7 DQoJCQlsaXN0KCRsbywgJGhpKSA9IGV4cGxvZGUoIi0iLCAkaXRlbSwgMik7DQoJCQkkaXRl bSA9IGltcGxvZGUoJGRsbSwgcmFuZ2UoJGxvLCAkaGkpKTsNCgkJfQ0KDQoJCS8vIEl0ZW0g bWF5IGJlIGVtcHR5OyBpZ25vcmUgaXQgaWYgc28NCgkJaWYgKCRpdGVtKSB7DQoJCQkkaXRl bSA9IGRvX2xpc3QoJGl0ZW0sICRkbG0pOw0KCQkJLy8gSGFuZGxlIHN1Yi1jYXRlZ29yaWVz DQoJCQlpZiAoJHN1Yikgew0KCQkJCWxpc3QoJHN1YnR5cGUsICRsZXZlbCkgPSBleHBsb2Rl KCI6IiwgJHN1Yik7DQoJCQkJJGxldmVsID0gKGVtcHR5KCRsZXZlbCkpID8gMCA6ICRsZXZl bDsNCgkJCQkkbGV2ZWwgPSAoc3RydG9sb3dlcigkbGV2ZWwpPT0iYWxsIikgPyA5OTk5OSA6 ICRsZXZlbDsNCgkJCQlmb3JlYWNoICgkaXRlbSBhcyAkY2F0KSB7DQoJCQkJCSRjYXRzID0g Z2V0VHJlZShkb3NsYXNoKCRjYXQpLCAkc3VidHlwZSk7DQoJCQkJCWZvcmVhY2ggKCRjYXRz IGFzICRqZHggPT4gJHZhbCkgew0KCQkJCQkJaWYgKCRjYXRzWyRqZHhdWydsZXZlbCddIDw9 ICRsZXZlbCkgew0KCQkJCQkJCSRpdGVtW10gPSAkY2F0c1skamR4XVsnbmFtZSddOw0KCQkJ CQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBRdW90ZSBpZiBhc2tlZA0KCQkJ JGl0ZW0gPSAoJHF0ZSkgPyBkb0FycmF5KCRpdGVtLCAnZG9RdW90ZScpIDogJGl0ZW07DQoJ CQlpZiAoJG1vZCA9PT0gMCkgew0KCQkJCSRpbmMgPSBhcnJheV91bmlxdWUoYXJyYXlfbWVy Z2UoJGluYywgJGl0ZW0pKTsNCgkJCX0gZWxzZSB7DQoJCQkJJGV4YyA9IGFycmF5X3VuaXF1 ZShhcnJheV9tZXJnZSgkZXhjLCAkaXRlbSkpOw0KCQkJfQ0KCQl9DQoJfQ0KCXJldHVybiBh cnJheSgkaW5jLCAkZXhjKTsNCn0NCn0NCg0KLy8gQWx0ZXJuYXRpdmUgdG8gdGhlIGNvcmUn cyBkb1F1b3RlKCkuIFRoaXMgb25lIGRibC1xdW90ZXMgaW5zdGVhZCBvZiBzZ2wtcXVvdGVz DQppZiAoIWZ1bmN0aW9uX2V4aXN0cygic21kX2RvRGJsUXVvdGUiKSkgew0KZnVuY3Rpb24g c21kX2RvRGJsUXVvdGUoJHZhbCkgew0KCXJldHVybiAnIicuJHZhbC4nIic7DQp9DQp9DQoN Ci8vIFdvcmsgb3V0IHdoaWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9uIGFuZCByZXR1cm4g dGhlIHJlbGV2YW50IGluZm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwg JGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKSB7DQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFn aW5nKSB7DQoJCSRudW1UaHVtcyA9IGNvdW50KCRycyk7DQoJCSRudW1QYWdlcyA9ICgkbnVt VGh1bXMgPiAwKSA/IGNlaWwoJG51bVRodW1zLyRsaW1pdCkgOiAxOw0KCQkkdGh1bVBhZ2Ug PSAoIWdwcygkZ2FsbElEKSkgPyAxIDogZ3BzKCRnYWxsSUQpOw0KCQkkb2Zmc2V0ID0gKCR0 aHVtUGFnZSAtIDEpICogJGxpbWl0Ow0KCX0gZWxzZSB7DQoJCS8vIE5vIHBhZ2luZyByZXF1 aXJlZA0KCQkkbnVtUGFnZXMgPSAxOw0KCQkkdGh1bVBhZ2UgPSAxOw0KCX0NCglyZXR1cm4g YXJyYXkoJG51bVBhZ2VzLCAkdGh1bVBhZ2UsICRvZmZzZXQpOw0KfQ0KDQovLyBSZWFkIHRo ZSBnaXZlbiBkZWxpbWl0ZWQgZGlyZWN0b3JpZXMgYW5kIGdldCBhbGwgZmlsZXMgdGhhdCBt YXRjaC4NCi8vIEdvIGRvd24gYXMgbWFueSBzdWJkaXIgbGV2ZWxzIGFzIGdpdmVuIGluIHRo ZSAkc3ViIHBhcmFtZXRlcg0KZnVuY3Rpb24gc21kX2RvRGlyZWN0b3J5KCRsc3QsICRsdmw9 MCwgJHN1Yj0wLCAkbWF0Y2g9IiIsICRkbG09IiwiLCAkY3RyPTApIHsNCglsaXN0KCRkaXJp bmMsICRkaXJleGMpID0gc21kX2RvTGlzdCgkbHN0LCBmYWxzZSwgJHN1YiwgZmFsc2UsICRk bG0pOw0KCWxpc3QoJG1hdGNoaW5jLCAkbWF0Y2hleGMpID0gc21kX2RvTGlzdCgkbWF0Y2gs IGZhbHNlLCAnJywgZmFsc2UsICRkbG0pOw0KCSRtYXRjaGluYyA9ICIuKiIgLigoJG1hdGNo aW5jKSA/ICIoIiAuaW1wbG9kZSgifCIsJG1hdGNoaW5jKS4iKSsuKiIgOiAiIik7DQoJJG1h dGNoZXhjID0gKCRtYXRjaGV4YykgPyAiLiooIiAuaW1wbG9kZSgifCIsJG1hdGNoZXhjKS4i KSsuKiIgOiAic21kX2dscnlfIi5tdF9yYW5kKCk7DQoNCgkkc3ViID0gKGVtcHR5KCRzdWIp KSA/IDAgOiAkc3ViOw0KCSRzdWIgPSAoc3RydG9sb3dlcigkc3ViKT09ImFsbCIpID8gOTk5 OTkgOiAkc3ViOw0KCSRmaWxlTGlzdCA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJGRpcmluYyBh cyAkZGlyKSB7DQoJCWlmICgkaGFuZGxlID0gQG9wZW5kaXIoJGRpcikpIHsNCgkJCXdoaWxl ICgoJGZpbGUgPSBAcmVhZGRpcigkaGFuZGxlKSkgIT09IGZhbHNlKSB7DQoJCQkJJGZ1bGxw YXRoID0gJGRpci5EUy4kZmlsZTsNCgkJCQlpZiAocHJlZ19tYXRjaCgiLyIuJG1hdGNoaW5j LiIvIiwgJGZ1bGxwYXRoKSAmJiAhcHJlZ19tYXRjaCgiLyIuJG1hdGNoZXhjLiIvIiwgJGZ1 bGxwYXRoKSkgew0KCQkJCQlpZiAoaXNfZGlyKCRmdWxscGF0aCkpIHsNCgkJCQkJCWlmICgo JGZpbGUgPT0gIi4iKSB8fCAoJGZpbGU9PSAiLi4iKSB8fCAoaW5fYXJyYXkoJGZpbGUsICRk aXJleGMpKSB8fCAoJGx2bCA+PSAkc3ViKSkgew0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJ fSBlbHNlIHsNCgkJCQkJCQkvLyBSZWN1cnNlIHRoZSBzdWJkaXIuIE5vdGUgdGhhdCB0aGUg JyEnIGlzIHRlbXBvcmFyaWx5IGFkZGVkIGJhY2sgdG8gZWFjaCBkaXJleGMgaXRlbQ0KCQkJ CQkJCSR0bXAgPSAkZGlyZXhjOyAvLyBEb24ndCBvdmVyd3JpdGUgdGhlIG9yaWdpbmFsIGFy cmF5DQoJCQkJCQkJYXJyYXlfdW5zaGlmdCgkdG1wLCAkZnVsbHBhdGgpOw0KCQkJCQkJCSRz dWJGaWxlcyA9IHNtZF9kb0RpcmVjdG9yeShpbXBsb2RlKCRkbG0uIiEiLCAkdG1wKSwgJGx2 bCsxLCAkc3ViLCAkbWF0Y2gsICRkbG0sICRjdHIpOw0KCQkJCQkJCSRmaWxlTGlzdCA9IGFy cmF5X21lcmdlKCRmaWxlTGlzdCwgJHN1YkZpbGVzKTsNCgkJCQkJCQkkY3RyICs9IGNvdW50 KCRzdWJGaWxlcyk7DQoJCQkJCQkJY29udGludWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7 DQoJCQkJCQkkZmlsZXN0YXQgPSBzdGF0KCRmdWxscGF0aCk7DQoJCQkJCQkkaW1nc2l6ZSA9 IGdldGltYWdlc2l6ZSgkZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydwYXRo J10gPSAkZGlyOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWyduYW1lJ10gPSBiYXNlbmFtZSgk ZnVsbHBhdGgpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydpZCddID0gcHJlZ19yZXBsYWNl KCcvXC4uKyQvJywgJycsICRmaWxlKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYWx0J10g PSAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2FwdGlvbiddID0gJyc7DQoJCQkJCQkk cGFydHMgPSBleHBsb2RlKERTLCAkZGlyKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnY2F0 ZWdvcnknXSA9IChjb3VudCgkcGFydHMpID4gMSkgPyBlbmQoJHBhcnRzKSA6ICcnOw0KCQkJ CQkJJGZpbGVMaXN0WyRjdHJdWydhdXRob3InXSA9IHN0cnZhbCgkZmlsZXN0YXRbJ3VpZCdd KTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnZGF0ZSddID0gc3RyZnRpbWUoIiVZLSVtLSVk ICVIOiVNOiVTIiwgJGZpbGVzdGF0WydjdGltZSddKTsNCgkJCQkJCSRwYXJ0cyA9IGV4cGxv ZGUoIi4iLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2V4dCddID0gKGNvdW50 KCRwYXJ0cykgPiAxKSA/ICIuIi5lbmQoJHBhcnRzKSA6ICcnOw0KCQkJCQkJJGZpbGVMaXN0 WyRjdHJdWyd3J10gPSAoaXNfYXJyYXkoJGltZ3NpemUpKSA/IHN0cnZhbCgkaW1nc2l6ZVsw XSkgOiAnJzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaCddID0gKGlzX2FycmF5KCRpbWdz aXplKSkgPyBzdHJ2YWwoJGltZ3NpemVbMV0pIDogJyc7DQoJCQkJCX0NCgkJCQkJJGN0cisr Ow0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZiAoJGhhbmRsZSkgew0KCQkJQGNsb3NlZGlyKCRo YW5kbGUpOw0KCQl9DQoJfQ0KCXJldHVybiAkZmlsZUxpc3Q7DQp9DQoNCmlmICghZnVuY3Rp b25fZXhpc3RzKCJzbWRfcmVtb3ZlUVNWYXIiKSkgew0KZnVuY3Rpb24gc21kX3JlbW92ZVFT VmFyKCR1cmwsICRrZXkpIHsNCgkkdXJsID0gcHJlZ19yZXBsYWNlKCcvKC4qKShcP3wmKScg LiAka2V5IC4gJz1bXiZdKz8oJikoLiopL2knLCAnJDEkMiQ0JywgJHVybCAuICcmJyk7DQoJ JHVybCA9IHN1YnN0cigkdXJsLCAwLCAtMSk7DQoJcmV0dXJuICgkdXJsKTsNCn0NCn0NCg0K aWYgKCFmdW5jdGlvbl9leGlzdHMoInNtZF9hZGRRU1ZhciIpKSB7DQpmdW5jdGlvbiBzbWRf YWRkUVNWYXIoJHVybCwgJGtleSwgJHZhbHVlKSB7DQoJJHVybCA9IHNtZF9yZW1vdmVRU1Zh cigkdXJsLCAka2V5KTsNCglpZiAoc3RycG9zKCR1cmwsICc/JykgPT09IGZhbHNlKSB7DQoJ CXJldHVybiAoJHVybCAuICc/JyAuICRrZXkgLiAnPScgLiAkdmFsdWUpOw0KCX0gZWxzZSB7 DQoJCXJldHVybiAoJHVybCAuICcmJyAuICRrZXkgLiAnPScgLiAkdmFsdWUpOw0KCX0NCn0N Cn0NCiI7czo0OiJ0eXBlIjtzOjE6IjAiO3M6NDoiaGVscCI7czozNjQ0NDoiCTxwPjxkaXYg aWQ9InNtZF9oZWxwIj48L3A+CgoJPGgxIGlkPSJ0b3AiPnNtZF9nYWxsZXJ5PC9oMT4KCgk8 aDIgaWQ9ImNvbnRlbnRzIj5Db250ZW50czwvaDI+CgoJPHVsPgoJCTxsaT48YSBocmVmPSIj ZmVhdHVyZXMiPkZlYXR1cmVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNhdXRob3IiPkF1 dGhvcjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8g VW5pbnN0YWxsYXRpb248L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3VzYWdlIj5UYWcgdXNh Z2U8L2E+Cgk8dWw+CgkJPGxpPjxhIGhyZWY9IiNzbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8 L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+R2FsbGVyeSBmb3JtPC9h PgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcmVwX2dhbGxlcnkiPlJlcGxhY2VtZW50IHRhZ3M8 L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3BhZ2luZ19mb3JtIj5QYWdp bmcgZm9ybTwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3JlcF9wYWdpbmciPlJlcGxhY2Vt ZW50IHRhZ3M8L2E+PC9saT4KCTwvdWw+PC9saT4KCQk8bGk+PGEgaHJlZj0iI2NvbWJvcyI+ Q29tYm9zPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjb2xsYXRlX21vZGUiPkNvbGxhdGUg bW9kZTwvYT48L2xpPgoJPC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjZXhhbXBsZXMiPkV4 YW1wbGVzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwv YT48L2xpPgoJCTxsaT48YSBocmVmPSIjY3JlZGl0cyI+Q3JlZGl0czwvYT48L2xpPgoJPC91 bD4KCgk8aDIgaWQ9ImZlYXR1cmVzIj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBw b3J0cyBhbGwgY3VycmVudCBhbmQgKHByb2JhYmx5KSBmdXR1cmUgZ2FsbGVyeSBzY3JpcHRz IGluY2x1ZGluZyB0aHVtYnBvcCwgcm9sbG92ZXIsIHRvb2x0aXAsIGxpZ2h0Ym94LCBsaXRl Ym94LCBzbGltYm94LCBtb29uYm94LCB0aGlja2JveCwgc2xpZGVzaG93LCBmYW5jeXpvb20s IGV0YzwvbGk+CgkJPGxpPlB1bGwgaW1hZ2VzIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGRhdGFiYXNlIChvciBvcHRpb25hbGx5IGEgbGlzdCBvZiBkaXJlY3Rv cmllcykgdGhhdCBtYXRjaCBjYXRlZ29yaWVzIG9yIElEczwvbGk+CgkJPGxpPlVzZSBhcnRp Y2xlIGZpZWxkcyB0byBob2xkIGxpc3RzIG9mIGltYWdlIGNhdGVnb3JpZXMvSURzIGZvciBh cnRpY2xlLXNwZWNpZmljIGdhbGxlcmllczwvbGk+CgkJPGxpPk11bHRpLWxldmVsIHN1Yi1j YXRlZ29yeSBzdXBwb3J0PC9saT4KCQk8bGk+R2FsbGVyeSBsYXlvdXQgaXMgZGVmaW5lZCBp biBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm08L2xpPgoJCTxsaT5EaXJl Y3QtYWNjZXNzIHBhZ2luYXRpb24gaXMgc3VwcG9ydGVkIGFuZCB0aGUgbGF5b3V0IG9mIHBh Z2luZyBmZWF0dXJlcyBpcyBjb250cm9sbGVkIGJ5IGEgc2Vjb25kIGZvcm08L2xpPgoJCTxs aT5Vc2VzIGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBsaWtlIHRoZSB3ZXRfZm9yX2VhY2hf aW1hZ2UgcGx1Z2luPC9saT4KCTwvdWw+CgoJPGgyIGlkPSJhdXRob3IiPkF1dGhvcjwvaDI+ CgoJPHA+PGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2NvbW1lbnRGb3JtIj5TdGVm IERhd3NvbjwvYT4uIEZvciBvdGhlciBzb2Z0d2FyZSBieSBtZSwgb3IgdG8gbWFrZSBhIGRv bmF0aW9uLCBzZWUgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29m dHdhcmUgcGFnZTwvYT4uPC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8g VW5pbnN0YWxsYXRpb248L2gyPgoKCTxwPkRvd25sb2FkIHRoZSBwbHVnaW4gZnJvbSBlaXRo ZXIgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLm9yZy9wbHVnaW5zLzk1Ny9zbWRfZ2Fs bGVyeSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9zdGVm ZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBjb2RlIGludG8g dGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7IFBsdWdpbnMg cGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRoZSA8YSBocmVm PSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9MjY0ODIi PmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQgb24gdGhlIHN1 Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRvIHJlbW92ZSB0 aGUgcGx1Z2luLCBzaW1wbHkgZGVsZXRlIGl0IGZyb20gdGhlIEFkbWluLSZndDtQbHVnaW5z IHRhYi48L3A+CgoJPGgyIGlkPSJ1c2FnZSI+VXNhZ2U8L2gyPgoKCTxwPkZvciBzb21lIGlk ZWFzIG9uIHVzYWdlIHNjZW5hcmlvcywgc2VlIHRoZSA8YSBocmVmPSIjZXhhbXBsZXMiPmV4 YW1wbGVzPC9hPi48L3A+CgoJPHA+VGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0IHRoaXMgcGx1 Z2luIGFjdHMgYXMgYSBmbGV4aWJsZSBpbWFnZSBmaWx0ZXI7IG5vdGhpbmcgbW9yZS4gVGhl IHBsdWdpbiBvcHRpb25zIGdvdmVybiB3aGF0IGltYWdlcyBhcmUgcHVsbGVkIG91dCBvZiB0 aGUgZGF0YWJhc2UgYW5kIHRoZXkgYXJlIHNvcnRlZCBpbnRvIHdoYXRldmVyIG9yZGVyIHlv dSBsaWtlLjwvcD4KCgk8cD5BZnRlciB0aGF0LCBlYWNoIGltYWdlICYjODIxMjsgb25lIGJ5 IG9uZSAmIzgyMTI7IGhhcyBhbGwgaXRzIGF0dHJpYnV0ZXMgcGFzc2VkIHRvIHRoZSA8Y29k ZT5mb3JtPC9jb2RlPiBvZiB5b3VyIGNob2ljZTsgeW91IHNpbXBseSBjaG9vc2UgdG8gZGlz cGxheSB3aGljaGV2ZXIgaW1hZ2UgYXR0cmlidXRlcyB5b3UgbGlrZSBpbiB0aGlzIGZvcm0u IFRoaXMgbWVhbnMgYW55IGltYWdlIGF0dHJpYnV0ZXMgY2FuIGJlICYjODIyMDtpbmplY3Rl ZCYjODIyMTsgZGlyZWN0bHkgaW50byBhbnkgbWFya3VwOyBpdCBjb3VsZCBiZSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWdzLCBpdCBjb3VsZCBiZSBjb250ZW50LCBpdCBj b3VsZCBiZSBqYXZhc2NyaXB0LCBvciA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPjsg YW55dGhpbmcuIFBhZ2luYXRpb24gd29ya3MgdGhlIHNhbWUgd2F5LCBhbGxvd2luZyB5b3Ug dG8gc3BlY2lmeSBob3cgdXNlcnMgY2FuIHN0ZXAgdGhyb3VnaCB5b3VyIGltYWdlIGdhbGxl cmllcy48L3A+CgoJPHA+VGhlcmUgaXMgYWxzbyBhIHNwZWNpYWwgbW9kZSBjYWxsZWQgJiM4 MjIwO2NvbGxhdGUmIzgyMjE7IHRoYXQgYWxsb3dzIHlvdSB0byBjb2xsZWN0IGFsbCBpbWFn ZSBhdHRyaWJ1dGVzIHRvZ2V0aGVyIGludG8gYSBzZXJpZXMgb2YgYmlnIGxvbmcgbGlzdHMg PGVtPndpdGhvdXQ8L2VtPiBjYWxsaW5nIHRoZSBmb3JtIGV2ZXJ5IHRpbWUuIFRoZSBmb3Jt IGlzIHRoZW4gb25seSBwcm9jZXNzZWQgb25jZSBhdCB0aGUgZW5kLjwvcD4KCgk8cD5CZXR3 ZWVuIHRoZXNlIHR3byBtb2RlcyB5b3UgPGVtPnNob3VsZDwvZW0+IGJlIGFibGUgdG8gcmVh bGlzZSBhbnkgZ2FsbGVyeWluZyBzb2x1dGlvbjsgbm93IGFuZCBpbiBmdXR1cmUuPC9wPgoK CTxoMyBjbGFzcz0idGFnICIgaWQ9InNtZF9nYWxsZXJ5Ij5zbWRfZ2FsbGVyeTwvaDM+CgoJ PHAgY2xhc3M9InRhZy1zdW1tYXJ5Ij5QbGFjZSBvbmUgb3IgbW9yZSBzbWRfZ2FsbGVyeSB0 YWdzIGluIGFueSBhcnRpY2xlLCBwYWdlIG9yIGZvcm0sIHN1cHBseSBhbnkgb2YgdGhlIGZv bGxvd2luZyBvcHRpb25zIHRvIGNvbmZpZ3VyZSBpdCBhbmQgdXNlIGEgZm9ybSB0byBkZWZp bmUgaG93IHRoZSBnYWxsZXJ5IGlzIGRpc3BsYXllZC48L3A+CgoJPGg0IGNsYXNzPSJhdHRz ICIgaWQ9ImF0dHJpYnV0ZXMiPkF0dHJpYnV0ZXM8L2g0PgoKCTx1bCBjbGFzcz0iYXR0cyI+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+aWQ8L3NwYW4+IDogbGlzdCBvZiBpbWFn ZSBJRHMgZm9yIGluY2x1c2lvbiBpbiB0aGUgZ2FsbGVyeS4gTWF5IGJlIGludGVnZXJzIG9y IHJhbmdlcywgZm9yIGV4YW1wbGUgPGNvZGU+aWQ9JnF1b3Q7NSwgNDIsIDgtMTEmcXVvdDs8 L2NvZGU+IHdvdWxkIGdyYWIgaW1hZ2VzIDUsIDgsIDksIDEwLCAxMSBhbmQgNDIuIFVzZSBh biBleGNsYW1hdGlvbiBtYXJrIGluIGZyb250IG9mIGEgbnVtYmVyIG9yIHJhbmdlIHRvIGV4 Y2x1ZGUgdGhvc2UgaW1hZ2VzPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhdGVnb3J5PC9zcGFuPiA6IGxpc3Qgb2YgaW1h Z2UgY2F0ZWdvcmllcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBnYWxsZXJ5LiBZb3UgbWF5IHNw ZWNpZnkgZml4ZWQtbmFtZSBjYXRlZ29yaWVzIChlLmcuICYjODIyMDthbmltYWxzJiM4MjIx Oykgb3IgYSBxdWVzdGlvbiBtYXJrIGZvbGxvd2VkIGJ5IGFuIGFydGljbGUgZmllbGQgbmFt ZS4gZS5nLiA8Y29kZT5jYXRlZ29yeT0mcXVvdDthbmltYWxzLCBhcnQtP2lkJnF1b3Q7PC9j b2RlPiB3b3VsZCBncmFiIGFsbCBpbWFnZXMgZnJvbSB0aGUgY2F0ZWdvcmllcyBjYWxsZWQg JiM4MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCB0aGUgY2F0ZWdvcnkgY2FsbGVkICYjODIyMDth cnQtNDImIzgyMjE7IChhc3N1bWluZyB0aGUgY3VycmVudCBhcnRpY2xlIGhhcyBhbiBpZCBv ZiA0MiBvZiBjb3Vyc2UpLiBVc2UgYW4gZXhjbGFtYXRpb24gbWFyayB0byBleGNsdWRlIHRo ZSBnaXZlbiBjYXRlZ29yeSBvciBmaWVsZC4gRmllbGRzIG1heSB0aGVtc2VsdmVzIGNvbnRh aW4gbGlzdHMgb2YgY2F0ZWdvcmllcy4gVGhlID8gZmllbGQgbmFtZXMgbWF5IGJlIGNvbWJp bmVkIChlLmcuID9zLT9hcnRpY2xlX2ltYWdlKSBidXQgYmUgYXdhcmUgdGhhdCBmaWVsZCBu YW1lcyBtYXkgY29udGFpbiBzcGFjZXM8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+c3VibGV2ZWw8L3NwYW4+IDogYW4gaW50 ZWdlciB0aGF0IHNwZWNpZmllcyBob3cgbWFueSAmIzgyMTY7bGV2ZWxzJiM4MjE3OyBkb3du IHRvIHRyYXZlcnNlIGVhY2ggbWF0Y2hpbmcgY2F0ZWdvcnkuIHN1YmxldmVsPSYjODIyMDsw JiM4MjIxOyAodGhlIGRlZmF1bHQpIGlzIG9ubHkgdGhlIHRvcC1sZXZlbDsgMSA9IHRvcC1s ZXZlbCBwbHVzIHRoZSAxc3Qgc3ViLWNhdDsgMiA9IHRvcC1sZXZlbCBwbHVzIHRoZSBuZXh0 IDIgc3ViLWNhdHMsIGFuZCBzbyBvbi4gc3VibGV2ZWw9JiM4MjIwO2FsbCYjODIyMTsgaXMg YWxsIHN1Yi1jYXRlZ29yaWVzPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnNvcnQ8L3NwYW4+IDogcmUtb3JkZXIgdGhlIGlt YWdlcyBieSA8Y29kZT5jYXRlZ29yeTwvY29kZT4gKHRoZSBkZWZhdWx0KSwgPGNvZGU+bmFt ZTwvY29kZT4sIDxjb2RlPmRhdGU8L2NvZGU+LCA8Y29kZT5pZDwvY29kZT4sIGZpbGUgPGNv ZGU+ZXh0PC9jb2RlPmVuc2lvbiwgPGNvZGU+YWx0PC9jb2RlPiwgPGNvZGU+Y2FwdGlvbjwv Y29kZT4sIDxjb2RlPmF1dGhvcjwvY29kZT4sIDxjb2RlPndpZHRoPC9jb2RlPiwgPGNvZGU+ aGVpZ2h0PC9jb2RlPiwgPGNvZGU+aGFzdGh1bWI8L2NvZGU+IGluIGVpdGhlciA8Y29kZT5h c2M8L2NvZGU+ZW5kaW5nIG9yIDxjb2RlPmRlc2M8L2NvZGU+ZW5kaW5nIG9yZGVyLiBUd28g c3BlY2lhbCBjYXNlcyBleGlzdDogPGNvZGU+Zml4ZWQ8L2NvZGU+IG1haW50YWlucyB0aGUg b3JkZXIgeW91IHNwZWNpZmllZCBpbiB0aGUgaWQgYXR0cmlidXRlLCB3aGlsZSA8Y29kZT5y YW5kb208L2NvZGU+IHNodWZmbGVzIHRoZSBvcmRlci4gTm90ZSB0aGF0IGlmIDxjb2RlPnJh bmRvbTwvY29kZT4gYXBwZWFycyBhcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCwgcmFu ZG9tIGltYWdlcyB3aWxsIGJlIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdGhleSB3 aWxsIHRoZW4gYmUgc29ydGVkIGFjY29yZGluZyB0byB0aGUgb3JkZXIgbGlzdGVkIGFmdGVy IGl0LiBJZiA8Y29kZT5yYW5kb208L2NvZGU+IGFwcGVhcnMgYW55d2hlcmUgZWxzZSBpbiB0 aGUgbGlzdCwgYW55IHNvcnQgaXRlbXMgYmVmb3JlIGl0IHdpbGwgZGV0ZXJtaW5lIHRoZSBv cmRlciBvZiBkYXRhIHB1bGxlZCBmcm9tIHRoZSBkYXRhYmFzZSwgYW5kIHRoZSByZXN1bHRz IHdpbGwgdGhlbiBiZSBvcmRlcmVkIHJhbmRvbWx5IChpbiB0aGF0IGNhc2UsIGFueSBpdGVt cyBsaXN0ZWQgYWZ0ZXIgcmFuZG9tIHdpbGwgYmUgaWdub3JlZC4gPGNvZGU+Zml4ZWQ8L2Nv ZGU+IGlzLCBob3dldmVyLCBzdGlsbCBob25vdXJlZCk8L2xpPgoJPC91bD4KCTx1bCBjbGFz cz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bGltaXQ8L3NwYW4+IDog dGhlIG1heGltdW0gbnVtYmVyIG9mIGltYWdlcyB0byBzaG93IDxlbT5wZXIgcGFnZTwvZW0+ LiAwIG9yIG9taXR0ZWQgPSB1bmxpbWl0ZWQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bWF4bGltaXQ8L3NwYW4+IDogdGhl IGFic29sdXRlIG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMgdG8gcHVsbCBmcm9tIHRo ZSBkYXRhYmFzZS4gMCBvciBvbWl0dGVkID0gdW5saW1pdGVkPC9saT4KCTwvdWw+Cgk8dWwg Y2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm9mZnNldDwvc3Bh bj4gOiBza2lwIHRoaXMgbWFueSBpbWFnZXMgYW5kIHN0YXJ0IGNvdW50aW5nIHRoZXJlYWZ0 ZXI8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dHQtbmFtZSI+dGh1bWJsaW1pdDwvc3Bhbj4gOiB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGh1 bWJuYWlscyB0byBzaG93LiAwIG9yIG9taXR0ZWQgPSBhbGwgdGh1bWJzLiBOb3RlIHRoYXQg dGhpcyBkaWZmZXJzIGZyb20gbGltaXQ7IHlvdSBjYW4gbGF1bmNoIGEgMjAtaW1hZ2UgZ2Fs bGVyeSBidXQgb25seSBzaG93IDEgdGh1bWJuYWlsIG9uIHRoZSBwYWdlPC9saT4KCTwvdWw+ Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1i b2Zmc2V0PC9zcGFuPiA6IHNraXAgdGhpcyBtYW55IHRodW1icyBiZWZvcmUgZGlzcGxheWlu ZyA8Y29kZT50aHVtYmxpbWl0PC9jb2RlPiB0aHVtYm5haWxzPC9saT4KCTwvdWw+Cgk8dWwg Y2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRleHQ8L3NwYW4+ IDogZGlzcGxheSB0aGUgZ2l2ZW4gdGV4dCBpbnN0ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0 ZXh0IGNhbiBjb250YWluID8gYXJ0aWNsZSBmaWVsZHMgbGlrZSA8Y29kZT5jYXRlZ29yeTwv Y29kZT48L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+dGh1bWI8L3NwYW4+IDogZGlzcGxheXMgdGhlIGZ1bGxzaXplIHBpYyBh cyBhIHRodW1ibmFpbCBpbnN0ZWFkIG9mIGEgZnVsbHNpemUgcGljKCEpPC9saT4KCTwvdWw+ Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnRodW1i c2l6ZTwvc3Bhbj4gOiB0YWtlcyBvbmUgb3IgdHdvIGNvbW1hLXNlcGFyYXRlZCBwYXJhbWV0 ZXJzIHRvIHNwZWNpZnkgd2lkdGggYW5kL29yIGhlaWdodCBvZiBhbGwgeW91ciBnYWxsZXJ5 IHRodW1ibmFpbHMuIFRoZSBkZWZhdWx0IGlzIGluIHBpeGVscyBpZiB5b3UgZG9uJiM4MjE3 O3Qgc3BlY2lmeSB1bml0cy4gTWlzc2luZyBvdXQgb25lIG9yIHRoZSBvdGhlciBwYXJhbWV0 ZXIgKGkuZS4gaGF2aW5nIGFuICYjODIyMDtlbXB0eSYjODIyMTsgcGFyYW1ldGVyIGJlZm9y ZSBvciBhZnRlciB0aGUgY29tbWEpIHdpbGwgb25seSBzZXQgb25lIG9mIHRoZSBkaW1lbnNp b25zLiBVc2luZyBvbmx5IG9uZSB2YWx1ZSwgYm90aCB3aWR0aCBhbmQgaGVpZ2h0IHdpbGwg YmUgc2V0IHRvIHRoZSBzYW1lIHZhbHVlPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMi PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmZvcm08L3NwYW4+IDogdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBsYXlvdXQgeW91ciBtYXRj aGluZyBpbWFnZXM8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+cGFnZWZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBzcGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91 ciBwYWdpbmcgbmF2aWdhdGlvbjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5nYWxsZXJ5aWQ8L3NwYW4+IDogdW5kZXIgbm9y bWFsIGNpcmN1bXN0YW5jZXMgeW91IHNob3VsZCBuZXZlciBuZWVkIHRoaXMuIEVhY2ggZ2Fs bGVyeSBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBJRCBiYXNlZCBvbiB0aGUgYXR0cmlidXRlcyB5 b3Ugc3VwcGx5LiBJbiB0aGUgdW5saWtlbHkgZXZlbnQgdGhhdCB0d28gaWRlbnRpY2FsIElE cyBhcmUgZ2VuZXJhdGVkIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIElEIGZvciBhIGdhbGxlcnkg d2l0aCB0aGlzIGF0dHJpYnV0ZS4gV2hhdCB0aGUgcGx1Z2luIGRvZXMgKGludGVybmFsbHkp IGlzIGdlbmVyYXRlIGEgMzItY2hhcmFjdGVyIGhhc2ggc3RyaW5nIGZvciBlYWNoIHRhZywg dGhlbiBwaWNrcyBhIDQtY2hhciBjb2RlIGZyb20gdGhpcyBzdHJpbmcgKGl0IHRha2VzIGV2 ZXJ5IDZ0aCBjaGFyYWN0ZXIgYnkgZGVmYXVsdCkuIFlvdSBjYW4gc3VwcGx5IGEgdW5pcXVl IGZpeGVkIHN0cmluZyAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7VGhlR2FsbGVyeTIm cXVvdDs8L2NvZGU+KSBvciBnaXZlIGl0IGEgcXVlc3Rpb24gbWFyayBhbmQgMiBudW1iZXJz IHNlcGFyYXRlZCBieSBhIGNvbG9uIChlLmcuIDxzdWI+Z2FsbGVyeWlkPSYjODIyMTs/NTo0 JiM4MjIxOzwvc3ViPikuIFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIGxlbmd0aCBvZiB0aGUg ZmluYWwgc3RyaW5nIHRvIGdlbmVyYXRlLCB0aGUgc2Vjb25kIG51bWJlciBpcyBob3cgbWFu eSBjaGFyYWN0ZXJzIHRvIHNraXAgb3ZlciBpbiB0aGUgZnVsbCAzMi1jaGFyIHN0cmluZyBl YWNoIHRpbWUgaXQgcGlja3Mgb25lLiBTbyBpbiB0aGlzIGNhc2UsIGl0IGdlbmVyYXRlcyBh IDUtY2hhcmFjdGVyIHN0cmluZyBmcm9tIHRoZSBjaGFyYWN0ZXJzIGl0IGZpbmRzIGF0IHBv c2l0aW9ucyAxLDUsOSwxMywgYW5kIDE3LiBJZiB5b3Ugb21pdCB0aGUgMm5kIG51bWJlciAo ZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7PzYmcXVvdDs8L2NvZGU+KSBpdCB3aWxsIGFz c3VtZSBpdCYjODIxNztzIGFuIGluY3JlbWVudCBvZiAxLCBzbyBpbiB0aGlzIGNhc2UgaXQm IzgyMTc7bGwgdXNlIHRoZSAxc3QgNiBjaGFyYWN0ZXJzPC9saT4KCTwvdWw+Cgk8dWwgY2xh c3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPndyYXB0YWc8L3NwYW4+ IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIHRoZSBlbnRpcmUgZ2FsbGVyeS4gU3Bl Y2lmeSBpdCB3aXRob3V0IGFuZ2xlIGJyYWNrZXRzLCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1 b3Q7ZGl2JnF1b3Q7PC9jb2RlPi4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyB0YWcpPC9s aT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5h bWUiPmJyZWFrPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCBlYWNoIHRo dW1ibmFpbC4gRGVmYXVsdCBpcyB1bnNldCAoaS5lLiBubyB0YWdzKTwvbGk+Cgk8L3VsPgoJ PHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5jbGFzczwv c3Bhbj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSB0 byBhcHBseSB0byB0aGUgZW50aXJlIGdhbGxlcnkuIERlZmF1bHQgaXMgdW5zZXQgKGkuZS4g bm8gY2xhc3MpPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPm5hdndyYXB0YWc8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRv IHN1cnJvdW5kIHRoZSBlbnRpcmUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBTcGVjaWZ5IGl0 IHdpdGhvdXQgYW5nbGUgYnJhY2tldHMsIGUuZy4gPGNvZGU+d3JhcHRhZz0mcXVvdDtkaXYm cXVvdDs8L2NvZGU+LiBEZWZhdWx0IGlzICYjODIyMDt1bCYjODIyMTs8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+bmF2YnJl YWs8L3NwYW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGVhY2ggaXRlbSB3aXRo aW4gdGhlIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPi4gRGVmYXVsdCBpcyAmIzgyMjA7bGkmIzgy MjE7PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPm5hdmNsYXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NT PC9zcGFuPiBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIHRoZSBuYXZpZ2F0aW9uIHdyYXB0YWcu IERlZmF1bHQgaXMgJiM4MjIwO3NtZF9nYWxsZXJ5X25hdiYjODIyMTs8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZGVsaW08 L3NwYW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgYXR0cmlidXRl IGxpc3RzLiBEZWZhdWx0IGlzIGNvbW1hICgsKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5wYXJhbWRlbGltPC9zcGFuPiA6 IGNoYW5nZSB0aGUgZGVsaW1pdGVyIGZvciBzcGVjaWZ5aW5nIGludGVyLXBhcmFtZXRlciBh dHRyaWJ1dGVzLiBEZWZhdWx0IGlzIGNvbG9uICg6KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNz PSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5jb2xsYXRlPC9zcGFuPiA6 IHN3aXRjaCB0aGUgcGx1Z2luIGludG8gPGEgaHJlZj0iI2NvbGxhdGVfbW9kZSI+Y29sbGF0 ZSBtb2RlPC9hPjwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0dC1uYW1lIj5jb21ibzwvc3Bhbj4gOiBzcGVjaWZ5IHlvdXIgb3duIDxhIGhy ZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnczwvYT48L2xpPgoJPC91bD4KCTx1 bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZGlyZWN0b3J5 PC9zcGFuPiA6IHJlYWQgaW1hZ2VzIGZyb20gYSBsaXN0IG9mIGRpcmVjdG9yaWVzIChvciA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPnMpIGluc3RlYWQgb2YgdGhlIDxzcGFuIGNs YXNzPSJjYXBzIj5UWFA8L3NwYW4+IGRhdGFiYXNlPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1hdGNoPC9zcGFuPiA6IGxp bWl0IHRoZSBpbWFnZXMgYW5kIGRpcmVjdG9yaWVzIGNob3NlbiBpbiBkaXJlY3RvcnkgbW9k ZS4gR2l2ZSBpdCBhIGxpc3Qgb2Ygd29yZHMgdG8gaW5jbHVkZSBvciAhZXhjbHVkZSBhbmQg YW55IG1hdGNoaW5nIGZpbGVzIG9yIGRpcmVjdG9yaWVzIHdpbGwgYmUgY2hvc2VuIG9yIGln bm9yZWQsIHJlc3BlY3RpdmVseS4gVGhlIG1hdGNoIHRlcm1zIGFyZSBhdXRvbWF0aWNhbGx5 IGFzc3VtZWQgdG8gYmUgJiM4MjIwO3dpbGQmIzgyMjE7IHNvIGFueSBwYXJ0IG9mIHRoZSBm aWxlIG5hbWUgLyBwYXRoIHdpbGwgdHJpZ2dlciB0aGUgbWF0Y2g8L2xpPgoJPC91bD4KCTx1 bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+ZGVidWc8L3Nw YW4+IDogdHVybiBvbiBkaWFnbm9zdGljcy4gVmFyeWluZyBsZXZlbHMgb2YgdmVyYm9zaXR5 IGZyb20gMCAobm9uZSkgdG8gNCAoYSBsb3QpPC9saT4KCTwvdWw+CgoJPGgzIGlkPSJnYWxs ZXJ5X2Zvcm0iPkdhbGxlcnkgZm9ybTwvaDM+CgoJPHA+VGhlIDxjb2RlPmZvcm08L2NvZGU+ IGlzIHdoZXJlIHlvdSBkZXNpZ24gd2hhdCBldmVyeSB0aHVtYm5haWwgd2lsbCBsb29rIGxp a2Ugb24gdGhlIHNjcmVlbi4gWW91IGRvIHRoaXMgYnkgc3BlY2lmeWluZyBtYXJrdXAgb3Ig dGFncyBhcyBub3JtYWwuIEluIGtleSBwbGFjZXMgd2hlcmUgeW91IHdhbnQsIHNheSwgYW4g aW1hZ2UgSUQgb3IgYWx0IHRhZyBvciBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5ZWQsIHlv dSBzcGVjaWZ5IHNwZWNpYWwgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0 YWdzPC9hPi4gVGhlc2UgYXJlIHJlcGxhY2VkIGZvciBlYWNoIGltYWdlIGluIHR1cm4sIHRo dXMgYnVpbGRpbmcgdXAgdGhlIGdhbGxlcnkuPC9wPgoKCTxwPkluIGNvbGxhdGUgbW9kZSwg dGhlIGltYWdlIGRldGFpbHMgYXJlIGluc3RlYWQgbWFkZSBpbnRvIGxpc3RzLiBUaGUgZm9y bSBpcyBvbmx5IHByb2Nlc3NlZCBvbmNlIGFuZCB0aGUgcmVwbGFjZW1lbnQgdGFncyBvdXRw dXQgdGhlIGVudGlyZSBsaXN0LjwvcD4KCgk8aDQgY2xhc3M9ImF0dHMgIiBpZD0icmVwX2dh bGxlcnkiPlJlcGxhY2VtZW50IHRhZ3M6IGdhbGxlcnk8L2g0PgoKCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2lkfTwvc3Bhbj4gOiB0aGUgaW1h Z2UgSUQgKG9yLCBpbiBkaXJlY3RvcnkgbW9kZSwgdGhlIGZpbGVuYW1lIHdpdGhvdXQgaXRz IGV4dGVuc2lvbik8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdHQtbmFtZSI+e25hbWV9PC9zcGFuPiA6IHRoZSBmdWxsIGltYWdlIGZpbGVu YW1lIGFzIGRlZmluZWQgaW4gdGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1ZGluZyBleHRl bnNpb248L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+e2V4dH08L3NwYW4+IDogdGhlIGZpbGUgZXh0ZW5zaW9uIGluY2x1ZGlu ZyBwZXJpb2Q8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdHQtbmFtZSI+e2NhdGVnb3J5fTwvc3Bhbj4gOiB0aGUgaW1hZ2UgY2F0ZWdvcnkg bmFtZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0dC1uYW1lIj57Y2F0ZWdvcnlfdGl0bGV9PC9zcGFuPiA6IHRoZSBpbWFnZSBjYXRlZ29y eSB0aXRsZTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57YXV0aG9yfTwvc3Bhbj4gOiB3aG8gdXBsb2FkZWQgdGhlIGltYWdl PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 LW5hbWUiPnt1cmx9PC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PiBvZiB0aGUgZnVsbHNpemUgaW1hZ2U8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RodW1idXJsfTwvc3Bhbj4gOiB0aGUg PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gb2YgdGhlIHRodW1ibmFpbDwvbGk+Cgk8 L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57 aW1hZ2VwYXRofTwvc3Bhbj4gOiB0aGUgZGlyZWN0b3J5IHRoZSBpbWFnZSBpcyBpbjwvbGk+ Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij57aW1hZ2VkZWZ9PC9zcGFuPiA6IGp1c3QgdGhlIGZpbGUgbmFtZSBwYXJ0IG9mIHRoZSBp bWFnZSAoZS5nLiA1LmpwZyk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RodW1iZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBm aWxlIG5hbWUgcGFydCBvZiB0aGUgdGh1bWJuYWlsIChlLmcuIDV0LmpwZyk8L2xpPgoJPC91 bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2Fs dH08L3NwYW4+IDogdGhlIGFsdCB0ZXh0PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMi PgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt0aXRsZX08L3NwYW4+IDogdGhlIGNh cHRpb248L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNz PSJhdHQtbmFtZSI+e2RhdGV9PC9zcGFuPiA6IGltYWdlIHVwbG9hZCBkYXRlPC9saT4KCTwv dWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPnt3 aWR0aH08L3NwYW4+IDogaW1hZ2Ugd2lkdGg8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2hlaWdodH08L3NwYW4+IDogaW1h Z2UgaGVpZ2h0PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPnt0aHVtYndpZHRofTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lkdGgg KGlmIGRlZmluZWQ6IHNlZSB0aGUgPGNvZGU+dGh1bWJzaXplPC9jb2RlPiBhdHRyaWJ1dGUp PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0 LW5hbWUiPnt0aHVtaGVpZ2h0fTwvc3Bhbj4gOiB0aHVtYm5haWwgaGVpZ2h0IChkaXR0byk8 L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQt bmFtZSI+e3RodW1id3VuaXRzfTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lkdGggdW5pdHMgKGUu Zy4gcHgsICUsIGVtIGV0Yy4gT25seSBpZiBkZWZpbmVkIHZpYSA8Y29kZT50aHVtYnNpemU8 L2NvZGU+KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xh c3M9ImF0dC1uYW1lIj57dGh1bWJodW5pdHN9PC9zcGFuPiA6IHRodW1ibmFpbCBoZWlnaHQg dW5pdHMgKGRpdHRvKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj57aGFzdGh1bWJ9PC9zcGFuPiA6IGlmIHRoZSBpbWFnZSBo YXMgYW4gYXNzb2NpYXRlZCB0aHVtYm5haWwgb3Igbm90IChwcm9iYWJseSBub3QgbXVjaCB1 c2UpPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0i YXR0LW5hbWUiPntnYWxsZXJ5aWR9PC9zcGFuPiA6IHRoZSBnYWxsZXJ5IGlkIHlvdSBvciB0 aGUgcGx1Z2luIGFzc2lnbmVkPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntvYmplY3R9PC9zcGFuPiA6IGEgc3BlY2lhbCBp dGVtIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSA8Y29kZT50ZXh0PC9jb2RlPiBPUiB0aGUgaW1h Z2UgdGFnIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRodW1ibmFpbCBidXQgb25seSBpZiA8Y29k ZT50aHVtYmxpbWl0PC9jb2RlPiBhbGxvd3MgaXQuIGUuZy4gaWYgPGNvZGU+dGh1bWJsaW1p dD0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0aGlzIHZhcmlhYmxlIGlzIG9ubHkgc2V0IGZvciB0 aGUgZmlyc3QgdGh1bWJuYWlsIGluIHRoZSBsaXN0LiBFdmVyeSBvdGhlciB0aW1lIGl0IGlz IGVtcHR5PC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFz cz0iYXR0LW5hbWUiPntjb3VudGVyfTwvc3Bhbj4gOiBhbiBpbWFnZSBjb3VudGVyLCBzdGFy dGluZyBmcm9tIDEgYW5kIGluY3JlbWVudGluZyBlYWNoIHRpbWU8L2xpPgoJPC91bD4KCTx1 bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e2luZGV4fTwv c3Bhbj4gOiBhbiBpbmRleCBjb3VudGVyICh6ZXJvLWJhc2VkICYjODIxMjsgcHJvYmFibHkg bm90IG11Y2ggdXNlKTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRoZSB0b3RhbCBu dW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQ8L2xpPgoJPC91bD4KCgk8cD5JZiB0aG9zZSBhcmVu JiM4MjE3O3QgZW5vdWdoLCB5b3UgY2FuIDxhIGhyZWY9IiNjb21ib3MiPmNyZWF0ZSB5b3Vy IG93bjwvYT4gYnkgZ3JvdXBpbmcgY29tYmluYXRpb25zIG9mIHRoZSBhYm92ZSwgb3B0aW9u YWxseSB3aXRoIGFydGljbGUgdmFyaWFibGVzIHN1Y2ggYXMgPGNvZGU+P2V4Y2VycHQ8L2Nv ZGU+LCA8Y29kZT4/a2V5d29yZHM8L2NvZGU+LCA8Y29kZT4/YXJ0aWNsZV9pbWFnZTwvY29k ZT4sIGV0Yy48L3A+CgoJPGgzIGlkPSJwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2gzPgoK CTxwPldoZW4gYWxsIHRoZSB0aHVtYm5haWxzIGhhdmUgYmVlbiBwcm9jZXNzZWQsIHRoZSA8 Y29kZT5wYWdlZm9ybTwvY29kZT4gaXMgcHJvY2Vzc2VkIGFuZCBkaXNwbGF5ZWQuIEluIGEg c2ltaWxhciBtYW5uZXIgdG8gdGhlIHdheSB0aGUgPGEgaHJlZj0iI2dhbGxlcnlfZm9ybSI+ Z2FsbGVyeSBmb3JtPC9hPiB3b3JrcywgYSBzZXJpZXMgb2YgPGEgaHJlZj0iI3JlcF9wYWdp bmciPlJlcGxhY2VtZW50IFRhZ3M8L2E+IGdvdmVybiB3aGljaCBnYWxsZXJ5IG5hdmlnYXRp b24gaXRlbXMgYXJlIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUgeW91IGNvdWxkIGNob29zZSB0 byBvbmx5IHNob3cgbmV4dC9wcmV2LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4g T3IgbnVtYmVyZWQgcGFnZSBsaW5rcy48L3A+CgoJPGg0IGNsYXNzPSJhdHRzICIgaWQ9InJl cF9wYWdpbmciPlJlcGxhY2VtZW50IHRhZ3M6IHBhZ2luZzwvaDQ+CgoJPHVsIGNsYXNzPSJh dHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57bmF2Zmlyc3R9PC9zcGFuPiA6 IHRoZSBmaXJzdCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7Rmlyc3QmIzgyMjE7KTwv bGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1u YW1lIj57bmF2cHJldn08L3NwYW4+IDogdGhlIHByZXZpb3VzIHBhZ2UgKGRlZmF1bHQgbGFi ZWw6ICYjODIyMDsmbGFxdW87JiM4MjIxOyk8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdmVhcmxpZXJ9PC9zcGFuPiA6 IGFueSBwYWdlIG51bWJlcnMgYmVmb3JlIHRoZSBjdXJyZW50IHBhZ2U8L2xpPgoJPC91bD4K CTx1bCBjbGFzcz0iYXR0cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e25hdnRo aXN1cmx9PC9zcGFuPiA6IHRoZSBjdXJyZW50IHBhZ2Ugd2l0aCBhIDxzcGFuIGNsYXNzPSJj YXBzIj5VUkw8L3NwYW4+IGxpbmsgdG8gaXRzZWxmPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9 ImF0dHMiPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntuYXZ0aGlzfTwvc3Bhbj4g OiB0aGUgY3VycmVudCBwYWdlIHdpdGhvdXQgYSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPiBsaW5rPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJCTxsaT48c3BhbiBj bGFzcz0iYXR0LW5hbWUiPntuYXZsYXRlcn08L3NwYW4+IDogYW55IHBhZ2UgbnVtYmVycyBh ZnRlciB0aGUgY3VycmVudCBwYWdlPC9saT4KCTwvdWw+Cgk8dWwgY2xhc3M9ImF0dHMiPgoJ CTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPntuYXZuZXh0fTwvc3Bhbj4gOiB0aGUgcHJl dmlvdXMgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIwOyZyYXF1bzsmIzgyMjE7KTwvbGk+ Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1l Ij57bmF2bGFzdH08L3NwYW4+IDogdGhlIGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4 MjIwO0xhc3QmIzgyMjE7KTwvbGk+Cgk8L3VsPgoJPHVsIGNsYXNzPSJhdHRzIj4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj57dG90YWxpbWFnZXN9PC9zcGFuPiA6IHRoZSB0b3Rh bCBudW1iZXIgb2YgaW1hZ2VzIG1hdGNoZWQ8L2xpPgoJPC91bD4KCTx1bCBjbGFzcz0iYXR0 cyI+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSI+e3RvdGFscGFnZXN9PC9zcGFuPiA6 IHRoZSB0b3RhbCBudW1iZXIgb2YgcGFnZXMgaW4gdGhpcyBjb2xsZWN0aW9uPC9saT4KCTwv dWw+CgoJPHA+VGhlIGN1cnJlbnQgcGFnZSBoYXMgYSBmaXhlZCBjbGFzcyBvZiAmIzgyMTY7 Y3VycmVudCYjODIxNzsgYW5kIGVhY2ggaXRlbSBpcywgYnkgZGVmYXVsdCwgYSA8Y29kZT4m bHQ7bGkmZ3Q7PC9jb2RlPiBmb3IgZWFzeSBzdHlsaW5nLiBUbyBhdm9pZCBhIHppbGxpb24g b3B0aW9ucywgY3VzdG9tIGxhYmVscyBhcmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9y bSBpdHNlbGY6PC9wPgoKCTxwPjxjb2RlPntuYXZmaXJzdDoxc3R9PC9jb2RlPjwvcD4KCgk8 cD5Xb3VsZCBsYWJlbCB0aGUgbGluayB0aGF0IHRha2VzIHVzZXJzIHRvIHRoZSBmaXJzdCBw YWdlIG9mIHRoZSBnYWxsZXJ5IGFzICYjODIyMDsxc3QmIzgyMjE7LiBUaGlzIHN5bnRheCBh bGxvd3MgeW91IHRvIHVzZSA8c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzbmlwcGV0 cywgZS5nLjo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMjfTwvY29k ZT48L3A+CgoJPHA+WW91IGNhbiBvdmVycmlkZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIGRpc3Bs YXllZCBieSBuYXZlYXJsaWVyIGFuZCBuYXZsYXRlciBieSBzcGVjaWZ5aW5nIGEgY29sb24g YW5kIGEgbnVtYmVyLiBTbyB0byBvbmx5IHNob3cgMiBpdGVtcyB0byB0aGUgbGVmdCBvZiB0 aGUgY3VycmVudCBwYWdlIGFuZCAzIGl0ZW1zIHRvIHRoZSByaWdodCwgdXNlIDxjb2RlPntu YXZlYXJsaWVyOjJ9IHtuYXZsYXRlcjozfTwvY29kZT4gaW4geW91ciBmb3JtLiBDdXJyZW50 bHkgPGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxhdGVyfTwvY29k ZT4gb25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlkZWFzIG9uIGhvdyB0byBv ZmZlciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJlY2lhdGVkLjwvcD4KCgk8 aDMgaWQ9ImNvbWJvcyI+Q29tYm9zPC9oMz4KCgk8cD5JZiB0aGUgYnVpbHQtaW4gPGEgaHJl Zj0iI3JlcF9nYWxsZXJ5Ij5yZXBsYWNlbWVudCB0YWdzPC9hPiBhcmVuJiM4MjE3O3QgZW5v dWdoIGZvciB5b3VyIG5lZWRzIG9yIHlvdSBmaW5kIHlvdXJzZWxmIHJlcGVhdGluZyB0aGUg c2FtZSBjb21iaW5hdGlvbiBhbmQgd2FudCB0byBzYXZlIHlvdXJzZWxmIHNvbWUgdHlwaW5n LCB5b3UgY2FuIGRlZmluZSB5b3VyIG93biByZXBsYWNlbWVudCB0YWdzLiBUaGUgc3ludGF4 IGlzOjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtuZXd0YWcxOmRlZmluaXRpb24sIG5l d3RhZzI6ZGVmaW5pdGlvbiwgLi4uJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD4mIzgyMTY7ZGVm aW5pdGlvbiYjODIxNzsgY2FuIGJlIGFueSBmaXhlZCB0ZXh0LCBhbnkgZXhpc3RpbmcgcmVw bGFjZW1lbnQgdGFnLCBvciBhbnkgYXJ0aWNsZSB2YXJpYWJsZSBzbyB5b3UgY2FuIGdldCBy ZWFsbHkgd2lsZCBoZXJlOjwvcD4KCgk8cD48Y29kZT5jb21ibz0mcXVvdDtpbWdpbjpmb3Vu ZCBpbiA/cyBbdGFnZ2VkIHdpdGggP2tleXdvcmRzLiBQaG90byBieSB7YXV0aG9yfV0mcXVv dDs8L2NvZGU+PC9wPgoKCTxwPnNvIG5vdyA8Y29kZT57aW1naW59PC9jb2RlPiBpcyBhdmFp bGFibGUgdG8geW91ciBmb3JtIGFuZCBtaWdodCBiZSByZXBsYWNlZCB3aXRoICYjODIyMDtm b3VuZCBpbiB6b28gW3RhZ2dlZCB3aXRoIHplYnJhLCBhZnJpY2EsIHN0cmlwZXMuIFBob3Rv IGJ5IEJsb2tlXSYjODIyMTsuICRwcmV0ZXh0IGlzIGFsc28gYXZhaWxhYmxlIGZvciB0aG9z ZSBnZWVrcyB3aG8ga25vdyB3aGF0JiM4MjE3O3MgaW4gaXQgKHVzZSA8Y29kZT5kZWJ1Zz0m cXVvdDs0JnF1b3Q7PC9jb2RlPiB0byB2aWV3IGFsbCBhdmFpbGFibGUgYXJ0aWNsZSB2YXJp YWJsZXMpLjwvcD4KCgk8cD5PbmUgdGhpbmcgdG8gd2F0Y2ggb3V0IGZvciBpcyB0aGF0IHRo ZSBzcGFjZSBjaGFyYWN0ZXIgaXNuJiM4MjE3O3QgbmVjZXNzYXJpbHkgYSBkZWxpbWl0ZXIg Zm9yIDxjb2RlPj88L2NvZGU+IHZhcmlhYmxlcyAoYmVjYXVzZSBjdXN0b20gZmllbGRzIGNh biBoYXZlIHNwYWNlcyBpbiB0aGVtKS4gU28gPGNvZGU+Y29tYm89JnF1b3Q7ZG9lc25vdHdv cms6P3MgaW4gP2NhdGVnb3J5MSZxdW90OzwvY29kZT4gd2lsbCBsb29rIGZvciBhIHZhcmlh YmxlIGxhYmVsbGVkICYjODIyMDtzIGluJiM4MjIxOyBhbmQgb25lIGNhbGxlZCAmIzgyMjA7 Y2F0ZWdvcnkxJiM4MjIxOy4gT25seSBvbmUgb2YgdGhvc2UgZXhpc3RzISBDbGV2ZXIgdXNl IG9mIHBhcmVudGhlc2VzIG9yIG90aGVyIHB1bmN0dWF0aW9uIGNhbiB3b3JrIHJvdW5kIHRo aXMuPC9wPgoKCTxoMyBpZD0iY29sbGF0ZV9tb2RlIj5Db2xsYXRlIG1vZGU8L2gzPgoKCTxw PklmIHlvdSB3YW50IHRvIGdldCA8ZW0+cmVhbGx5PC9lbT4gZnVua3kgeW91IGNhbiBwdXQg dGhlIHBsdWdpbiBpbnRvIGEgMm5kIG1vZGUgY2FsbGVkICYjODIyMDtjb2xsYXRpb24gbW9k ZSYjODIyMTsuIEluIHRoaXMgbW9kZSB5b3VyIGNob3NlbiBmb3JtIGlzIDxzdHJvbmc+bm90 PC9zdHJvbmc+IGV4ZWN1dGVkIGZvciBldmVyeSBpbWFnZTsgaXQgaXMgb25seSB1c2VkIG9u Y2UgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBsaXN0LCBhZnRlciBhbGwgaW1hZ2VzIGhhdmUg YmVlbiBpbnRlcm5hbGx5ICYjODIyMDtjb2xsZWN0ZWQmIzgyMjE7LiBJbiBlZmZlY3QsIHRo ZSBwbHVnaW4gYnVpbGRzIHVwIGEgZ2lhbnQgYXJyYXkgb2YgYWxsIG1hdGNoaW5nIGltYWdl cyByZWFkeSBmb3IgeW91IHRvIG91dHB1dCB0aGVtIGFsbCBpbiBvbmUgZ28uIFRoaXMgaXMg dmVyeSBoYW5keSBmb3IgZG9pbmcgc2xpZGVzaG93cyBhbmQgaXMgYmVzdCBleHBsYWluZWQg YnkgZXhhbXBsZTo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDsxJnF1b3Q7PC9jb2Rl PjwvcD4KCgk8cD5zd2l0Y2hlcyBjb2xsYXRpb24gbW9kZSBvbi4gSWYgdGhlIHBsdWdpbiBt YXRjaGVkIDQgaW1hZ2VzIGFuZCB5b3Ugd2VyZSB0byB1c2UgdGhlIHJlcGxhY2VtZW50IHRh ZyA8Y29kZT57bmFtZX08L2NvZGU+IGluIHlvdXIgZm9ybSBsaWtlIHRoaXM6PC9wPgoKPHBy ZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdl czoge25hbWV9CjwvY29kZT48L3ByZT4KCgk8cD55b3UgbWlnaHQgZ2V0IHRoaXM6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGlt YWdlczogaGVyb24uanBnLHBlbmd1aW4uanBnLGVtdS5qcGcscHVmZmluLmpwZwo8L2NvZGU+ PC9wcmU+CgoJPHA+U29tZXRpbWVzIGl0JiM4MjE3O3MgdXNlZnVsIHRvIGJlIGFibGUgdG8g cHV0IHF1b3RlcyBhcm91bmQgZWFjaCBpdGVtIHNvIHlvdSBjYW4gdGVsbCBjb2xsYXRlIG1v ZGUgdG8gZG8gdGhhdCBpbnN0ZWFkOjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1 b3RlOntuYW1lfSZxdW90OzwvY29kZT48L3A+CgoJPHA+WW91IHdvdWxkIHRoZW4gZ2V0Ojwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGlu ZyBpbWFnZXM6ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90 OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsKPC9jb2RlPjwv cHJlPgoKCTxwPlRoZSBkZWxpbWl0ZXIgKGEgY29tbWEgaW4gdGhpcyBjYXNlKSBjYW4gYmUg b3ZlcnJpZGRlbiB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYXR0cmlidXRlLiBZb3Ug bWF5IHVzZSA8Y29kZT5zZ2xxdW90ZTwvY29kZT4gdG8gd3JhcCBzaW5nbGUgcXVvdGVzIHJv dW5kIHRoZSBpdGVtcywgb3IgJiM4MjIwO2RibHF1b3RlJiM4MjIxOyBhcyBhIHN5bm9ueW0g Zm9yICYjODIyMDtxdW90ZSYjODIyMTsgaWYgeW91IHByZWZlci4gWW91IGNhbiBxdW90ZSBt b3JlIHRoYW4gb25lIHRoaW5nIGF0IG9uY2UgYnkgc3BlY2lmeWluZyB0aGUgaXRlbXMgYXMg YSBkZWxpbWl0ZWQgbGlzdDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7 bmFtZX06e2FsdH06e2ltZ2lufSZxdW90OzwvY29kZT48L3A+CgoJPHA+WWVzLCB5b3UgY2Fu IHVzZSBjb21ib3MhIFRoZSBkZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGl0ZW1zIGNhbiBiZSBv dmVycmlkZW4gd2l0aCB0aGUgPGNvZGU+cGFyYW1kZWxpbTwvY29kZT4gYXR0cmlidXRlLjwv cD4KCgk8cD5UaGUgc2Vjb25kIHNwZWNpYWwgZmVhdHVyZSBvZiBjb2xsYXRpb24gbW9kZSBp cyB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBhbHdheXMgb3V0cHV0IHRoZSBlbnRpcmUgbGlz dC4gWW91IGNhbiBncmFiIGluZGl2aWR1YWwgZW50aXRpZXMgZnJvbSB3aXRoaW4gdGhlIGlu dGVybmFsIGFycmF5IGJ5IHVzaW5nIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gdGh1 czo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj57bmFtZX0g bWlnaHQgb3V0cHV0ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZx dW90OywmcXVvdDtlbXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsgKGFzIGJl Zm9yZSkKKG5hbWUjMX0gd291bGQgb25seSBvdXRwdXQgaGVyb24uanBnCihuYW1lIzN9IHdv dWxkIG9ubHkgb3V0cHV0IGVtdS5qcGcKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB3 aGVuIHB1bGxpbmcgb3V0IGluZGl2aWR1YWwgZW50cmllcyB0aGV5IDxzdHJvbmc+ZG8gbm90 PC9zdHJvbmc+IGdldCBxdW90ZXMgYWRkZWQgdG8gdGhlbSwgcmVnYXJkbGVzcyBvZiB3aGV0 aGVyIHlvdSB1c2VkIDxjb2RlPnF1b3RlPC9jb2RlPiBvciBub3QuIFRoaXMgaXMgYmVjYXVz ZSBpdCBpcyBhIHNpbmdsZSBpdGVtIHNvIHlvdSBjYW4gZWFzaWx5IHB1dCB0aGUgcXVvdGVz IGluIHRoZSBmb3JtIGl0c2VsZiAodml6OiA8Y29kZT4mcXVvdDt7bmFtZX0mcXVvdDs8L2Nv ZGU+KTwvcD4KCgk8cD5NZXNzaW5nIGFyb3VuZCB3aXRoIHB1bGxpbmcgb3V0IGluZGl2aWR1 YWwgaXRlbXMgYW5kIGxpc3RzIGNhbiB5aWVsZCBzb21lIHZlcnkgaW50ZXJlc3RpbmcgcmVz dWx0cyBhbmQgYWxsb3dzIHNvbWUgY29tcGxldGVseSB3YWNreSBnYWxsZXJpZXMgdG8gYmUg Z2VuZXJhdGVkLiBUcnkgY29tYmluaW5nIHNtZF9nYWxsZXJ5IHRhZ3Mgd2l0aCA8Y29kZT4m bHQ7dHhwOmlmX2RpZmZlcmVudCZndDs8L2NvZGU+IGZvciBhIHJlYWwgbWluZCBzY3JhbWJs ZSA6LSk8L3A+CgoJPGgzIGlkPSJleGFtcGxlcyI+RXhhbXBsZXM8L2gzPgoKCTxwPlRoZSBl eGFtcGxlcyBhbGwgdXNlIHRoZSBjbGFzc2ljIHpvbyB3ZWJzaXRlLiBMZXQmIzgyMTc7cyBz cGVjaWZ5IHNvbWUgcGljdHVyZXMgdG8gcHVsbCBvdXQgb2YgdGhlIGRhdGFiYXNlOjwvcD4K Cgk8aDQgaWQ9ImVnMSI+RXhhbXBsZSAxOiBzaW1wbGUgLyBsaWdodGJveGVkIGdhbGxlcnk8 L2g0PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpz bWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDthbmltYWxzJnF1b3Q7IHN1YmxldmVsPSZxdW90 O2FsbCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPlRoYXQgcHVsbHMgb3V0IGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBhbmltYWxzIGNh dGVnb3J5LCBpbmNsdWRpbmcgYWxsIHN1Yi1jYXRlZ29yaWVzLCBhbmQgcGFzc2VzIHRoZW0g dG8gdGhlIGZvcm0gY2FsbGVkICYjODIxNjtnYWxsZXJ5JiM4MjE3OyBmb3IgcHJvY2Vzc2lu Zy4gVGhlIGZvcm0gY291bGQganVzdCBiZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtpbWcgY2xhc3M9JnF1b3Q7YW5pbWFnZSZxdW90 OyBzcmM9JnF1b3Q7e3VybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZs dDtkaXYgY2xhc3M9JnF1b3Q7YWNhcHRpb24mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsvZGl2Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCBtZWFucywgZm9yIGV2ZXJ5IG1hdGNoZWQgaW1h Z2UsIHN1YnN0aXR1dGUgaXRzIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LCBhbHQg YW5kIHRpdGxlIHRhZ3MgaW50byB0aGUgcmVsZXZhbnQgcGxhY2VzLiBUaHVzIHlvdSBnZXQg YSBzZXJpZXMgb2YgaW1hZ2VzIG9uIHRoZSBwYWdlLCB3aGljaCB5b3UgY2FuIHN0eWxlIGFj Y29yZGluZ2x5LjwvcD4KCgk8cD5Gb3IgYSBtb3JlIGZhbmN5IG91dHB1dCB1c2luZywgc2F5 LCBzbGltYm94LCB5b3UgY291bGQgbG9hZCB0aGUgcmVsZXZhbnQgbGlicmFyaWVzIGFuZCBz dHlsZXMgaW4gdGhlIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gb2YgeW91ciBwYWdlOjwv cD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQg dHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29s cy5qcyZxdW90OyZndDsmbHQ7L3NjcmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3Rl eHQvamF2YXNjcmlwdCZxdW90OyBzcmM9JnF1b3Q7L2pzL3NsaW1ib3guanMmcXVvdDsmZ3Q7 Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtsaW5rIHJlbD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IHR5 cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDsgaHJlZj0mcXVvdDsvY3NzL3NsaW1ib3guY3NzJnF1 b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGVuIHlvdXIgJiM4MjE2O2dhbGxlcnkm IzgyMTc7IGZvcm0gY291bGQgYmU6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNs YXNzPSJibG9jayI+Jmx0O2EgcmVsPSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsg aHJlZj0mcXVvdDt7dXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsKICAgICB0aXRs ZT0mcXVvdDtBIHBpY3R1cmUgb2Yge3RpdGxlfSZxdW90OyBoZWlnaHQ9JnF1b3Q7e2hlaWdo dH0mcXVvdDsgd2lkdGg9JnF1b3Q7e3dpZHRofSZxdW90OyZndDsKICZsdDt0eHA6dGh1bWJu YWlsIGlkPSZxdW90O3tpZH0mcXVvdDsgLyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+Vm9pbGEhIFVzaW5nIHRoZSBzYW1lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgaGF2ZSBj aGFuZ2VkIHRoZSB3YXkgdGhlIGdhbGxlcnkgcmVuZGVycyBmcm9tIGEgc2ltcGxlIGxpc3Qg dG8gYSBmdWxsLWZlYXR1cmVkIHNsaW1ib3guIFdpdGggdmlydHVhbGx5IHRoZSBzYW1lIGZv cm0geW91IGNhbiBzd2l0Y2ggdGhlIG91dHB1dCB0byB0aGlja2JveCwgbGlnaHRib3gsIGxp dGVib3gsIG1vb25ib3ggb3Igd2hhdGV2ZXIteW91LWxpa2UtYm94IGRlcGVuZGluZyBvbiB3 aGljaCBsaWJyYXJpZXMgeW91IGxvYWQuIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGZvciB5 b3VyIGZhdm91cml0ZSBlZmZlY3QgYW5kIHBsdWcgaXQgaW50byBzbWRfZ2FsbGVyeS48L3A+ CgoJPGg0IGlkPSJlZzIiPkV4YW1wbGUgMjogbGF1bmNoIGZyb20gb25lIGltYWdlPC9oND4K Cgk8cD5BIGNvbW1vbiByZXF1ZXN0IGlzIHRvIGJlIGFibGUgdG8gJiM4MjIwO2xhdW5jaCYj ODIyMTsgYSBzbGltYm94IGdhbGxlcnkgZnJvbSBhIHNpbmdsZSBpbWFnZSBvciB0ZXh0IGxp bmsuIFVzaW5nIGEgc2luZ2xlIGltYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5p bWFscyZxdW90OwogICAgIGlkPSZxdW90Oz9hcnRpY2xlX2ltYWdlJnF1b3Q7IHN1YmxldmVs PSZxdW90O2FsbCZxdW90OwogICAgIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyB0aHVtYmxp bWl0PSZxdW90OzEmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhhdCB0 aGlzIHRpbWUgd2UgYXJlIGFkZGluZyB0byB0aGUgZ2FsbGVyeSB0aGUgaW1hZ2UocykgcHVs bGVkIGZyb20gdGhlIGFydGljbGUtaW1hZ2UgZmllbGQgb2YgdGhlIGN1cnJlbnQgYXJ0aWNs ZS4gVGhlIGZvcm0gd2lsbCB1c2UgdGhlIHNwZWNpYWwgPGNvZGU+e29iamVjdH08L2NvZGU+ IHJlcGxhY2VtZW50IHRhZy4gVGhlIHBsdWdpbiBvbmx5IGRpc3BsYXlzIHRoaXMgcGFydCBp ZiB0aGUgdmFsdWUgb2YgdGh1bWJsaW1pdCBoYXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gYmVl biByZWFjaGVkOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC1zbWQmcXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZx dW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDtBIHBpY3R1cmUg b2Yge3RpdGxlfSZxdW90OyBoZWlnaHQ9JnF1b3Q7e2hlaWdodH0mcXVvdDsgd2lkdGg9JnF1 b3Q7e3dpZHRofSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+Q2hhbmdlIHRoZSBzdGFydCBpbWFnZSBieSBzcGVjaWZ5aW5nIDxjb2RlPnRodW1i b2Zmc2V0PC9jb2RlPiAmIzgyMTI7IG5vdGUgdGhpcyB3aWxsIGFsc28gc3RhcnQgdGhlIGxp Z2h0Ym94IGVmZmVjdCBmcm9tIHRoZSBpbWFnZSB5b3UgY2hvb3NlLiBJZiB5b3Ugd2FudCB0 byBzdGFydCBvbiBhIHNwZWNpZmljIGltYWdlIGluIHBvc2l0aW9uIDEsIHVzZSB0aGUgPGNv ZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBicmluZyBpdCB0byB0aGUgdG9wIG9mIHRoZSBs aXN0LCBvciBjaGFuZ2UgdGhlIHNvcnQgb3JkZXIuPC9wPgoKCTxwPklmIHlvdSB3YW50ZWQg dG8gbGF1bmNoIHRoZSBnYWxsZXJ5IGZyb20gYSB0ZXh0IGxpbmssIG1vZGlmeSB0aGUgdGFn IGxpa2UgdGhpczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2Nr Ij4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICAg ICBpZD0mcXVvdDs/YXJ0aWNsZV9pbWFnZSZxdW90OyBzdWJsZXZlbD0mcXVvdDthbGwmcXVv dDsKICAgICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgdGh1bWJsaW1pdD0mcXVvdDsxJnF1 b3Q7CiAgICAgdGV4dD0mcXVvdDtDbGljayB0byBzdGFydCBsaWdodGJveCZxdW90OyAvJmd0 Owo8L2NvZGU+PC9wcmU+CgoJPGg0IGlkPSJlZzMiPkV4YW1wbGUgMzogcG9wdXAgZ2FsbGVy eTwvaDQ+CgoJPHA+VG8gYWNoaWV2ZSBhbiBlZmZlY3Qgc2ltaWxhciB0byByc3NfdGh1bWJw b3AsIGFkZCBhbiBpbWFnZSBhbmQgY2FwdGlvbiBwbGFjZWhvbGRlciBvdXRzaWRlIHRoZSBj YWxsIHRvIHNtZF9nYWxsZXJ5LCB0aGVuIGluY2x1ZGUgeW91ciBzbWRfZ2FsbGVyeSB0YWcg YXMgdXN1YWwuIFRoaXMgdGltZSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIGFsbCB0aGUg cGljdHVyZXMgZnJvbSB0aGUgY2F0ZWdvcmllcyB1cCB0byB0d28gbGV2ZWxzIGJlbG93IGJv dGggJiM4MjIwO2FuaW1hbHMmIzgyMjE7IGFuZCB3aGljaGV2ZXIgY2F0ZWdvcmllcyBhcmUg bGlzdGVkIGluIDxjb2RlPm15X2N1c3RvbV9maWVsZDwvY29kZT46PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2ltZyBpZD0mcXVvdDtmdWxsc2l6 ZSZxdW90OyBzcmM9JnF1b3Q7L2ltYWdlcy9lbXB0eS5qcGcmcXVvdDsgLyZndDsKJmx0O3Nw YW4gaWQ9JnF1b3Q7ZnVsbGNhcHRpb24mcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7dHhw OnNtZF9nYWxsZXJ5IHN1YmxldmVsPSZxdW90OzImcXVvdDsKICAgICBjYXRlZ29yeT0mcXVv dDthbmltYWxzLCA/bXlfY3VzdG9tX2ZpZWxkJnF1b3Q7CiAgICAgZm9ybT0mcXVvdDtnYWxs ZXJ5JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZ2FsbGVyeSBmb3JtIGxv b2tzIHNjYXJ5IGJ1dCBpcyBvbmx5IGEgdGh1bWJuYWlsIGltYWdlIHN1cnJvdW5kZWQgYnkg YSBzaW1wbGUgYW5jaG9yIHRhZyB3aXRoIHR3byBhY3Rpb25zIGFzc2lnbmVkIHRvIGl0OiBh IG1vdXNlb3ZlciB0byBjb3B5IHRoZSBwaWN0dXJlIGFuZCBjYXB0aW9uIGludG8gdGhlIHBs YWNlaG9sZGVyOyBhbmQgYSBtb3VzZW91dCB0byByZW1vdmUgdGhlbTo8L3A+Cgo8cHJlIGNs YXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7YSBocmVmPSZxdW90O3t1cmx9 JnF1b3Q7IHRpdGxlPSZxdW90O3t0aXRsZX0mcXVvdDsKICAgICBvbm1vdXNlb3Zlcj0mcXVv dDtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9IHRo aXMuaHJlZjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxjYXB0aW9u JiMzOTspLmlubmVySFRNTCA9IHRoaXMudGl0bGU7IHJldHVybiBmYWxzZSZxdW90OwogICAg IG9ubW91c2VvdXQ9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6 ZSYjMzk7KS5zcmMgPSAmIzM5Oy9pbWFnZXMvMTcuanBnJiMzOTs7CiAgICAgZG9jdW1lbnQu Z2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSAmIzM5 OyYjMzk7OyByZXR1cm4gZmFsc2U7JnF1b3Q7Jmd0OwogICZsdDtpbWcgc3JjPSZxdW90O3t0 aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPk5vdGUgdGhlcmUgYXJlIG11Y2ggbmVhdGVyIHdheXMgb2Yg ZG9pbmcgdGhpcyBhbmQgaXQmIzgyMTc7cyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMg Zm9ybSBpbiBhIGxpdmUgc2l0ZSwgYnV0IGl0IGdpdmVzIGEgZmxhdm91ciBvZiB3aGF0IGlz IHBvc3NpYmxlLjwvcD4KCgk8aDQgaWQ9ImVnNCI+RXhhbXBsZSA0OiBzbGlkZXNob3c8L2g0 PgoKCTxwPlRoaXMgb25lIHVzZXMgY29sbGF0ZSBtb2RlIGJ1dCBpcyBub3QgbXVjaCBtb3Jl IGRpZmZpY3VsdCB0byB1bmRlcnN0YW5kLiBJbiB5b3VyIDxjb2RlPiZsdDtoZWFkJmd0Ozwv Y29kZT4gc2VjdGlvbjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4mbHQ7c2NyaXB0IHR5cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0m cXVvdDsvanMvbW9vdG9vbHMuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3Jp cHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9zbGlk ZXNob3cuanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5U aGUgdGFnOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZs dDt0eHA6c21kX2dhbGxlcnkKICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBm b3JtPSZxdW90O2dhbGxlcnkmcXVvdDsKICBjb21ibz0mcXVvdDtpbWdsaXN0OntpZH17ZXh0 fSZxdW90OwogIGNvbGxhdGU9JnF1b3Q7cXVvdGU6e2ltZ2xpc3R9OnthbHR9JnF1b3Q7IC8m Z3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0IHB1bGxzIGFsbCBwaWN0dXJlcyBmcm9tIHRo ZSBiaXJkcyBhbmQgZmlzaCBjYXRlZ29yaWVzLiBBbHRob3VnaCB0ZWNobmljYWxseSB1bm5l Y2Vzc2FyeSwgYSBjb21ibyBoYXMgYmVlbiBkZWZpbmVkIHRvIHNob3cgaG93IGl0IGNhbiBi ZSB1c2VkLiBUaGlzIGNvbWJvIGlzIGNhbGxlZCA8Y29kZT5pbWdsaXN0PC9jb2RlPiBhbmQg aXMgZGVmaW5lZCBhcyB0aGUgaW1hZ2UmIzgyMTc7cyBJRCBudW1iZXIgcGx1cyBpdHMgZXh0 ZW5zaW9uLiBXZSB1c2UgdGhpcyBpbiB0aGUgY29sbGF0ZSBhdHRyaWJ1dGUgYW5kIHRlbGwg aXQgdG8gcHV0IGRvdWJsZSBxdW90ZXMgcm91bmQgZXZlcnkgaXRlbSBpbiAmIzgyMTY7aW1n bGlzdCYjODIxNzsgYW5kICYjODIxNjthbHQmIzgyMTc7LiBUaGVuIHdlIGNhbiBwdXQgdGhl c2UgdmFsdWVzIGludG8gdGhlIG5lY2Vzc2FyeSBqYXZhc2NyaXB0IHRvIGdlbmVyYXRlIHRo ZSBzbGlkZXNob3c6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O2RpdiBjbGFzcz0mcXVvdDtzbGlkZXNob3cmcXVvdDsgaWQ9JnF1b3Q7c2xpZGVz aG93MSZxdW90OyZndDsKICZsdDtpbWcgc3JjPSZxdW90OyZsdDt0eHA6c2l0ZV91cmwgLyZn dDtpbWFnZXMve2lkIzF9LmpwZyZxdW90OwogICAgIGFsdD0mcXVvdDt7YWx0IzF9JnF1b3Q7 IHdpZHRoPSZxdW90O3t3aWR0aCMxfSZxdW90OyBoZWlnaHQ9JnF1b3Q7e2hlaWdodCMxfSZx dW90OyAvJmd0OwombHQ7L2RpdiZndDsKPC9jb2RlPgo8Y29kZSBjbGFzcz0iYmxvY2siPiZs dDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVvdDsmZ3Q7Cm15U2hvdzEg PSBuZXcgU2xpZGVzaG93KCZxdW90O3NsaWRlc2hvdzEmcXVvdDssCiAgeyBodTogJnF1b3Q7 Jmx0O3R4cDpzaXRlX3VybCAvJmd0O2ltYWdlcy8mcXVvdDssCiAgICBpbWFnZXM6IFt7aW1n bGlzdH1dLAogICAgY2FwdGlvbnM6IFt7YWx0fV0sCiAgICBjbGFzc2VzOiBbJnF1b3Q7cHJl diZxdW90OywmcXVvdDtuZXh0JnF1b3Q7LCZxdW90O2FjdGl2ZSZxdW90O10sCiAgICB0eXBl OiAmcXVvdDtmYWRlJnF1b3Q7CiAgfSk7CiZsdDsvc2NyaXB0Jmd0Owo8L2NvZGU+PC9wcmU+ CgoJPHA+Tm90ZSB0aGF0IHRoZSBpbml0aWFsIHBvcnRpb24gKGluIHRoZSBkaXYgYW5kIGlt ZyB0YWdzKSB1c2VzIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRpb24gYmVjYXVzZSB3ZSBv bmx5IHdhbnQgdG8gZGlzcGxheSBvbmUgaW1hZ2UgdG8gJiM4MjIwO3N0YXJ0JiM4MjIxOyB0 aGUgc2xpZGVzaG93LiBJbiB0aGlzIGNhc2Ugd2UmIzgyMTc7cmUgdXNpbmcgdGhlIGZpcnN0 IGltYWdlIGluIHRoZSBsaXN0LCBidXQgeW91IGNhbiBjaGFuZ2UgdGhlICMxIGZvciAjNDIg aWYgeW91IHdhbnRlZCB0byBzaG93IHRoZSBmb3J0eS1zZWNvbmQgaW1hZ2UgaW5zdGVhZCEg VGhlIHBhcnQgaW4gdGhlIHNjcmlwdCB0YWcgdXNlcyB0aGUgZnVsbCwgcXVvdGVkIGxpc3Rz IGJlY2F1c2UgdGhhdCYjODIxNztzIHRoZSBmb3JtYXQgdGhlIGphdmFzY3JpcHQgcmVxdWly ZXMuPC9wPgoKCTxoNCBpZD0iZWc1Ij5FeGFtcGxlIDU6IHBhZ2luYXRpb248L2g0PgoKCTxw PlRvIGFkZCBwYWdpbmcgdG8gYSBnYWxsZXJ5IHlvdSB1c2UgdGhlIDxjb2RlPmxpbWl0PC9j b2RlPiBhdHRyaWJ1dGUgdG8gc2hvdyBhIG51bWJlciBvZiB0aHVtYnMgcGVyIHBhZ2UuIEZv ciBhIHBhZ2VkIHRodW1icG9wIGdhbGxlcnkgdGhhdCBzaG93cyBmaXZlIHRodW1icyBwZXIg cGFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7 aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVvdDsvaW1hZ2VzL2VtcHR5Lmpw ZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxsY2FwdGlvbiZxdW90OyZndDsm bHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFs cyZxdW90OwogIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyBwYWdlZm9ybT0mcXVvdDtnYWxs ZXJ5X25hdiZxdW90OwogIGxpbWl0PSZxdW90OzUmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPlRoZSAmIzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9ybSBpcyBpZGVudGljYWwgdG8g dGhlIG9uZSBpbiA8YSBocmVmPSIjZWc0Ij5leGFtcGxlIDQ8L2E+LCB3aGlsZSB5b3VyIGdh bGxlcnlfbmF2IGZvcm0gbWlnaHQgbG9vayBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2RpdiBjbGFzcz0mcXVvdDt0b3RhbCZx dW90OyZndDsjIG9mIHBpY3M6IHt0b3RhbGltYWdlc30mbHQ7L2RpdiZndDsKICAgICB7bmF2 Zmlyc3R9IHtuYXZwcmV2fQogICAgIHtuYXZlYXJsaWVyfSB7bmF2dGhpc30ge25hdmxhdGVy fQogICAgIHtuYXZuZXh0fSB7bmF2bGFzdH0KPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgbWln aHQgcmVuZGVyIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMgYmVsb3cgdGhlIHRodW1iczo8 L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4jIG9mIHBpY3M6 IDM4CiAgICAgRmlyc3QgJmx0OyAxIDIgMyA0IDUgNiA3IDggJmd0OyBMYXN0CjwvY29kZT48 L3ByZT4KCgk8cD5Ob3Rlczo8L3A+CgoJPHVsPgoJCTxsaT5Vc2Uge25hdnRoaXN1cmx9IGlm IHlvdSB3YW50IHRoZSBjdXJyZW50IHBhZ2UgaHlwZXJsaW5rZWQ8L2xpPgoJCTxsaT5UaGUg Y3VycmVudCBpdGVtIGFsd2F5cyBoYXMgYSBjbGFzcyBvZiAmIzgyMjA7Y3VycmVudCYjODIy MTs8L2xpPgoJCTxsaT5Vc2UgdGhlIDxjb2RlPm5hdndyYXB0YWc8L2NvZGU+LCA8Y29kZT5u YXZicmVhazwvY29kZT4sIGFuZCA8Y29kZT5uYXZjbGFzczwvY29kZT4gdGFnIGF0dHJpYnV0 ZXMgdG8gc3BlY2lmeSBpdGVtcyB0byB3cmFwIGFyb3VuZCB0aGUgZW50aXJlIHBhZ2Vmb3Jt LiBUaGUgZGVmYXVsdHMgYXJlOiA8Y29kZT51bDwvY29kZT4sIDxjb2RlPmxpPC9jb2RlPiwg YW5kIDxjb2RlPnNtZF9nYWxsZXJ5X25hdjwvY29kZT4gcmVzcGVjdGl2ZWx5PC9saT4KCQk8 bGk+WW91IGNhbiBsYWJlbCBuYXZmaXJzdCwgbmF2bGFzdCwgbmF2cHJldiwgbmF2bmV4dCBh bmQgbmF2dGhpcyBieSBzcGVjaWZ5aW5nIHRoZW0gbGlrZSB0aGlzOiA8Y29kZT57bmF2cHJl djpQcmV2aW91c308L2NvZGU+ICh0aGUgJiM4MjE2OzomIzgyMTc7IGRlbGltaXRlciBpbiB0 aGlzIGNhc2UgaXMgdGhlIGl0ZW0gc3BlY2lmaWVkIGJ5IHBhcmFtZGVsaW0pPC9saT4KCQk8 bGk+bmF2ZWFybGllciBhbmQgbmF2bGF0ZXIgd2lsbCBieSBkZWZhdWx0IHNob3cgYWxsIHBh Z2VzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGN1cnJlbnQgb25lLiBZb3UgY2FuIG92ZXJyaWRl IHRoaXMgYnkgc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHlvdSB3YW50IHRvIHNo b3cgZWl0aGVyIHNpZGUuIGUuZy4gaWYgeW91IHdlcmUgb24gcGFnZSA5IG9mIDE1LCB7bmF2 ZWFybGllcjo0fSB7bmF2bGF0ZXI6M30gd291bGQgc2hvdyA8Y29kZT4mbHQ7Jmx0OyA1IDYg NyA4IDkgMTAgMTEgMTIgJmd0OyZndDs8L2NvZGU+PC9saT4KCTwvdWw+CgoJPGgzIGlkPSJj aGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDM+CgoJPHA+QWxsIGF2YWlsYWJsZSB2ZXJzaW9ucyBh bmQgY2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUuPC9wPgoKCTxwPjxzdHJvbmc+QmV0YTwvc3Ry b25nPjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZlYiAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVm ZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMS50eHQiPjAuMTwvYT4gWyA8 YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9nYWxsZXJ5X3Yw LjFfemlwLnR4dCI+Y29tcHJlc3NlZDwvYT4gXSB8IEluaXRpYWwgcmVsZWFzZSAmIzgyMTE7 IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+CgkJPGxpPjE5IEZlYiAwOCB8IDxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMi50 eHQiPjAuMjwvYT4gWyA8YSBocmVmPSJodHRwOi8vc3RlZmRhd3Nvbi5jb20vZG93bmxvYWRz L3NtZF9nYWxsZXJ5X3YwLjJfemlwLnR4dCI+Y29tcHJlc3NlZDwvYT4gXSB8IEFkZGVkIDxh IGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmlld3RvcGljLnBocD9waWQ9 MTcyNDU5I3AxNzI0NTkiPntnYWxsZXJ5aWR9PC9hPiAodGhhbmtzIHJsb2FkZXJybykgYW5k IHNvbWUgc2tlbGV0b24gZG9jczwvbGk+Cgk8L3VsPgoKCTxwPjxzdHJvbmc+T2ZmaWNpYWw8 L3N0cm9uZz48L3A+CgoJPHVsPgoJCTxsaT4xMSBNYXIgMDggfCA8YSBocmVmPSJodHRwOi8v c3RlZmRhd3Nvbi5jb20vZG93bmxvYWRzL3NtZF9nYWxsZXJ5X3YwLjMudHh0Ij4wLjM8L2E+ IFsgPGEgaHJlZj0iaHR0cDovL3N0ZWZkYXdzb24uY29tL2Rvd25sb2Fkcy9zbWRfZ2FsbGVy eV92MC4zX3ppcC50eHQiPmNvbXByZXNzZWQ8L2E+IF0gfCBPZmZpY2lhbCBwdWJsaWMgcmVs ZWFzZS4gRml4ZWQgc2lsbHkgZW1wdHkgZmllbGQgYnVnOyBhZGRlZCB7Y291bnRlcn0sIHtp bmRleH0gYW5kIHRoZSB0b3RhbHMgKGFsbCB0aGFua3MgPGEgaHJlZj0iaHR0cDovL2ZvcnVt LnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP3BpZD0xNzM0OTAjcDE3MzQ5MCI+amFr b2I8L2E+KTwvbGk+CgkJPGxpPjE1IE1hciAwOCB8IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3 c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAuMzEudHh0Ij4wLjMxPC9hPiBbIDxh IGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9kb3dubG9hZHMvc21kX2dhbGxlcnlfdjAu MzFfemlwLnR4dCI+Y29tcHJlc3NlZDwvYT4gXSB8IEZpeGVkIGEgY291cGxlIG9mIHVuZGVm aW5lZCBpbmRleGVzIGFuZCA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29t L3ZpZXd0b3BpYy5waHA/cGlkPTE3NDgxOCNwMTc0ODE4Ij5hZGRlZCB7Y2F0ZWdvcnlfdGl0 bGV9PC9hPiAodGhhbmtzIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20v dmlld3RvcGljLnBocD9waWQ9MTc0ODIwI3AxNzQ4MjAiPmpzdHViYnM8L2E+KTwvbGk+Cgk8 L3VsPgoKCTxoMyBpZD0iY3JlZGl0cyI+Q3JlZGl0czwvaDM+CgoJPHA+VGhpcyBwbHVnaW4g d291bGRuJiM4MjE3O3QgaGF2ZSBleGlzdGVkIHdpdGhvdXQgdGhlIGF3ZXNvbWUgbWluZCBv ZiBSb2JlcnQgV2V0emxtYXlyLiBIaXMgd2V0X2Zvcl9lYWNoX2ltYWdlIHBsdWdpbiBpcyB0 cnVlIGdlbml1czsgdGhpcyBzaW1wbHkgc3RhbmRzIG9uIHRoZSBzaG91bGRlcnMgb2YgdGhh dCBpZGVhIGFuZCByb2xscyBpbiBhIHNvdXBlZCB1cCB2ZXJzaW9uIG9mIHRoZSB0aHVtYm5h aWwgZ2VuZXJhdGlvbiBlbmdpbmUgZnJvbSBzbWRfc2xpbWJveC4gVG8gdGhhdCBlbmQsIHRo ZSBwbHVnaW4gaXMgYWxzbyBpbmRlYnRlZCB0byBhbnlvbmUgd2hvIGhhcyBwb3N0ZWQgZmVh dHVyZXMgb3IgYnVnIHJlcG9ydHMgdG8gbWUgb3IgdGhlIHNtZF9zbGltYm94IHRocmVhZC4g WW91JiM4MjE3O3JlIGFsbCBtYXJ2ZWxsb3VzLjwvcD4KCgk8cD48L2Rpdj48L3A+CjwhLS0g LS0tIEJFR0lOIFBMVUdJTiBDU1MgLS0tIC0tPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoj c21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30KI3NtZF9oZWxwIGNvZGUgeyBmb250LXdl aWdodDpib2xkOyBmb250OiAxMDUlLzEzMCUgIkNvdXJpZXIgTmV3IiwgY291cmllciwgbW9u b3NwYWNlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkNDO30KI3NtZF9oZWxwIGNvZGUuYmxv Y2sgeyBmb250LXdlaWdodDpub3JtYWw7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IGJhY2tn cm91bmQtY29sb3I6ICNmMGU2OGM7IGRpc3BsYXk6YmxvY2s7IG1hcmdpbjoxMHB4IDEwcHgg MjBweDsgcGFkZGluZzoxMHB4OyB9CiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVscCBhOnZp c2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90 dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9oZWxwIGE6 aG92ZXIsICNzbWRfaGVscCBhOmFjdGl2ZSB7IGNvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRp b246IG5vbmU7IGJvcmRlci1ib3R0b206IDJweCBzb2xpZCBibHVlOyBwYWRkaW5nLWJvdHRv bToxcHg7fQojc21kX2hlbHAgaDEgeyBjb2xvcjogIzM2OTsgZm9udDogMjBweCBHZW9yZ2lh LCBzYW5zLXNlcmlmOyBtYXJnaW46IDA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQojc21kX2hl bHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRpbmc6MTBweCAw IDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IH0KI3Nt ZF9oZWxwIGgzIHsgY29sb3I6ICM2OTM7IGZvbnQ6IGJvbGQgMTJweCBBcmlhbCwgc2Fucy1z ZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMDt0ZXh0LXRyYW5z Zm9ybTogdXBwZXJjYXNlO30KI3NtZF9oZWxwIGg0IHsgZm9udDogYm9sZCAxMXB4IEFyaWFs LCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMXB4OyBtYXJnaW46IDEwcHggMCAwIDt0 ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CiNzbWRfaGVscCAuYXR0LW5hbWUgeyBmb250 LXdlaWdodDpib2xkOyB9CiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6I2VlZTsgYm9y ZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQojc21kX2hlbHAgdGFibGUge3dpZHRoOjEwMCU7IHRl eHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQojc21kX2hlbHAgdGQsICNz bWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9Cjwv c3R5bGU+CjwhLS0gLS0tIEVORCBQTFVHSU4gQ1NTIC0tLSAtLT4KIjtzOjM6Im1kNSI7czoz MjoiYzdlYzMyYjdiNWNkMGRlMmJiZGU4MGQzYzg2ZDUwYjgiO30=