# Name: smd_gallery v0.61 # Type: Client side plugin # A(nother) thumbnail gallery/slideshow creator with unreal flexibility # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJzbWRfZ2FsbGVyeSI7czo2OiJhdXRob3IiO3M6MTE6 IlN0ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nv bi5jb20vIjtzOjc6InZlcnNpb24iO3M6NDoiMC42MSI7czoxMToiZGVzY3JpcHRpb24iO3M6 Njk6IkEobm90aGVyKSB0aHVtYm5haWwgZ2FsbGVyeS9zbGlkZXNob3cgY3JlYXRvciB3aXRo IHVucmVhbCBmbGV4aWJpbGl0eSI7czo0OiJjb2RlIjtzOjM3MjExOiJyZXF1aXJlX3BsdWdp bignc21kX2xpYicpOw0KDQovLyBNTFAgc3VwcG9ydA0KZ2xvYmFsICRzbWRfZ2FsbExhbmc7 DQokc21kX2dhbGxTdHIgPSBhcnJheSgNCgknbmF2Zmlyc3QnID0+ICdGaXJzdCcsDQoJJ25h dmxhc3QnID0+ICdMYXN0JywNCgknbmF2cHJldicgPT4gJyZsYXF1bzsnLA0KCSduYXZuZXh0 JyA9PiAnJnJhcXVvOycsDQopOw0KJHNtZF9nYWxsTGFuZyA9IG5ldyBzbWRfTUxQKCdzbWRf Z2FsbGVyeScsICdzbWRfZ2FsbCcsICRzbWRfZ2FsbFN0cik7DQoNCmZ1bmN0aW9uIHNtZF9n YWxsZXJ5KCRhdHRzLCAkdGhpbmc9JycpIHsNCglnbG9iYWwgJHByZXRleHQsICR0aGlzYXJ0 aWNsZSwgJGltZ19kaXIsICRkYXRlZm9ybWF0LCAkc21kX2dhbGxMYW5nLCAkbDEwbl9sYW5n dWFnZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJ J2NvbHVtbnMnID0+ICcnLA0KCQknZGVsaW0nID0+ICcsJywNCgkJJ3BhcmFtZGVsaW0nID0+ ICc6JywNCgkJJ2NvbGxhdGVkZWxpbScgPT4gJywnLA0KCQknc3RyaWN0ZmllbGRzJyA9PiAn MCcsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ2NvdW50Zm9ybScgPT4gJycsDQoJCSdjb3VudHBv cycgPT4gJ2Fib3ZlJywNCgkJJ2lkJyA9PiAnJywNCgkJJ25hbWUnID0+ICcnLA0KCQknY2F0 ZWdvcnknID0+ICcnLA0KCQknYXNwZWN0JyA9PiAnJywNCgkJJ2F1dGhvcicgPT4gJycsDQoJ CSdkaW1lbnNpb25zJyA9PiAnJywNCgkJJ2V4dGVuc2lvbicgPT4gJycsDQoJCSdkaXJlY3Rv cnknID0+ICcnLA0KCQknbWF0Y2gnID0+ICcnLA0KCQknc3VibGV2ZWwnID0+ICcwJywNCgkJ J2VzY2FwZScgPT4gJ2FsdCwgdGl0bGUsIGNhcHRpb24nLA0KCQknc29ydCcgPT4gJycsDQoJ CSdvZmZzZXQnID0+ICcwJywNCgkJJ2xpbWl0JyA9PiAnMCcsDQoJCSdtYXhsaW1pdCcgPT4g Jzk5OTk5JywNCgkJJ2dyb3VwbGltaXQnID0+ICc5OTk5OScsDQoJCSd0aHVtYmxpbWl0JyA9 PiAnOTk5OTknLA0KCQkndGh1bWJvZmZzZXQnID0+ICcwJywNCgkJJ3RodW1iJyA9PiAnMDox JywNCgkJJ3RodW1ic2l6ZScgPT4gJycsDQoJCSdpbWdzaXplJyA9PiAnJywNCgkJJ29uY2hh bmdlJyA9PiAnY2F0ZWdvcnknLA0KCQknb25jaGFuZ2V3cmFwdGFnJyA9PiAnJywNCgkJJ29u Y2hhbmdlY2xhc3MnID0+ICcnLA0KCQknb2JqZWN0Zm9ybScgPT4gJycsDQoJCSdncm91cHRh ZycgPT4gJycsDQoJCSdncm91cGNsYXNzJyA9PiAnJywNCgkJJ3RleHQnID0+ICcnLA0KCQkn Zm9ybWF0JyA9PiAkZGF0ZWZvcm1hdCwNCgkJJ2dtdCcgPT4gJycsDQoJCSdsYW5nJyA9PiAn JywNCgkJJ2NvbGxhdGUnID0+ICcnLA0KCQknY29tYm8nID0+ICcnLA0KCQkncGFnaW5nJyA9 PiAnMCcsDQoJCSdwYWdlZm9ybScgPT4gJycsDQoJCSdwYWdlcG9zJyA9PiAnYmVsb3cnLA0K CQknbmF2d3JhcHRhZycgPT4gJ3VsJywNCgkJJ25hdmJyZWFrJyA9PiAnbGknLA0KCQknbmF2 Y2xhc3MnID0+ICdzbWRfZ2FsbGVyeV9uYXYnLA0KCQknZW1wdHljbGFzcycgPT4gJ2VtcHR5 JywNCgkJJ2dhbGxlcnlpZCcgPT4gJz80OjYnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJCSdo dG1sX2lkJyA9PiAnJywNCgkJJ2JyZWFrJyA9PiAnJywNCgkJJ2NsYXNzJyA9PiAnJywNCgkJ J2JyZWFrY2xhc3MnID0+ICcnLA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0K DQoJLy8gQ2F0ZWdvcnkgcmVsaWVzIG9uIHdoZXRoZXIgaWQgaGFzIGJlZW4gc3BlY2lmaWVk IG9yIG5vdC4NCgkvLyBsQXR0cygpIHdvbid0IGxldCB1cyBoYW5kbGUgdGhpcyBsb2dpYyBz byBpdCBoYXMgdG8gYmUgZG9uZSBtYW51YWxseQ0KCSRhdHRlbXB0TWF0Y2ggPSAoZW1wdHko JGNhdGVnb3J5KSAmJiBlbXB0eSgkaWQpICYmIGVtcHR5KCRuYW1lKSkgPyBmYWxzZSA6IHRy dWU7DQoJJGNhdGVnb3J5ID0gaXNzZXQoJGNhdGVnb3J5KSA/IGRvU2xhc2goJGNhdGVnb3J5 KSA6ICgoJGlkPT0nJykgPyAkcHJldGV4dFsnYyddOiAnJyk7DQoJJHNvcnQgPSAoJHNvcnQp ID8gJHNvcnQgOiAoICgkaWQpID8gJ2lkJyA6ICdjYXRlZ29yeScgKTsNCg0KCS8vICoqIExP T0tVUCBUQUJMRVMNCgkvLyAkZmllbGRNYXAgaG9sZHMgZGF0YWJhc2UgY29sdW1uIGFzIGtl eSwgYW5kIHJlcGxhY2VtZW50IGlkZW50aWZpZXIgYXMgdmFsdWUuDQoJLy8gQWRkaXRpb25h bCBjb2xzIGNvcGllZCB0byAkZXh0cmFNYXAgZm9yIGl0ZXJhdGlvbiB3aGlsZSBjcmVhdGlu ZyByZXBsYWNlbWVudHMuDQoJLy8gVXNlIGFycmF5X3NlYXJjaCB0byBmaW5kIGlmIHZhbHVl IGV4aXN0cyBhbmQgcmV0dXJuIGNvcnJlY3Qga2V5IGZvciB1c2UgaW4gZGIgY2FsbHMvYXJy YXkgcmVmcy4NCgkkZmllbGRNYXAgPSBhcnJheSgpOw0KCSRleHRyYU1hcCA9IGFycmF5KCk7 DQoJJGNvcmVDb2xzID0gYXJyYXkoIm5hbWUiLCAiaWQiLCAiYWx0IiwgImNhcHRpb24iLCAi Y2F0ZWdvcnkiLCAiYXV0aG9yIiwgImRhdGUiLCAiZXh0IiwgInc6d2lkdGgiLCAiaDpoZWln aHQiLCAidGh1bWJfdzp0aHVtYl93aWR0aCIsICJ0aHVtYl9oOnRodW1iX2hlaWdodCIsICJ0 aHVtYm5haWw6aGFzdGh1bWIiKTsNCgkkbWxwRmllbGRzID0gYXJyYXkoImFsdCIsICJjYXB0 aW9uIik7IC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUgTUxQIGNvbHVtbiBuYW1lcywgc2luY2Ug dXNpbmcgZ2V0Um93cygpIGxhdGVyIGRvZXMgbm90LiBDYXRlZ29yeSB0aXRsZSBhbHNvIGhh cyB0aGUgc2FtZSB0cmVhdG1lbnQNCgkkdGhpc2xhbmcgPSAoaXNzZXQoJGwxMG5fbGFuZ3Vh Z2VbJ2xvbmcnXSkpID8gJGwxMG5fbGFuZ3VhZ2VbJ2xvbmcnXSA6IExBTkc7DQoJJGRmbHRf dGJsID0gUEZYLiJ0eHBfaW1hZ2UiOw0KCSRjb2x1bW5zID0gZG9fbGlzdCgkY29sdW1ucyk7 DQoJZm9yZWFjaCAoYXJyYXlfbWVyZ2UoJGNvcmVDb2xzLCAkY29sdW1ucykgYXMgJGNvbGlu Zm8pIHsNCgkJJGNvbGJpdCA9IGRvX2xpc3QoJGNvbGluZm8sICI6Iik7DQoJCSRjb2x0Ymwg PSBkb19saXN0KCRjb2xiaXRbMF0sICIuIik7DQoNCgkJaWYgKCRjb2xiaXRbMF0gPT0gJycp IGNvbnRpbnVlOw0KDQoJCWlmIChjb3VudCgkY29sdGJsKSA+IDEpIHsNCgkJCSR0YmwgPSAk Y29sdGJsWzBdOw0KCQkJJGNvbG5hbWUgPSAkY29sdGJsWzFdOw0KCQl9IGVsc2Ugew0KCQkJ JHRibCA9ICRkZmx0X3RibDsNCgkJCSRjb2xuYW1lID0gJGNvbHRibFswXTsNCgkJfQ0KCQkk Y29saWQgPSAoY291bnQoJGNvbGJpdCkgPiAxKSA/ICRjb2xiaXRbMV0gOiAkY29sbmFtZTsN CgkJJGZpZWxkTWFwWygoJHRibCk/JHRibC4nLic6JycpLiggKGlzc2V0KCRsMTBuX2xhbmd1 YWdlWydsb25nJ10pICYmIGluX2FycmF5KCRjb2xuYW1lLCAkbWxwRmllbGRzKSkgPyBfbDEw bl9tYWtlX2ZpZWxkX25hbWUoJGNvbG5hbWUsICR0aGlzbGFuZykuICcgQVMgJy4kY29sbmFt ZSAgOiAkY29sbmFtZSApXSA9ICRjb2xpZDsNCgkJaWYgKCFpbl9hcnJheSgkY29saW5mbywg JGNvcmVDb2xzKSkgew0KCQkJJGV4dHJhTWFwWyRjb2xuYW1lXSA9ICRjb2xpZDsNCgkJfQ0K CX0NCgkkZmllbGRNYXAgPSBhcnJheV91bmlxdWUoJGZpZWxkTWFwKTsNCg0KCS8vIEhhbmRs ZSBmb3JtcyBhbmQgc2V0IGEgZGVmYXVsdCB0YWcgaWYgbm9uZSBzcGVjaWZpZWQNCgkkdGhp bmcgPSAoZW1wdHkoJGZvcm0pKSA/ICR0aGluZyA6IGZldGNoX2Zvcm0oJGZvcm0pOw0KCSR0 aGluZyA9IChlbXB0eSgkdGhpbmcpKSA/ICc8YSBocmVmPSJ7dXJsfSIgYWx0PSJ7YWx0fSI+ PHR4cDppbWFnZSBpZD0ie2lkfSIgLz48L2E+JyA6ICR0aGluZzsNCgkkb2JqZWN0Zm9ybSA9 IChlbXB0eSgkb2JqZWN0Zm9ybSkpID8gJycgOiBmZXRjaF9mb3JtKCRvYmplY3Rmb3JtKTsN Cg0KCS8vIENvdW50aW5nDQoJJGNvdW50UG9zQWxsb3dlZCA9IGFycmF5KCJhYm92ZSIsICJi ZWxvdyIpOw0KCSRjb3VudHBvc25zID0gYXJyYXkoKTsNCgkkY291bnRpbmcgPSAwOw0KCWlm ICgkY291bnRmb3JtKSB7DQoJCSRjb3VudGluZyA9IDE7DQoJCSRjb3VudGZvcm0gPSBkb19s aXN0KCRjb3VudGZvcm0sICRkZWxpbSk7DQoJCSRjb3VudHBvcyA9IHN0cl9yZXBsYWNlKCdz bWRfJywgJycsICRjb3VudHBvcyk7IC8vIEZvciBjb252ZW5pZW5jZQ0KCQkkY291bnRwb3Mg PSBkb19saXN0KCRjb3VudHBvcywgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvdW50cG9zIGFz ICRjb3VudGl0ZW0pIHsNCgkJCSRjb3VudHBvc25zW10gPSAoaW5fYXJyYXkoJGNvdW50aXRl bSwgJGNvdW50UG9zQWxsb3dlZCkpID8gJGNvdW50aXRlbSA6ICRjb3VudFBvc0FsbG93ZWRb MF07DQoJCX0NCgl9DQoNCgkvLyBQYWdpbmcgaW5pdA0KCSRwYWdlUG9zQWxsb3dlZCA9IGFy cmF5KCJiZWxvdyIsICJhYm92ZSIpOw0KCSRwYWdlb3V0ID0gYXJyYXkoKTsNCglpZiAoJHBh Z2Vmb3JtKSB7DQoJCSRwYWdpbmcgPSAxOw0KCQkkcGFnZWZvcm0gPSBmZXRjaF9mb3JtKCRw YWdlZm9ybSk7DQoJCSRwYWdlcG9zID0gc3RyX3JlcGxhY2UoJ3NtZF8nLCAnJywgJHBhZ2Vw b3MpOw0KCQkkcGFnZXBvcyA9IGRvX2xpc3QoJHBhZ2Vwb3MsICRkZWxpbSk7DQoJCWZvcmVh Y2ggKCRwYWdlcG9zIGFzICRwYWdlaXRlbSkgew0KCQkJJHBhZ2VvdXRbXSA9IChpbl9hcnJh eSgkcGFnZWl0ZW0sICRwYWdlUG9zQWxsb3dlZCkpID8gJHBhZ2VpdGVtIDogJHBhZ2VQb3NB bGxvd2VkWzBdOw0KCQl9DQoJfQ0KDQoJLy8gb25jaGFuZ2UgdmVyaWZpY2F0aW9uDQoJJG9u Y2hhbmdlID0gZG9fbGlzdCgkb25jaGFuZ2UsICRkZWxpbSk7DQoJJG9uY2hhbmdlID0gKCRv bmNoYW5nZVswXSA9PSAiIikgPyBhcnJheSgpIDogJG9uY2hhbmdlOw0KCSRyZXNldE9wdHMg PSAkcmVzZXRGb3JtcyA9IGFycmF5KCk7DQoJZm9yZWFjaCAoJG9uY2hhbmdlIGFzICRyZXNl dE9wdCkgew0KCQkkcmVzZXRQYXJ0cyA9IGRvX2xpc3QoJHJlc2V0T3B0LCAkcGFyYW1kZWxp bSk7DQoNCgkJaWYgKGNvdW50KCRyZXNldFBhcnRzKSA+IDEpIHsNCgkJCWlmICgkcmVzZXRQ YXJ0c1swXSA9PSAnc21kX2V2ZXJ5Jykgew0KCQkJCSRyZXNldE9wdHNbJHJlc2V0UGFydHNb MF0uJHBhcmFtZGVsaW0uJHJlc2V0UGFydHNbMV1dID0gIiI7DQoJCQl9IGVsc2Ugew0KCQkJ CSRyZXNldEZvcm1zWyRyZXNldFBhcnRzWzBdXSA9ICRyZXNldFBhcnRzWzFdOw0KCQkJCSRy ZXNldE9wdHNbJHJlc2V0UGFydHNbMF1dID0gIiI7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkk cmVzZXRPcHRzWyRyZXNldFBhcnRzWzBdXSA9ICIiOw0KCQl9DQoJfQ0KDQoJLy8gRXNjYXBp bmcNCgkkc3BjID0gKCRzdHJpY3RmaWVsZHMpID8gMCA6IDE7DQoJJGVzY2FwZXMgPSBkb19s aXN0KCRlc2NhcGUsICRkZWxpbSk7DQoJZm9yZWFjaCAoJGVzY2FwZXMgYXMgJGlkeCA9PiAk dmFsKSB7DQoJCWlmICgkdmFsID09ICcnKSB7DQoJCQl1bnNldCgkZXNjYXBlc1skaWR4XSk7 DQoJCX0NCgl9DQoNCgkvLyBUaGUgZ2FsbGVyeSBpZGVudGlmaWVyIGlzIHVzZWQgZm9yIGtl ZXBpbmcgdHJhY2sgb2YgbmV4dC9wcmV2IHRodW1ibmFpbCBwYWdlIGxpbmtzDQoJJGdhbGxJ RCA9ICcnOw0KCWlmICgkZ2FsbGVyeWlkID09ICcnIHx8IHN1YnN0cigkZ2FsbGVyeWlkLDAs MSkgPT0gIj8iKSB7DQoJCS8vIEdlbmVyYXRlIGEgKGZhaXJseSBsaWtlbHkpIHVuaXF1ZSBJ RCBmb3IgdGhpcyBnYWxsZXJ5IGluc3RhbmNlDQoJCSRnYWxsVG1wID0gbWQ1KCRjYXRlZ29y eS4kaWQuJGRpcmVjdG9yeS4kbWF0Y2guJHN1YmxldmVsLiRzb3J0LiRsaW1pdC4kbWF4bGlt aXQpOw0KCQlsaXN0KCRnYWxsTGVuLCAkZ2FsbFNraXApID0gZXhwbG9kZSgiOiIsIHN1YnN0 cigkZ2FsbGVyeWlkLDEpKTsNCgkJJGdhbGxMZW4gPSAgKGVtcHR5KCRnYWxsTGVuKSkgPyAi NCIgOiAkZ2FsbExlbjsNCgkJJGdhbGxTa2lwID0gIChlbXB0eSgkZ2FsbFNraXApKSA/ICIx IiA6ICRnYWxsU2tpcDsNCgkJZm9yICgkaWR4ID0gMCwgJGNudCA9IDA7ICRjbnQgPCAkZ2Fs bExlbjsgJGNudCsrLCAkaWR4ID0gKCgkaWR4KyRnYWxsU2tpcCkgJSBzdHJsZW4oJGdhbGxU bXApKSkgew0KCQkJJGdhbGxJRCAuPSAkZ2FsbFRtcFskaWR4XTsNCgkJfQ0KCX0gZWxzZSB7 DQoJCSRnYWxsSUQgPSAkZ2FsbGVyeWlkOw0KCX0NCgkkZ2FsbElEID0gInNtZF9nbHJ5XyIu JGdhbGxJRDsgLy8gQXZvaWQgKGFscmVhZHkgaW5jcmVkaWJseSB1bmxpa2VseSkgbmFtZXNw YWNlIGNsYXNoZXMNCg0KCS8vIFNldCB1cCB0aGUgdmFyaWFibGVzIGZyb20gdGhlIHRodW1i IG9wdGlvbi4NCgkvLyBEb24ndCB1c2UgcGFyYW1kZWxpbSBoZXJlIG9yIHRoZSBkZWZhdWx0 IG9wdGlvbiBicmVha3MNCgkkdGh1bWJPcHRzID0gZG9fbGlzdCgkdGh1bWIsICI6Iik7DQoJ aWYgKGNvdW50KCR0aHVtYk9wdHMpID09IDEpIHsNCgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0 c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1bWJtb2QgPSAidCI7DQoJfSBlbHNlIHsN CgkJJGZ1bGxtb2QgPSAoJHRodW1iT3B0c1swXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCQkkdGh1 bWJtb2QgPSAoJHRodW1iT3B0c1sxXSA9PSAxKSA/ICJ0IiA6ICIiOw0KCX0NCg0KCS8vIFRo ZSBtYW5uZXIgb2Ygb2J0YWluaW5nIGZpbGVzIGRpZmZlcnMgaWYgdXNpbmcgZGlyZWN0b3J5 IHZzIGNhdGVnb3J5L2lkDQoJJHJzID0gYXJyYXkoKTsNCglpZiAoJGRpcmVjdG9yeSkgew0K CQkkcnMgPSBzbWRfZG9EaXJlY3RvcnkoJGRpcmVjdG9yeSwgMCwgJHN1YmxldmVsLCAkbWF0 Y2gsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJGFsbEltYWdlcywgJG51bVBhZ2VzLCAkdGh1 bVBhZ2UsICRvZmZzZXQpID0gc21kX2dldFBhZ2UoJHJzLCAkZ2FsbElELCAkbGltaXQsICRv ZmZzZXQsICRwYWdpbmcpOw0KCQkkZGlybGltaXQgPSAoJGxpbWl0PT0wKSA/ICRtYXhsaW1p dCA6ICRsaW1pdDsNCgkJJHBvc3RPcmRlciA9IGFycmF5KCk7DQoJCSRmaXhlZE9yZGVyID0g MDsNCgkJJHJhbmRzb3J0ID0gZmFsc2U7DQoJfSBlbHNlIHsNCgkJLy8gUHJvY2VzcyBjYXRl Z29yaWVzL0lEcyBhbmQgbWFrZSB1cCB0aGUgY3J1eCBvZiB0aGUgd2hlcmUgY2xhdXNlLg0K CQkvLyBDbGF1c2Ugb3JkZXIgPSBJRHMgT1IgY2F0cyBBTkQgIWNhdHMgQU5EICFJRHMNCgkJ JGNsYXVzZVtdID0gJzE9MSc7DQoJCSRjbGF1c2VPUiA9IGFycmF5KCk7DQoNCgkJLy8gU3Vy cm91bmQgZWFjaCBlbnRyeSBpbiB0aGUgSUQgbGlzdCB3aXRoIHF1b3RlcyBhbmQgbWFrZSBh biBTUUwgImluIiBsaXN0DQoJCSRzdWJpbmZvID0gKCRzdWJsZXZlbCkgPyAiaW1hZ2U6Ii4k c3VibGV2ZWwgOiAnJzsNCgkJbGlzdCgkaWRpbmMsICRpZGV4YykgPSBzbWRfZG9MaXN0KCRp ZCwgdHJ1ZSwgJycsIHRydWUsICRkZWxpbSwgJHNwYyk7DQoJCWxpc3QoJG5hbWluYywgJG5h bWV4YykgPSBzbWRfZG9MaXN0KCRuYW1lLCBmYWxzZSwgJycsIGZhbHNlLCAkZGVsaW0sICRz cGMpOw0KCQlsaXN0KCRjYXRpbmMsICRjYXRleGMpID0gc21kX2RvTGlzdCgkY2F0ZWdvcnks IGZhbHNlLCAkc3ViaW5mbywgdHJ1ZSwgJGRlbGltLCAkc3BjKTsNCgkJaWYgKCRpZGluYykg ew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5pZCBJTiAoJy5pbXBsb2RlKCIs IiwgJGlkaW5jKS4nKSc7DQoJCX0NCgkJaWYgKCRuYW1pbmMpIHsNCgkJCSRuYW1saXN0ID0g YXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAnZXhhY3QnID0+IGFycmF5KCkpOw0KCQkJZm9y ZWFjaCAoJG5hbWluYyBhcyAkdGhlTmFtZSkgew0KCQkJCSRuYW1lYml0cyA9IGRvX2xpc3Qo JHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJCQkkbmFtZWJpdHNbMV0gPSAoaXNzZXQoJG5h bWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRuYW1lYml0c1sxXSwgJG5hbWxpc3Qp KSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7DQoJCQkJJG5hbWxpc3RbJG5hbWViaXRzWzFd XVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0KCQkJaWYgKCRuYW1saXN0WydleGFjdCddKSB7 DQoJCQkJJGNsYXVzZU9SW10gPSBQRlguInR4cF9pbWFnZS5uYW1lIElOICgnIi5pbXBsb2Rl KCInLCciLCAkbmFtbGlzdFsnZXhhY3QnXSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2ggKCRu YW1saXN0WydyZWdleCddIGFzICRyZSkgew0KCQkJCSRjbGF1c2VPUltdID0gUEZYLiJ0eHBf aW1hZ2UubmFtZSBSRUdFWFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJfQ0K CQlpZiAoJGNhdGluYykgew0KCQkJJGNsYXVzZU9SW10gPSBQRlguJ3R4cF9pbWFnZS5jYXRl Z29yeSBJTiAoJy5pbXBsb2RlKCIsIiwgJGNhdGluYykuJyknOw0KCQl9DQoJCWlmICghZW1w dHkoJGNsYXVzZU9SKSkgew0KCQkJJGNsYXVzZVtdID0gJyAoJy5pbXBsb2RlKCIgT1IgIiwg JGNsYXVzZU9SKS4nKSAnOw0KCQl9DQoNCgkJJGNsYXVzZSA9IGltcGxvZGUoIiBBTkQgIiwg JGNsYXVzZSk7DQoJCSRjbGF1c2UgLj0gKCRjYXRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9p bWFnZS5jYXRlZ29yeSBOT1QgSU4gKCcuaW1wbG9kZSgiLCIsICRjYXRleGMpLicpJyA6ICcn Ow0KCQkkY2xhdXNlIC49ICgkaWRleGMpID8gJyBBTkQgJy5QRlguJ3R4cF9pbWFnZS5pZCBO T1QgSU4gKCcuaW1wbG9kZSgiLCIsICRpZGV4YykuJyknIDogJyc7DQoNCgkJaWYgKCRuYW1l eGMpIHsNCgkJCSRuYW1saXN0ID0gYXJyYXkoJ3JlZ2V4JyA9PiBhcnJheSgpLCAnZXhhY3Qn ID0+IGFycmF5KCkpOw0KCQkJZm9yZWFjaCAoJG5hbWV4YyBhcyAkdGhlTmFtZSkgew0KCQkJ CSRuYW1lYml0cyA9IGRvX2xpc3QoJHRoZU5hbWUsICRwYXJhbWRlbGltKTsNCgkJCQkkbmFt ZWJpdHNbMV0gPSAoaXNzZXQoJG5hbWViaXRzWzFdKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRu YW1lYml0c1sxXSwgJG5hbWxpc3QpKSA/ICRuYW1lYml0c1sxXSA6ICdleGFjdCc7DQoJCQkJ JG5hbWxpc3RbJG5hbWViaXRzWzFdXVtdID0gJG5hbWViaXRzWzBdOw0KCQkJfQ0KCQkJaWYg KCRuYW1saXN0WydleGFjdCddKSB7DQoJCQkJJGNsYXVzZSAuPSAiIEFORCAiLlBGWC4idHhw X2ltYWdlLm5hbWUgTk9UIElOICgnIi5pbXBsb2RlKCInLCciLCAkbmFtbGlzdFsnZXhhY3Qn XSkuIicpIjsNCgkJCX0NCgkJCWZvcmVhY2ggKCRuYW1saXN0WydyZWdleCddIGFzICRyZSkg ew0KCQkJCSRjbGF1c2UgLj0gIiBBTkQgIi5QRlguInR4cF9pbWFnZS5uYW1lIE5PVCBSRUdF WFAgJyIucHJlZ19xdW90ZSgkcmUpLiInIjsNCgkJCX0NCgkJfQ0KDQoJCS8vIElmIGEgY2F0 ZWdvcnkvaWQgb3B0aW9uIHdhcyBjaG9zZW4gYW5kIHRoZXkgbWF0Y2hlZCBub3RoaW5nLCB1 c2UgYSBib2d1cyBjYXRlZ29yeSB0aGF0IHNob3VsZCBub3QgZXhpc3QuDQoJCS8vIFRoaXMg ZW5zdXJlcyB0aGF0IHRoZSBwbHVnaW4gZG9lcyB0aGUgZXhwZWN0ZWQgdGhpbmcgb2YgbWF0 Y2hpbmcgbm90aGluZyBpbiB0aGUgZXZlbnQgaXQgZmluZHMgbm90aGluZy4NCgkJaWYgKCRj bGF1c2UgPT0gIjE9MSIgJiYgJGF0dGVtcHRNYXRjaCkgew0KCSAgCQkkY2xhdXNlID0gUEZY Lid0eHBfaW1hZ2UuY2F0ZWdvcnkgPSAic21kXycgLm10X3JhbmQoKS4gJyInOw0KCQl9DQoN CgkJJGNsYXVzZSA9ICcoJy5zdHJfcmVwbGFjZSgnU01EX0VNUFRZJywgJycsICRjbGF1c2Up LicpJzsNCg0KCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJZWNobyAiKysgSU5DTFVERUQvRVhD TFVERUQgSURzLCBOQU1FcyBBTkQgQ0FUcyArKyI7DQoJCQlpZiAoJGlkaW5jKSBkbXAoJGlk aW5jKTsNCgkJCWlmICgkaWRleGMpIGRtcCgkaWRleGMpOw0KCQkJaWYgKCRuYW1pbmMpIGRt cCgkbmFtaW5jKTsNCgkJCWlmICgkbmFtZXhjKSBkbXAoJG5hbWV4Yyk7DQoJCQlpZiAoJGNh dGluYykgZG1wKCRjYXRpbmMpOw0KCQkJaWYgKCRjYXRleGMpIGRtcCgkY2F0ZXhjKTsNCgkJ fQ0KDQoJCS8vIEZpbHRlciBieSBhc3BlY3QgcmF0aW8NCgkJaWYgKCRhc3BlY3QpIHsNCgkJ CSRhc3BlY3RzID0gZG9fbGlzdCgkYXNwZWN0LCAkZGVsaW0pOw0KDQoJCQkvLyBDb21wYXJl IGZ1bGxzaXplIG9yIHRodW1ibmFpbCBhc3BlY3QgcmF0aW9zDQoJCQkkZmxkbW9kID0gKCRm dWxsbW9kKSA9PSAndCcgPyAndGh1bWJfJyA6ICcnOw0KCQkJJHdmbGQgPSBQRlguJ3R4cF9p bWFnZS4nLiRmbGRtb2QuJ3cnOw0KCQkJJGhmbGQgPSBQRlguJ3R4cF9pbWFnZS4nLiRmbGRt b2QuJ2gnOw0KDQoJCQkkY2xhdXNlT1IgPSBhcnJheSgpOw0KCQkJZm9yZWFjaCAoJGFzcGVj dHMgYXMgJHJhdGlvKSB7DQoJCQkJc3dpdGNoKCRyYXRpbykgew0KCQkJCQljYXNlICdwb3J0 cmFpdCc6DQoJCQkJCQkkY2xhdXNlT1JbXSA9ICRoZmxkLiAnID4gJy4gJHdmbGQ7DQoJCQkJ CQlicmVhazsNCgkJCQkJY2FzZSAnbGFuZHNjYXBlJzoNCgkJCQkJCSRjbGF1c2VPUltdID0g JHdmbGQuICcgPiAnLiAkaGZsZDsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlICdzcXVhcmUn Og0KCQkJCQkJJGNsYXVzZU9SW10gPSAkaGZsZC4gJyA9ICcuICR3ZmxkOw0KCQkJCQkJYnJl YWs7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCFlbXB0eSgkY2xhdXNlT1IpKSB7DQoJCQkJJGNs YXVzZSAuPSAnIEFORCAnLiR3ZmxkLicgPiAwIEFORCAnLiRoZmxkLicgPiAwIEFORCAoJy5p bXBsb2RlKCIgT1IgIiwgJGNsYXVzZU9SKS4nKSAnOw0KCQkJfQ0KCQl9DQoNCgkJLy8gRmls dGVyIGJ5IGF1dGhvcg0KCQlpZiAoJGF1dGhvcikgew0KCQkJJGF1dGhvcnMgPSBkb19saXN0 KCRhdXRob3IsICRkZWxpbSk7DQoJCQkkY2xhdXNlIC49ICIgQU5EICIgLiBQRlguInR4cF9p bWFnZS5hdXRob3IgSU4gKCciLmltcGxvZGUoIicsJyIsICRhdXRob3JzKS4iJykiOw0KCQl9 DQoNCgkJLy8gRmlsdGVyIGJ5IGV4dGVuc2lvbg0KCQlpZiAoJGV4dGVuc2lvbikgew0KCQkJ JGV4dGVuc2lvbnMgPSBkb19saXN0KCRleHRlbnNpb24sICRkZWxpbSk7DQoJCQlmb3JlYWNo ICgkZXh0ZW5zaW9ucyBhcyAkaWR4ID0+ICRleHQpIHsNCgkJCQkkZXh0ZW5zaW9uc1skaWR4 XSA9ICIuIi4kZXh0Ow0KCQkJfQ0KCQkJJGNsYXVzZSAuPSAiIEFORCAiIC4gUEZYLiJ0eHBf aW1hZ2UuZXh0IElOICgnIi5pbXBsb2RlKCInLCciLCAkZXh0ZW5zaW9ucykuIicpIjsNCgkJ fQ0KDQoJCS8vIEZpbHRlciBieSBkaW1lbnNpb25zDQoJCWlmICgkZGltZW5zaW9ucykgew0K CQkJJGRpbUFsbG93ID0gYXJyYXkoJz0nLCAnPicsICc8JywgJz49JywgJzw9Jyk7DQoJCQkk ZGltcyA9IGRvX2xpc3QoJGRpbWVuc2lvbnMsICRkZWxpbSk7DQoNCgkJCS8vIENvbXBhcmUg ZnVsbHNpemUgb3IgdGh1bWJuYWlsIGFzcGVjdCByYXRpb3MNCgkJCSRmbGRtb2QgPSAoJGZ1 bGxtb2QpID09ICd0JyA/ICd0aHVtYl8nIDogJyc7DQoJCQkkd2ZsZCA9IFBGWC4ndHhwX2lt YWdlLicuJGZsZG1vZC4ndyc7DQoJCQkkaGZsZCA9IFBGWC4ndHhwX2ltYWdlLicuJGZsZG1v ZC4naCc7DQoNCgkJCSR3ZGltID0gJGRpbXNbMF07DQoJCQkkaGRpbSA9IChpc3NldCgkZGlt c1sxXSkpID8gJGRpbXNbMV0gOiAnJzsNCg0KCQkJJHdkaW12YWwgPSBwcmVnX3JlcGxhY2Uo Jy9bXjAtOV0vJywgJycsICR3ZGltKTsNCgkJCSRoZGltdmFsID0gcHJlZ19yZXBsYWNlKCcv W14wLTldLycsICcnLCAkaGRpbSk7DQoJCQkkd2RpbW9wID0gcHJlZ19yZXBsYWNlKCcvWzAt OV0vJywgJycsICR3ZGltKTsNCgkJCSR3ZGltb3AgPSBpbl9hcnJheSgkd2RpbW9wLCAkZGlt QWxsb3cpID8gJHdkaW1vcCA6ICc9JzsNCgkJCSRoZGltb3AgPSBwcmVnX3JlcGxhY2UoJy9b MC05XS8nLCAnJywgJGhkaW0pOw0KCQkJJGhkaW1vcCA9IGluX2FycmF5KCRoZGltb3AsICRk aW1BbGxvdykgPyAkaGRpbW9wIDogJz0nOw0KCQkJJGNsYXVzZSAuPSAoKCR3ZGltKSA/ICcg QU5EICcgLiAkd2ZsZCAuICR3ZGltb3AgLiAkd2RpbXZhbCA6ICcnKSAuICgoJGhkaW0pID8g JyBBTkQgJyAuICRoZmxkIC4gJGhkaW1vcCAuICRoZGltdmFsIDogJycpOw0KCQl9DQoNCgkJ Ly8gQ29udmVydCB0aGUgc29ydCBpbnRvIGEgdmFsaWQgc29ydGluZyBoaWVyYXJjaHkuDQoJ CS8vIE5vdGUgdGhhdCByYW5kb20gaXMgYSBzcGVjaWFsIGNhc2UgYW5kIHRoZSBmb2xsb3dp bmcgcnVsZXMgYXBwbHk6DQoJCS8vICAxKSBBbnl0aGluZyBhcHBlYXJpbmcgYmVmb3JlIHJh bmRvbSBpcyBwYXNzZWQgdG8gdGhlIGRhdGFiYXNlIHF1ZXJ5IGZvciBvcmRlcmluZw0KCQkv LyAgMikgQXMgc29vbiBhcyByYW5kb20gaXMgZW5jb3VudGVyZWQsIHRoZSByZXN0IG9mIHRo ZSBzb3J0IHN0cmluZyBpcyBpZ25vcmVkLg0KCQkvLyAgICAgVGhlIHJlc3VsdHNldCB3aWxs IGJlIHNvcnRlZCByYW5kb21seSBpbnN0ZWFkDQoJCS8vICAzKSBJZiByYW5kb20gYXBwZWFy cyBmaXJzdCBpbiB0aGUgbGlzdCwgdGhlIGRhdGEgaXMgcmV0cmlldmVkIHJhbmRvbWx5IHRo ZW4gdGhlDQoJCS8vICAgICByZW1haW5pbmcgb3B0aW9ucyBzb3J0IHRoZSByZXN1bHRzZXQN CgkJJGNsYXVzZVNvcnQgPSBhcnJheSgpOw0KCQkkcG9zdE9yZGVyID0gYXJyYXkoKTsNCgkJ JHJ1bGUgPSAic3FsIjsNCgkJJHBvc3RQcmVmaXggPSAiU09SVF8iOw0KCQkkZml4ZWRPcmRl ciA9ICRyYW5kc29ydCA9IGZhbHNlOw0KCQkkc29ydCA9IGRvX2xpc3QoJHNvcnQsICRkZWxp bSk7DQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkc29ydCk7ICRpZHgrKykgew0K CQkJJHNvcnRfZGlyID0gZXhwbG9kZSgnICcsICRzb3J0WyRpZHhdKTsNCgkJCSRkaXJlY3Rp b24gPSAkY29sUmVmID0gJyc7DQoJCQlpZiAoY291bnQoJHNvcnRfZGlyKSA8PSAxKSB7DQoJ CQkJJHNvcnRfZGlyWzFdID0gImFzYyI7DQoJCQl9DQoJCQlpZiAoJHJ1bGUgPT0gInNxbCIp IHsNCgkJCQkkZGlyZWN0aW9uID0gKCRzb3J0X2RpclsxXSA9PSAiZGVzYyIpID8gJyBkZXNj JyA6ICcgYXNjJzsNCgkJCX0gZWxzZSB7DQoJCQkJJGRpcmVjdGlvbiA9ICgkc29ydF9kaXJb MV0gPT0gImRlc2MiKSA/ICRwb3N0UHJlZml4LidERVNDJyA6ICRwb3N0UHJlZml4LidBU0Mn Ow0KCQkJfQ0KDQoJCQlzd2l0Y2ggKCRzb3J0X2RpclswXSkgew0KCQkJCWNhc2UgJ3JhbmRv bSc6DQoJCQkJCSRydWxlID0gInBvc3QiOw0KCQkJCQlpZiAoJGlkeCA9PSAwKSB7DQoJCQkJ CQkkY2xhdXNlU29ydFtdID0gJ3JhbmQoKSc7DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkcmFu ZHNvcnQgPSB0cnVlOw0KCQkJCQl9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ2ZpeGVkJzoN CgkJCQkJLy8gJ2ZpeGVkJyBvbmx5IHdvcmtzIG9uIGlkcyBvciBjYXRlZ29yaWVzDQoJCQkJ CSRmaXhlZE9yZGVyID0gKCRpZCA9PSAnJyAmJiAkY2F0ZWdvcnkgPT0gJycpID8gZmFsc2Ug OiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQkkY29sUmVmID0gYXJy YXlfc2VhcmNoKCRzb3J0X2RpclswXSwgJGZpZWxkTWFwKTsNCgkJCQkJJGNvbE5hbWUgPSAk ZmllbGRNYXBbJGNvbFJlZl07DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJaWYgKCRydWxlID09 ICJzcWwiKSB7DQoJCQkJaWYgKCRjb2xSZWYgIT0gJycpIHsNCgkJCQkJJGNsYXVzZVNvcnRb XSA9ICRjb2xSZWYuJGRpcmVjdGlvbjsNCgkJCQl9DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgh JHJhbmRzb3J0KSB7DQoJCQkJCWlmICgkY29sUmVmICE9ICcnKSB7DQoJCQkJCQkkcG9zdE9y ZGVyW10gPSBhcnJheSgiY29sIiA9PiAkY29sTmFtZSwgInNvcnQiID0+ICRkaXJlY3Rpb24p Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoNCgkJaWYgKGNvdW50KCRjbGF1c2VTb3J0 KSA+IDApIHsNCgkJCSRjbGF1c2UgLj0gJyBPUkRFUiBCWSAnIC4gaW1wbG9kZSgiLCIsJGNs YXVzZVNvcnQpOw0KCQl9DQoJCWlmICgkZGVidWcgPiAwKSB7DQoJCQllY2hvICIrKyBXSEVS RSBDTEFVU0UgKysiOw0KCQkJZG1wKCRjbGF1c2UpOw0KCQl9DQoJCS8vIFRoZSBkYXRhYmFz ZSBmaWVsZHMgcmVxdWlyZWQNCgkJJGZpZWxkcyA9IGltcGxvZGUoIiwiLCBhcnJheV9rZXlz KCRmaWVsZE1hcCkpOw0KCQkkY1RpdGxlID0gKGlzc2V0KCRsMTBuX2xhbmd1YWdlWydsb25n J10pKSA/IF9sMTBuX21ha2VfZmllbGRfbmFtZSgndGl0bGUnLCAkdGhpc2xhbmcpIDogJ3Rp dGxlJzsNCg0KCQkkcnMgPSBnZXRSb3dzKCINCgkJCVNFTEVDVCBESVNUSU5DVCAkZmllbGRz DQoJCQlGUk9NICIuUEZYLiJ0eHBfaW1hZ2UNCgkJCVdIRVJFICRjbGF1c2UNCgkJCUxJTUlU IDAsICRtYXhsaW1pdA0KCQkiLCAkZGVidWcpOw0KCQlsaXN0KCRhbGxJbWFnZXMsICRudW1Q YWdlcywgJHRodW1QYWdlLCAkb2Zmc2V0KSA9IHNtZF9nZXRQYWdlKCRycywgJGdhbGxJRCwg JGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKTsNCgl9DQoNCg0KCS8vIElzIHBvc3Qtb3JkZXJp bmcgcmVxdWlyZWQ/IERvIGl0DQoJaWYgKCRyYW5kc29ydCkgew0KCQlzaHVmZmxlKCRycyk7 DQoJfSBlbHNlIGlmIChjb3VudCgkcG9zdE9yZGVyKSA+IDApIHsNCgkJLy8gVHJhbnNsYXRl IHRoZSByb3dzIGludG8gY29sdW1ucyB0aGF0IGNhbiBiZSBzb3J0ZWQNCgkJZm9yZWFjaCgk cnMgYXMgJGtleSA9PiAkcm93KSB7DQoJCQlmb3JlYWNoICgkcm93IGFzICRpZGVudGlmaWVy ID0+ICRpdGVtKSB7DQoJCQkJJHZhcm5hbWUgPSAiY29sXyIuJGlkZW50aWZpZXI7DQoJCQkJ JHskdmFybmFtZX1bJGtleV0gPSAkaXRlbTsNCgkJCX0NCgkJfQ0KDQoJCS8vIE1ha2UgdXAg YW4gYXJyYXlfbXVsdGlzb3J0IGFyZyBsaXN0IGFuZCBleGVjdXRlIGl0Lg0KCQkvLyBUaGUg bmVjZXNzYXJ5IGV2aWwoKSBpcyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IG1hbnkgY29s cyB0aGVyZSB3aWxsIGJlIGluIHRoZSBhcnJheQ0KCQlmb3IgKCRpZHggPSAwOyAkaWR4IDwg Y291bnQoJHBvc3RPcmRlcik7ICRpZHgrKykgew0KCQkJJHNvcnRhcmdzW10gPSAnJGNvbF8n LiRwb3N0T3JkZXJbJGlkeF1bJ2NvbCddOw0KCQkJJHNvcnRhcmdzW10gPSAkcG9zdE9yZGVy WyRpZHhdWydzb3J0J107DQoJCX0NCgkJJHNvcnRpdCA9ICdhcnJheV9tdWx0aXNvcnQoJy5p bXBsb2RlKCIsICIsJHNvcnRhcmdzKS4nLCAkcnMpOyc7DQoJCWV2YWwoJHNvcnRpdCk7DQoJ fQ0KDQoJLy8gSXMgZml4ZWQtb3JkZXIgb3V0cHV0IGRlc2lyZWQ/IElmIHNvLCByZS1vcmRl ciB0aGUgJHJzDQoJaWYgKCRmaXhlZE9yZGVyKSB7DQoJCSRvcmRlcmVkUlMgPSBBcnJheSgp Ow0KCQkkaWdub3JlTGlzdCA9IEFycmF5KCk7DQoJCSRyZW1haW5pbmdSUyA9IEFycmF5KCk7 DQoNCgkJLy8gU3VjayBvdXQgdGhlIGZpeGVkIGl0ZW1zIGZpcnN0LiBJRHMgdGhlbiBjYXRl Z29yaWVzDQoJCWZvciAoJGlkeCA9IDA7ICRpZHggPCBjb3VudCgkaWRpbmMpOyAkaWR4Kysp IHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGlkICYmIGRvUXVvdGUo JHJvd1snaWQnXSkgPT0gJGlkaW5jWyRpZHhdKSB7DQoJCQkJCSRvcmRlcmVkUlNbXSA9ICRy b3c7DQoJCQkJCSRpZ25vcmVMaXN0W10gPSAkcm93WydpZCddOw0KCQkJCQlicmVhazsNCgkJ CQl9DQoJCQl9DQoJCX0NCgkJZm9yICgkaWR4ID0gMDsgJGlkeCA8IGNvdW50KCRjYXRpbmMp OyAkaWR4KyspIHsNCgkJCWZvcmVhY2goJHJzIGFzICRyb3cpIHsNCgkJCQlpZiAoJGNhdGVn b3J5ICYmIGRvUXVvdGUoJHJvd1snY2F0ZWdvcnknXSkgPT0gJGNhdGluY1skaWR4XSkgew0K CQkJCQkkb3JkZXJlZFJTW10gPSAkcm93Ow0KCQkJCQkkaWdub3JlTGlzdFtdID0gJHJvd1sn aWQnXTsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJLy8gVGFjayBvbiB0aGUgcmVtYWluaW5nIHJv d3MNCgkJaWYgKCRycykgew0KCQkJZm9yZWFjaCgkcnMgYXMgJHJvdykgew0KCQkJCWlmICgh aW5fYXJyYXkoJHJvd1snaWQnXSwgJGlnbm9yZUxpc3QpKSB7DQoJCQkJCSRyZW1haW5pbmdS U1tdID0gJHJvdzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHJzID0gYXJyYXlfbWVyZ2UoJG9y ZGVyZWRSUywgJHJlbWFpbmluZ1JTKTsNCgl9DQoNCgkvLyBHcmFiIHRoZSBwb3J0aW9uIG9m IHRoZSByZWNvcmQgc2V0IGFjdHVhbGx5IHJlcXVpcmVkIHRvIGl0ZXJhdGUgb3Zlcg0KCWlm ICgkcnMpIHsNCgkJJHJzID0gYXJyYXlfc2xpY2UoJHJzLCAkb2Zmc2V0LCAoKCRkaXJlY3Rv cnkpID8gJGRpcmxpbWl0IDogKCgkbGltaXQ9PTApID8gJG1heGxpbWl0IDogJGxpbWl0KSkp Ow0KCX0NCg0KCS8vIFByZXBhcmUgZml4ZWQgdGh1bWJzaXplcw0KCSR0aHVtYldpZHRoID0g JHRodW1iSGVpZ2h0ID0gJyc7DQoJJHRodW1iV1VuaXRzID0gJHRodW1iSFVuaXRzID0gJyc7 DQoJaWYgKCR0aHVtYnNpemUpIHsNCgkJJHRodW1iU2l6ZXMgPSBkb19saXN0KCR0aHVtYnNp emUsICRkZWxpbSk7DQoJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcnLCAk dGh1bWJTaXplc1swXSk7DQoJCWlmIChjb3VudCgkdGh1bWJTaXplcykgPT0gMSkgew0KCQkJ JHRodW1iV2lkdGggPSAkdGh1bWJIZWlnaHQgPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywg JycsICR0aHVtYlNpemVzWzBdKTsNCgkJCSR0aHVtYldVbml0cyA9ICR0aHVtYkhVbml0cyA9 ICgkdW5pdHMgPT0gJycpID8gJHRodW1iV1VuaXRzIDogJHVuaXRzOw0KCQl9IGVsc2Ugew0K CQkJJHRodW1iV2lkdGggPSBwcmVnX3JlcGxhY2UoJy9bXjAtOV0vJywgJycsICR0aHVtYlNp emVzWzBdKTsNCgkJCSR0aHVtYkhlaWdodCA9IHByZWdfcmVwbGFjZSgnL1teMC05XS8nLCAn JywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJJHRodW1iV1VuaXRzID0gKCR1bml0cyA9PSAnJyAm JiAkdGh1bWJXaWR0aCAhPSAnJykgPyAkdGh1bWJXVW5pdHMgOiAkdW5pdHM7DQoJCQkkdW5p dHMgPSBwcmVnX3JlcGxhY2UoJy9bMC05XS8nLCAnJywgJHRodW1iU2l6ZXNbMV0pOw0KCQkJ JHRodW1iSFVuaXRzID0gKCR1bml0cyA9PSAnJyAmJiAkdGh1bWJIZWlnaHQgIT0gJycpID8g JHRodW1iSFVuaXRzIDogJHVuaXRzOw0KCQl9DQoJfQ0KDQoJLy8gUHJlcGFyZSBmaXhlZCBp bWFnZSBzaXplcw0KCSRpbWFnZVdpZHRoID0gJGltYWdlSGVpZ2h0ID0gJyc7DQoJJGltYWdl V1VuaXRzID0gJGltYWdlSFVuaXRzID0gJyc7DQoJaWYgKCRpbWdzaXplKSB7DQoJCSRpbWFn ZVNpemVzID0gZG9fbGlzdCgkaW1nc2l6ZSwgJGRlbGltKTsNCgkJJHVuaXRzID0gcHJlZ19y ZXBsYWNlKCcvWzAtOV0vJywgJycsICRpbWFnZVNpemVzWzBdKTsNCgkJaWYgKGNvdW50KCRp bWFnZVNpemVzKSA9PSAxKSB7DQoJCQkkaW1hZ2VXaWR0aCA9ICRpbWFnZUhlaWdodCA9IHBy ZWdfcmVwbGFjZSgnL1teMC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdl V1VuaXRzID0gJGltYWdlSFVuaXRzID0gKCR1bml0cyA9PSAnJykgPyAkaW1hZ2VXVW5pdHMg OiAkdW5pdHM7DQoJCX0gZWxzZSB7DQoJCQkkaW1hZ2VXaWR0aCA9IHByZWdfcmVwbGFjZSgn L1teMC05XS8nLCAnJywgJGltYWdlU2l6ZXNbMF0pOw0KCQkJJGltYWdlSGVpZ2h0ID0gcHJl Z19yZXBsYWNlKCcvW14wLTldLycsICcnLCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkkaW1hZ2VX VW5pdHMgPSAoJHVuaXRzID09ICcnICYmICRpbWFnZVdpZHRoICE9ICcnKSA/ICRpbWFnZVdV bml0cyA6ICR1bml0czsNCgkJCSR1bml0cyA9IHByZWdfcmVwbGFjZSgnL1swLTldLycsICcn LCAkaW1hZ2VTaXplc1sxXSk7DQoJCQkkaW1hZ2VIVW5pdHMgPSAoJHVuaXRzID09ICcnICYm ICRpbWFnZUhlaWdodCAhPSAnJykgPyAkaW1hZ2VIVW5pdHMgOiAkdW5pdHM7DQoJCX0NCgl9 DQoNCgkvLyBDb2xsYXRpb24gZGVmZXJzIHBhcnNpbmcgdGhlIGZvcm0gZm9yIGVhY2ggcmV0 dXJuZWQgaXRlbS4NCgkvLyBJbnN0ZWFkIGl0IG91dHB1dHMgdGhlIGRhdGEgYXMgYSBsaXN0 IGF0IHRoZSBlbmQgKGl0ZW1zIG1heSBiZSBpbmRpdmlkdWFsbHkgcXVvdGVkIG9yIGV4dHJh Y3RlZCBpZiByZXF1aXJlZCkNCgkvL1RPRE8gOiBBZGQgQUxXQVlTIHN3aXRjaCBhcyBhIHNo b3J0Y3V0IHRvIHNwZWNpZnkgdGhhdCBhbGwgbWF0Y2hpbmcgaXRlbXMgKHJlZ2FyZGxlc3Mg b2YgIzEsICMyLCAjMyBldGMpIGFyZSB0byBiZSBxdW90ZWQNCglpZiAoJGNvbGxhdGUpIHsN CgkJJGRibFF1b3RlID0gJHNnbFF1b3RlID0gYXJyYXkoJ1NNRE5PTkUnKTsNCgkJJGNvbGxh dGVPcHRzID0gZG9fbGlzdCgkY29sbGF0ZSwgJGRlbGltKTsNCgkJZm9yZWFjaCAoJGNvbGxh dGVPcHRzIGFzICRvcHRpb24pIHsNCgkJCSRpbmRleGVzID0gZG9fbGlzdCgkb3B0aW9uLCAk cGFyYW1kZWxpbSk7DQoJCQkkY29sVHlwZSA9IGFycmF5X3NoaWZ0KCRpbmRleGVzKTsNCgkJ CS8vIFN1cHBseWluZyAncXVvdGUnIG9uIGl0cyBvd24gd2lsbCBlbXB0eSB0aGUgcmVsZXZh bnQgYXJyYXksIGltcGx5aW5nICJBTEwiIGZpZWxkcyBhcmUgdG8gYmUgcXVvdGVkDQoJCQlz d2l0Y2ggKCRjb2xUeXBlKSB7DQoJCQkJY2FzZSAic2dscXVvdGUiOg0KCQkJCQkkc2dsUXVv dGUgPSAkaW5kZXhlczsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAiZGJscXVvdGUiOg0KCQkJ CWNhc2UgInF1b3RlIjoNCgkJCQkJJGRibFF1b3RlID0gJGluZGV4ZXM7DQoJCQkJCWJyZWFr Ow0KCQkJfQ0KCQl9DQoJfQ0KDQoJLy8gQ29tYm9zIGFyZSB1c2VyLWRlZmluZWQgY29tYmlu YXRpb25zIG9mIHJlcGxhY2VtZW50IG1vZGlmaWVycyAoZS5nLiBpZGV4dDoge2lkfXtleHR9 LCAuLi4NCgkkY29tYm9zID0gYXJyYXkoKTsNCglpZiAoJGNvbWJvKSB7DQoJCSRjb21ibyA9 IGRvX2xpc3QoJGNvbWJvLCAkZGVsaW0pOw0KCQlmb3JlYWNoICgkY29tYm8gYXMgJG5ld0Rl Zikgew0KCQkJbGlzdCgkZGVmUGFydHMsICR1bndhbnRlZCkgPSBzbWRfZG9MaXN0KCRuZXdE ZWYsIGZhbHNlLCAnJywgZmFsc2UsICRwYXJhbWRlbGltLCAkc3BjKTsNCgkJCSRkZWZOYW1l ID0gInsiLmFycmF5X3NoaWZ0KCRkZWZQYXJ0cykuIn0iOw0KCQkJJGNvbWJvc1skZGVmTmFt ZV0gPSAkZGVmUGFydHNbMF07DQoJCX0NCgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsNCgkJZWNo byAiKysgQ09NQk9zICsrIjsNCgkJZG1wKCRjb21ib3MpOw0KCX0NCgkvLyBDb25zdHJ1Y3Qg dGhlIG91dHB1dA0KCSR0aHVtYm91dCA9IGFycmF5KCk7DQoJJGdyb3Vwb3V0ID0gYXJyYXko KTsNCgkkbmF2b3V0ID0gYXJyYXkoKTsNCgkkb3V0ID0gYXJyYXkoKTsNCgkkY29sbGF0aW9u cyA9IGFycmF5KCk7DQoJJGNoSWRlbnRpZmllciA9ICJvbmNoYW5nZSI7DQoNCglpZiAoJGRl YnVnID4gMikgew0KCQllY2hvICIrKyBSRUNPUkQgU0VUICsrIjsNCgkJZG1wKCRycyk7DQoJ fQ0KCWlmICgkZGVidWcgPiAzKSB7DQoJCWVjaG8gIisrIEFWQUlMQUJMRSAnPycgVkFSUyAr KyI7DQoJCWlmICgkcHJldGV4dCkgZG1wKCRwcmV0ZXh0KTsNCgkJaWYgKCR0aGlzYXJ0aWNs ZSkgZG1wKCR0aGlzYXJ0aWNsZSk7DQoJfQ0KDQoJaWYoJHJzKSB7DQoJCSRpZHggPSAwOw0K CQkkY3RyID0gMTsNCgkJJHRodW1iSWR4ID0gMDsNCgkJJHRodW1iQ3RyID0gMTsNCgkJJG51 bUltYWdlcyA9IGNvdW50KCRycyk7DQoJCSRyZXBhZ2VtZW50cyA9IGFycmF5KCk7DQoNCgkJ Ly8gU2V0IHVwIHRoZSBwYWdpbmcgZmVhdHVyZXMgaWYgcmVxdWlyZWQNCgkJaWYgKCgkbGlt aXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCQkkbmV4dCA9ICgkbnVtUGFnZXMgPiAxICYmICR0 aHVtUGFnZSAhPSAkbnVtUGFnZXMpOw0KCQkJJHByZXYgPSAoJG51bVBhZ2VzID4gMSAmJiAk dGh1bVBhZ2UgPiAxKTsNCgkJCSRwcmV2UGFnZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsn cmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJHRodW1QYWdlLTEpOw0KCQkJJG5leHRQYWdlID0g c21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAkdGh1bVBh Z2UrMSk7DQoJCQkkdGhpc1BhZ2UgPSBzbWRfYWRkUVNWYXIoJHByZXRleHRbJ3JlcXVlc3Rf dXJpJ10sICRnYWxsSUQsICR0aHVtUGFnZSk7DQoJCQkkZmlyc3RQYWdlID0gc21kX2FkZFFT VmFyKCRwcmV0ZXh0WydyZXF1ZXN0X3VyaSddLCAkZ2FsbElELCAxKTsNCgkJCSRsYXN0UGFn ZSA9IHNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdhbGxJRCwgJG51 bVBhZ2VzKTsNCg0KCQkJLy8gTGFiZWxzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIHJlcGxh Y2VtZW50IHRhZyBhZnRlciBhIHBhcmFtZGVsaW0uDQoJCQkvLyAnZWFybGllcicgYW5kICds YXRlcicgZG9uJ3QgaGF2ZSBsYWJlbHMuIEFueXRoaW5nIHNwZWNpZmllZCBhZnRlciBwYXJh bWRlbGltIGlzIHRoZSBtYXggbnVtYmVyIG9mIHBhZ2VzIHRvIHNob3c7IGVtcHR5ID0gYWxs IHBhZ2VzDQoJCQkkbGFiZWwgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICRzbWRf Z2FsbExhbmctPmdUeHQoJ25hdmZpcnN0JyksDQoJCQkJCSd7bmF2cHJldn0nID0+ICRzbWRf Z2FsbExhbmctPmdUeHQoJ25hdnByZXYnKSwNCgkJCQkJJ3tuYXZlYXJsaWVyfScgPT4gJycs DQoJCQkJCSd7bmF2dGhpc30nID0+ICR0aHVtUGFnZSwNCgkJCQkJJ3tuYXZ0aGlzdXJsfScg PT4gJHRodW1QYWdlLA0KCQkJCQkne25hdmxhdGVyfScgPT4gJycsDQoJCQkJCSd7bmF2bmV4 dH0nID0+ICRzbWRfZ2FsbExhbmctPmdUeHQoJ25hdm5leHQnKSwNCgkJCQkJJ3tuYXZsYXN0 fScgPT4gJHNtZF9nYWxsTGFuZy0+Z1R4dCgnbmF2bGFzdCcpLA0KCQkJCSk7DQoNCgkJCSRs YWJlbFJFID0gJy9ceyhuYXZbYS16XSspJy4kcGFyYW1kZWxpbS4nKC4rPylcfS8nOw0KCQkJ JG51bUxhYmVscyA9IHByZWdfbWF0Y2hfYWxsKCRsYWJlbFJFLCAkcGFnZWZvcm0sICRsYWJl bHMpOw0KDQoJCQlmb3IgKCRsYWJlbEN0ciA9IDA7ICRsYWJlbEN0ciA8ICRudW1MYWJlbHM7 ICRsYWJlbEN0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9ICd7Jy4kbGFiZWxzWzFdWyRsYWJl bEN0cl0uJ30nOw0KCQkJCSRsYWJlbFskZmllbGRuYW1lXSA9ICRsYWJlbHNbMl1bJGxhYmVs Q3RyXTsNCgkJCQkkcGFnZWZvcm0gPSBzdHJfcmVwbGFjZSgkbGFiZWxzWzBdWyRsYWJlbEN0 cl0sICd7Jy4kbGFiZWxzWzFdWyRsYWJlbEN0cl0uJ30nLCAkcGFnZWZvcm0pOw0KCQkJfQ0K DQoJCQlpZiAoJGRlYnVnID4gMSkgew0KCQkJCWVjaG8gIisrIFBBR0lORyBMQUJFTFMgKysi Ow0KCQkJCWRtcCgkbGFiZWwpOw0KCQkJfQ0KDQoJCQkvLyBHZW5lcmF0ZSAnZWFybGllcicg YW5kICdsYXRlcicgbGlzdHMNCgkJCSRudW1FYXJsaWVyID0gaW50dmFsKCRsYWJlbFsne25h dmVhcmxpZXJ9J10pOw0KCQkJJG51bUxhdGVyID0gaW50dmFsKCRsYWJlbFsne25hdmxhdGVy fSddKTsNCgkJCSRudW1FYXJsaWVyID0gKCRudW1FYXJsaWVyICYmICgkdGh1bVBhZ2UtJG51 bUVhcmxpZXIgPiAxKSkgPyAkbnVtRWFybGllciA6ICR0aHVtUGFnZS0xOw0KCQkJJG51bUxh dGVyID0gKCRudW1MYXRlciAmJiAoJHRodW1QYWdlKyRudW1MYXRlciA8ICRudW1QYWdlcykp ID8gJG51bUxhdGVyIDogJG51bVBhZ2VzLSR0aHVtUGFnZTsNCgkJCSRuYXZFYXJsaWVyID0g JG5hdkxhdGVyID0gYXJyYXkoKTsNCgkJCWZvciAoJGNvZCA9ICR0aHVtUGFnZS0kbnVtRWFy bGllcjsgJGNvZCA8ICR0aHVtUGFnZTsgJGNvZCsrKSB7DQoJCQkJJG5hdkVhcmxpZXJbXSA9 ICc8YSBocmVmPSInLnNtZF9hZGRRU1ZhcigkcHJldGV4dFsncmVxdWVzdF91cmknXSwgJGdh bGxJRCwgJGNvZCkuJyI+Jy4kY29kLic8L2E+JzsNCgkJCX0NCgkJCWZvciAoJGNvZCA9ICR0 aHVtUGFnZSsxOyAkY29kIDw9ICR0aHVtUGFnZSskbnVtTGF0ZXI7ICRjb2QrKykgew0KCQkJ CSRuYXZMYXRlcltdID0gJzxhIGhyZWY9Iicuc21kX2FkZFFTVmFyKCRwcmV0ZXh0WydyZXF1 ZXN0X3VyaSddLCAkZ2FsbElELCAkY29kKS4nIj4nLiRjb2QuJzwvYT4nOw0KCQkJfQ0KCQkJ JG5hdkVhcmxpZXIgPSBkb1dyYXAoJG5hdkVhcmxpZXIsICcnLCAkbmF2YnJlYWssICcnKTsN CgkJCSRuYXZMYXRlciA9IGRvV3JhcCgkbmF2TGF0ZXIsICcnLCAkbmF2YnJlYWssICcnKTsN Cg0KCQkJLy8gTWFrZSB1cCB0aGUgcmVwYWdlbWVudHMgYXJyYXkgZm9yIHBhZ2Vmb3JtDQoJ CQkkcmVwYWdlbWVudHMgPSBhcnJheSgNCgkJCQkJJ3tuYXZmaXJzdH0nID0+ICgoJHByZXYp ID8gZG9UYWcoJzxhIGhyZWY9IicuJGZpcnN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmZpcnN0 fSddLic8L2E+JywgJG5hdmJyZWFrKSA6IGRvVGFnKCRsYWJlbFsne25hdmZpcnN0fSddLCAk bmF2YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2cHJldn0nID0+ICgoJHByZXYp ID8gZG9UYWcoJzxhIGhyZWY9IicuJHByZXZQYWdlLiciPicuJGxhYmVsWyd7bmF2cHJldn0n XS4nPC9hPicsICRuYXZicmVhaykgOiBkb1RhZygkbGFiZWxbJ3tuYXZwcmV2fSddLCAkbmF2 YnJlYWssICRlbXB0eWNsYXNzKSksDQoJCQkJCSd7bmF2ZWFybGllcn0nID0+ICRuYXZFYXJs aWVyLA0KCQkJCQkne25hdnRoaXN9JyA9PiBkb1RhZygkbGFiZWxbJ3tuYXZ0aGlzfSddLCAk bmF2YnJlYWssICdjdXJyZW50ICcuJGVtcHR5Y2xhc3MpLA0KCQkJCQkne25hdnRoaXN1cmx9 JyA9PiBkb1RhZygnPGEgaHJlZj0iJy4kdGhpc1BhZ2UuJyI+Jy4kbGFiZWxbJ3tuYXZ0aGlz dXJsfSddLic8L2E+JywgJG5hdmJyZWFrLCAnY3VycmVudCcpLA0KCQkJCQkne25hdmxhdGVy fScgPT4gJG5hdkxhdGVyLA0KCQkJCQkne25hdm5leHR9JyA9PiAoKCRuZXh0KSA/IGRvVGFn KCc8YSBocmVmPSInLiRuZXh0UGFnZS4nIj4nLiRsYWJlbFsne25hdm5leHR9J10uJzwvYT4n LCAkbmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bmV4dH0nXSwgJG5hdmJyZWFrLCAk ZW1wdHljbGFzcykpLA0KCQkJCQkne25hdmxhc3R9JyA9PiAoKCRuZXh0KSA/IGRvVGFnKCc8 YSBocmVmPSInLiRsYXN0UGFnZS4nIj4nLiRsYWJlbFsne25hdmxhc3R9J10uJzwvYT4nLCAk bmF2YnJlYWspIDogZG9UYWcoJGxhYmVsWyd7bmF2bGFzdH0nXSwgJG5hdmJyZWFrLCAkZW1w dHljbGFzcykpLA0KCQkJCQkne25hdnRoaXNwYWdldXJsfScgPT4gJHRoaXNQYWdlLA0KCQkJ CQkne25hdm5leHRwYWdldXJsfScgPT4gKCgkbmV4dCkgPyAkbmV4dFBhZ2UgOiAnJyksDQoJ CQkJCSd7bmF2cHJldnBhZ2V1cmx9JyA9PiAoKCRwcmV2KSA/ICRwcmV2UGFnZSA6ICcnKSwN CgkJCQkJJ3tuYXZmaXJzdHBhZ2V1cmx9JyA9PiAkZmlyc3RQYWdlLA0KCQkJCQkne25hdmxh c3RwYWdldXJsfScgPT4gJGxhc3RQYWdlLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51 bUltYWdlcywNCgkJCQkJJ3t0b3RhbHBhZ2VzfScgPT4gJG51bVBhZ2VzLA0KCQkJCQkne21h eGltYWdlc30nID0+ICRhbGxJbWFnZXMsDQoJCQkJKTsNCg0KCQkJCS8vIFBlcmZvcm0gZXNj YXBpbmcgaGVyZSwganVzdCBwcmlvciB0byBvdXRwdXQNCgkJCQlpZiAoJGVzY2FwZXMpIHsN CgkJCQkJZm9yZWFjaCAoJHJlcGFnZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsN CgkJCQkJCWlmIChpbl9hcnJheSh0cmltKCRkZWZOYW1lLCAie30iKSwgJGVzY2FwZXMpKSB7 DQoJCQkJCQkJJHJlcGFnZW1lbnRzWyRkZWZOYW1lXSA9IGh0bWxzcGVjaWFsY2hhcnMoJGRl ZlZhbCwgRU5UX1FVT1RFUyk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkvLyBQ ZXJmb3JtIHRoZSBzdWJzdGl0dXRpb25zDQoJCQkJJG5hdm91dFtdID0gcGFyc2Uoc3RydHIo JHBhZ2Vmb3JtLCAkcmVwYWdlbWVudHMpKTsNCgkJfQ0KDQoJCS8vIEZvciBldmVyeSBpbWFn ZSBpbiB0aGUgZ2FsbGVyeS4uLg0KCQlmb3JlYWNoKCRycyBhcyAka2V5ID0+ICRyb3cpIHsN CgkJCWlmICgkZGlyZWN0b3J5KSB7DQoJCQkJJHVybFBhdGggPSAkcm93WydwYXRoJ10uJy8n Ow0KCQkJfSBlbHNlIHsNCgkJCQkkdXJsUGF0aCA9IGh1LiRpbWdfZGlyLicvJzsNCgkJCQkk cm93WydjYXRlZ29yeV90aXRsZSddID0gZmV0Y2hfY2F0ZWdvcnlfdGl0bGUoJHJvd1snY2F0 ZWdvcnknXSwgJ2ltYWdlJyk7DQoJCQl9DQoJCQkkdGhlVGh1bWIgPSAkdXJsUGF0aCAuICRy b3dbJ2lkJ10gLiAkdGh1bWJtb2QgLiAkcm93WydleHQnXTsNCgkJCSRmdWxsU2l6ZSA9ICR1 cmxQYXRoIC4gJHJvd1snaWQnXSAuICRmdWxsbW9kIC4kcm93WydleHQnXTsNCg0KCQkJLy8g RG8gd2UgbmVlZCB0byByZXNldCB0aGUgdGh1bWIgY291bnRlciB0aGlzIHRpbWU/DQoJCQlm b3JlYWNoICgkcmVzZXRPcHRzIGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlp ZiAoc3RycG9zKCRyZXNldE9wdCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRpdGVy ID0gZXhwbG9kZSgkcGFyYW1kZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAoY291 bnQoJGl0ZXIpID4gMSkgPyAkaXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJJZHggJSAk aXRlciA9PSAwKSB7DQoJCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkJJHRodW1iQ3RyID0g MTsNCgkJCQkJfQ0KCQkJCX0gZWxzZSBpZiAoJHJvd1skcmVzZXRPcHRdICE9ICRyZXNldFZh bCkgew0KCQkJCQkkdGh1bWJJZHggPSAwOw0KCQkJCQkkdGh1bWJDdHIgPSAxOw0KCQkJCQli cmVhazsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIE92ZXJyaWRlIHRodW1ic2l6ZSAvIGltZ3Np emUgaWYgcmVxdWlyZWQNCgkJCWlmICgkdGh1bWJzaXplKSB7DQoJCQkJJHRoZVRodW1iV2lk dGggPSBlbXB0eSgkdGh1bWJXaWR0aCkgPyAkcm93Wyd0aHVtYl93J10gOiAkdGh1bWJXaWR0 aDsNCgkJCQkkdGhlVGh1bWJIZWlnaHQgPSBlbXB0eSgkdGh1bWJIZWlnaHQpID8gJHJvd1sn dGh1bWJfaCddIDogJHRodW1iSGVpZ2h0Ow0KCQkJCSR0aGVUaHVtYldVbml0cyA9ICR0aHVt YldVbml0czsNCgkJCQkkdGhlVGh1bWJIVW5pdHMgPSAkdGh1bWJIVW5pdHM7DQoJCQl9IGVs c2Ugew0KCQkJCSR0aGVUaHVtYldpZHRoID0gJHJvd1sndGh1bWJfdyddOw0KCQkJCSR0aGVU aHVtYkhlaWdodCA9ICRyb3dbJ3RodW1iX2gnXTsNCgkJCQkkdGhlVGh1bWJXVW5pdHMgPSAk dGhlVGh1bWJIVW5pdHMgPSAnJzsNCgkJCX0NCg0KCQkJaWYgKCRpbWdzaXplKSB7DQoJCQkJ JHRoZUltYWdlV2lkdGggPSBlbXB0eSgkaW1hZ2VXaWR0aCkgPyAkcm93Wyd3J10gOiAkaW1h Z2VXaWR0aDsNCgkJCQkkdGhlSW1hZ2VIZWlnaHQgPSBlbXB0eSgkaW1hZ2VIZWlnaHQpID8g JHJvd1snaCddIDogJGltYWdlSGVpZ2h0Ow0KCQkJCSR0aGVJbWFnZVdVbml0cyA9ICRpbWFn ZVdVbml0czsNCgkJCQkkdGhlSW1hZ2VIVW5pdHMgPSAkaW1hZ2VIVW5pdHM7DQoJCQl9IGVs c2Ugew0KCQkJCSR0aGVJbWFnZVdpZHRoID0gJHJvd1sndyddOw0KCQkJCSR0aGVJbWFnZUhl aWdodCA9ICRyb3dbJ2gnXTsNCgkJCQkkdGhlSW1hZ2VXVW5pdHMgPSAkdGhlSW1hZ2VIVW5p dHMgPSAnJzsNCgkJCX0NCg0KCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBhcnJh eQ0KCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5KA0KCQkJCQkne2lkfScgPT4gJHJvd1snaWQn XSwNCgkJCQkJJ3tuYW1lfScgPT4gJHJvd1snbmFtZSddLA0KCQkJCQkne2V4dH0nID0+ICRy b3dbJ2V4dCddLA0KCQkJCQkne2NhdGVnb3J5fScgPT4gJHJvd1snY2F0ZWdvcnknXSwNCgkJ CQkJJ3tjYXRlZ29yeV90aXRsZX0nID0+ICgoaXNzZXQoJHJvd1snY2F0ZWdvcnlfdGl0bGUn XSkgJiYgJHJvd1snY2F0ZWdvcnlfdGl0bGUnXSAhPT0gZmFsc2UpID8gJHJvd1snY2F0ZWdv cnlfdGl0bGUnXSA6ICcnKSwNCgkJCQkJJ3thdXRob3J9JyA9PiAkcm93WydhdXRob3InXSwN CgkJCQkJJ3toYXN0aHVtYn0nID0+IChpc3NldCgkcm93Wyd0aHVtYm5haWwnXSkgPyAkcm93 Wyd0aHVtYm5haWwnXSA6IDApLA0KCQkJCQkne3VybH0nID0+ICRmdWxsU2l6ZSwNCgkJCQkJ J3t0aHVtYnVybH0nID0+ICR0aGVUaHVtYiwNCgkJCQkJJ3tpbWFnZXBhdGh9JyA9PiAkdXJs UGF0aCwNCgkJCQkJJ3tpbWFnZWRlZn0nID0+IGJhc2VuYW1lKCRmdWxsU2l6ZSksDQoJCQkJ CSd7dGh1bWJkZWZ9JyA9PiBiYXNlbmFtZSgkdGhlVGh1bWIpLA0KCQkJCQkne2FsdH0nID0+ ICRyb3dbJ2FsdCddLA0KCQkJCQkne3RpdGxlfScgPT4gJHJvd1snY2FwdGlvbiddLA0KCQkJ CQkne2NhcHRpb259JyA9PiAkcm93WydjYXB0aW9uJ10sDQoJCQkJCSd7dGh1bWJ3aWR0aH0n ID0+ICR0aGVUaHVtYldpZHRoLA0KCQkJCQkne3RodW1iaGVpZ2h0fScgPT4gJHRoZVRodW1i SGVpZ2h0LA0KCQkJCQkne3RodW1id3VuaXRzfScgPT4gJHRoZVRodW1iV1VuaXRzLA0KCQkJ CQkne3RodW1iaHVuaXRzfScgPT4gJHRoZVRodW1iSFVuaXRzLA0KCQkJCQkne3dpZHRofScg PT4gJHRoZUltYWdlV2lkdGgsDQoJCQkJCSd7aGVpZ2h0fScgPT4gJHRoZUltYWdlSGVpZ2h0 LA0KCQkJCQkne3d1bml0c30nID0+ICR0aGVJbWFnZVdVbml0cywNCgkJCQkJJ3todW5pdHN9 JyA9PiAkdGhlSW1hZ2VIVW5pdHMsDQoJCQkJCSd7ZGF0ZX0nID0+ICgoJGZvcm1hdCkgPyBz YWZlX3N0cmZ0aW1lKCRmb3JtYXQsIHN0cnRvdGltZSgkcm93WydkYXRlJ10pLCAkZ210LCAk bGFuZykgOiAkcm93WydkYXRlJ10pLA0KCQkJCQkne2dhbGxlcnlpZH0nID0+ICRnYWxsSUQs DQoJCQkJCSd7aW5kZXh9JyA9PiAkaWR4LA0KCQkJCQkne2NvdW50ZXJ9JyA9PiAkY3RyLA0K CQkJCQkne3RodW1iaW5kZXh9JyA9PiAkdGh1bWJJZHgsDQoJCQkJCSd7dGh1bWJjb3VudGVy fScgPT4gJHRodW1iQ3RyLA0KCQkJCQkne3RvdGFsaW1hZ2VzfScgPT4gJG51bUltYWdlcywN CgkJCQkJJ3ttYXhpbWFnZXN9JyA9PiAkYWxsSW1hZ2VzLA0KCQkJCSk7DQoNCgkJCS8vIEFk ZCBhbnkgY3VzdG9tIGNvbHVtbnMNCgkJCWZvcmVhY2ggKCRleHRyYU1hcCBhcyAkZUNvbCA9 PiAkZVZhbCkgew0KCQkJCSRyZXBsYWNlbWVudHNbJ3snLiRlVmFsLid9J10gPSAkcm93WyRl Q29sXTsNCgkJCX0NCg0KCQkJLy8gQXBwZW5kIGFueSBjaGFuZ2VkIGl0ZW1zIHRoYXQgYXJl IHJlcXVpcmVkDQoJCQkkZW5kdGFnID0gZmFsc2U7DQoJCQlmb3JlYWNoICgkcmVzZXRPcHRz IGFzICRyZXNldE9wdCA9PiAkcmVzZXRWYWwpIHsNCgkJCQlpZiAoc3RycG9zKCRyZXNldE9w dCwgJ3NtZF9ldmVyeScpID09PSAwKSB7DQoJCQkJCSRpdGVyID0gZXhwbG9kZSgkcGFyYW1k ZWxpbSwgJHJlc2V0T3B0KTsNCgkJCQkJJGl0ZXIgPSAoY291bnQoJGl0ZXIpID4gMSkgPyAk aXRlclsxXSA6IDA7DQoJCQkJCWlmICgkdGh1bWJDdHIgJSAkaXRlciA9PT0gMCB8fCAkY3Ry ID09ICRudW1JbWFnZXMpIHsNCgkJCQkJCSRlbmR0YWcgPSB0cnVlOw0KCQkJCQl9DQoJCQkJ fSBlbHNlIHsNCgkJCQkJJHJlcGxhY2VtZW50c1sneycuJGNoSWRlbnRpZmllci4kcGFyYW1k ZWxpbS4kcmVzZXRPcHQuJ30nXSA9ICgkdGh1bWJJZHggPT0gMCkgPyAoKGlzc2V0KCRyZXNl dEZvcm1zWyRyZXNldE9wdF0pKSA/IHN0cnRyKHBhcnNlX2Zvcm0oJHJlc2V0Rm9ybXNbJHJl c2V0T3B0XSksICRyZXBsYWNlbWVudHMpIDogZG9UYWcoJHJvd1skcmVzZXRPcHRdLCAkb25j aGFuZ2V3cmFwdGFnLCAkb25jaGFuZ2VjbGFzcykpIDogJyc7DQoJCQkJCS8vIERvIGEgc25l YWt5ICh5dWspIGxvb2thaGVhZA0KCQkJCQlpZiAoaXNzZXQoJHJzWyRrZXkrMV0pKSB7DQoJ CQkJCQlpZihpc3NldCgkcnNbJGtleSsxXVskcmVzZXRPcHRdKSAmJiAoJHJzWyRrZXkrMV1b JHJlc2V0T3B0XSAhPSAkcm93WyRyZXNldE9wdF0pKSB7DQoJCQkJCQkJJGVuZHRhZyA9IHRy dWU7DQoJCQkJCQl9DQoJCQkJCX0gZWxzZSB7DQoJCQkJCQkkZW5kdGFnID0gdHJ1ZTsgLy8g TGFzdCBpbWFnZQ0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KDQoJCQkkcmVwbGFjZW1lbnRzWyd7 Z3JvdXB0YWdlbmR9J10gPSAoJGdyb3VwdGFnICYmICRlbmR0YWcpID8gJzwvJyAuICRncm91 cHRhZyAuICc+JyA6ICcnOw0KCQkJJHJlcGxhY2VtZW50c1sne2dyb3VwdGFnc3RhcnR9J10g PSAoJGdyb3VwdGFnICYmICR0aHVtYklkeCA9PSAwKSA/ICc8JyAuICRncm91cHRhZyAuICgo JGdyb3VwY2xhc3MpID8gJyBjbGFzcz0iJy4kZ3JvdXBjbGFzcy4nIicgOiAnJykgLiAnPicg OiAnJzsNCg0KCQkJLy8gQXBwZW5kIGFueSBjb21ib3MNCgkJCWZvcmVhY2ggKCRjb21ib3Mg YXMgJGRlZk5hbWUgPT4gJG5ld0RlZikgew0KCQkJCWlmICghYXJyYXlfa2V5X2V4aXN0cygk ZGVmTmFtZSwgJHJlcGxhY2VtZW50cykpIHsNCgkJCQkJJHJlcGxhY2VtZW50c1skZGVmTmFt ZV0gPSBzdHJ0cigkbmV3RGVmLCAkcmVwbGFjZW1lbnRzKTsNCgkJCQl9DQoJCQl9DQoNCgkJ CS8vIFNvbG9zIGFyZSBpdGVtcyBpbiB0aGUgb3V0cHV0IGZvcm0gdGhhdCByZXF1aXJlIGRl dGFpbHMgZnJvbSBhIHNwZWNpZmljIHJvdy4gVXNlZnVsIG9ubHkgaW4gY29sbGF0aW9uDQoJ CQkvLyBtb2RlLCB0aGV5IGFyZSBhZGRlZCB0byB0aGUgcmVwbGFjZW1lbnRzIGFycmF5IG9u IGFuIGFzLW5lZWRlZCBiYXNpcyB0byBzYXZlIHNwYWNlL3RpbWUNCgkJCSRzb2xvUkUgPSAn L1x7KFthLXowLTldKykjJy4kY3RyLidcfS8nOw0KCQkJJG51bVNvbG9zID0gcHJlZ19tYXRj aF9hbGwoJHNvbG9SRSwgJHRoaW5nLCAkc29sb3MpOw0KCQkJZm9yICgkc29sb0N0ciA9IDA7 ICRzb2xvQ3RyIDwgJG51bVNvbG9zOyAkc29sb0N0cisrKSB7DQoJCQkJJGZpZWxkbmFtZSA9 ICd7Jy4kc29sb3NbMV1bJHNvbG9DdHJdLicjJy4kY3RyLid9JzsNCgkJCQkkZ3JhYmZpZWxk ID0gJ3snLiRzb2xvc1sxXVskc29sb0N0cl0uJ30nOw0KCQkJCSRyZXBsYWNlbWVudHNbJGZp ZWxkbmFtZV0gPSAkcmVwbGFjZW1lbnRzWyRncmFiZmllbGRdOw0KCQkJfQ0KDQoJCQkvLyBQ ZXJmb3JtIGVzY2FwaW5nIG9uIHRoZSByZXBsYWNlbWVudHMuDQoJCQkvLyBOb3RlIHRoZSBy ZXBhZ2VtZW50cyBoYXZlIGFscmVhZHkgYmVlbiBlc2NhcGVkIHNvIHdoZW4vaWYgdGhleSBh cmUgY29tYmluZWQgd2l0aCB0aGUgcmVwbGFjZW1lbnRzLA0KCQkJLy8gdGhlIGVzY2FwaW5n IGlzIG5vdCBkb25lIHR3aWNlDQoJCQlpZiAoJGVzY2FwZXMpIHsNCgkJCQlmb3JlYWNoICgk cmVwbGFjZW1lbnRzIGFzICRkZWZOYW1lID0+ICRkZWZWYWwpIHsNCgkJCQkJaWYgKGluX2Fy cmF5KHRyaW0oJGRlZk5hbWUsICJ7fSIpLCAkZXNjYXBlcykpIHsNCgkJCQkJCSRyZXBsYWNl bWVudHNbJGRlZk5hbWVdID0gaHRtbHNwZWNpYWxjaGFycygkZGVmVmFsLCBFTlRfUVVPVEVT KTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJLy8gQWRkIHRoZSBuYXZpZ2F0aW9uIGl0 ZW1zIGlmIHRoZXkncmUgZGVmaW5lZA0KCQkJaWYgKGNvdW50KCRyZXBhZ2VtZW50cykgPiAw KSB7DQoJCQkJJHJlcGxhY2VtZW50cyA9IGFycmF5X21lcmdlKCRyZXBhZ2VtZW50cywgJHJl cGxhY2VtZW50cyk7DQoJCQl9DQoNCgkJCS8vIElzIGEgdGh1bWIvdGV4dCBvYmplY3QgcmVx dWlyZWQgdGhpcyB0aW1lPw0KCQkJJG9iamVjdCA9ICcnOw0KCQkJaWYgKCR0aHVtYklkeCA+ PSAkdGh1bWJvZmZzZXQgJiYgJHRodW1iSWR4IDwgJHRodW1ib2Zmc2V0KyR0aHVtYmxpbWl0 KSB7DQoJCQkJJG9iamVjdCA9ICgkb2JqZWN0Zm9ybSkgPyBwYXJzZShzdHJ0cigkb2JqZWN0 Zm9ybSwgJHJlcGxhY2VtZW50cykpIDogKCgkdGV4dCkgPyAkdGV4dCA6ICc8aW1nIHNyYz0i Jy4kdGhlVGh1bWIuJyInIC4oKCRyb3dbJ2FsdCddKSA/ICcgYWx0PSInLiRyb3dbJ2FsdCdd LiciJyA6ICcnKSAuKCgkdGhlVGh1bWJXaWR0aCkgPyAnIHdpZHRoPSInLiR0aGVUaHVtYldp ZHRoLiR0aGVUaHVtYldVbml0cy4nIicgOiAnJykgLigoJHRoZVRodW1iSGVpZ2h0KSA/ICcg aGVpZ2h0PSInLiR0aGVUaHVtYkhlaWdodC4kdGhlVGh1bWJIVW5pdHMuJyInIDogJycpIC4n IC8+Jyk7DQoJCQl9DQoJCQkkcmVwbGFjZW1lbnRzWyd7b2JqZWN0fSddID0gJG9iamVjdDsN Cg0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBSRVBMQUNFTUVOVFMgOiBJ TUFHRSAiLiRjdHIuIiArKyI7DQoJCQkJZG1wKCRyZXBsYWNlbWVudHMpOw0KCQkJfQ0KDQoJ CQkvLyBDaGVjayBpZiBjb3VudGZvcm0gaXMgdG8gYmUgY2FsbGVkDQoJCQkkY291bnRwcmUg PSAkY291bnRwb3N0ID0gYXJyYXkoKTsNCgkJCWlmICgkY291bnRpbmcpIHsNCgkJCQlmb3Jl YWNoICgkY291bnRmb3JtIGFzICRjb3VudGxpc3QpIHsNCgkJCQkJJHBvc292ZXIgPSBhcnJh eSgpOw0KCQkJCQkkY291bnRsaXN0ID0gc3RydHIoJGNvdW50bGlzdCwgJHJlcGxhY2VtZW50 cyk7IC8vIFJlcGxhY2UgYW55IHt9IHZhcnMgd2l0aCB0aGVpciByZWFsIHZhbHVlcw0KCQkJ CQkkY291bnRsaXN0ID0gZG9fbGlzdCgkY291bnRsaXN0LCAkcGFyYW1kZWxpbSk7DQoJCQkJ CWlmICgkZHBvcz1hcnJheV9zZWFyY2goJ3NtZF9hYm92ZScsICRjb3VudGxpc3QpKSB7DQoJ CQkJCQkkcG9zb3ZlcltdID0gImFib3ZlIjsNCgkJCQkJCXVuc2V0KCRjb3VudGxpc3RbJGRw b3NdKTsNCgkJCQkJfQ0KCQkJCQlpZiAoJGRwb3M9YXJyYXlfc2VhcmNoKCdzbWRfYmVsb3cn LCAkY291bnRsaXN0KSkgew0KCQkJCQkJJHBvc292ZXJbXSA9ICJiZWxvdyI7DQoJCQkJCQl1 bnNldCgkY291bnRsaXN0WyRkcG9zXSk7DQoJCQkJCX0NCgkJCQkJJGNvdW50bGlzdCA9IGFy cmF5X21lcmdlKCRjb3VudGxpc3QpOyAvLyByZS1pbmRleA0KDQoJCQkJCSRwb3NvdmVyID0g KGVtcHR5KCRwb3NvdmVyKSkgPyAkY291bnRwb3NucyA6ICRwb3NvdmVyOw0KCQkJCQkkZGl2 YnkgPSBmYWxzZTsNCgkJCQkJaWYgKCRjb3VudGxpc3RbMF0gPT0gJ3NtZF9ldmVyeScpIHsN CgkJCQkJCSRkaXZieSA9IHRydWU7DQoJCQkJCQlhcnJheV9zaGlmdCgkY291bnRsaXN0KTsN CgkJCQkJfQ0KCQkJCQkkbnVtZm9ybXMgPSBjb3VudCgkY291bnRsaXN0KTsNCgkJCQkJJGNh bGxmb3JtID0gZmV0Y2hfZm9ybSgkY291bnRsaXN0WyRudW1mb3Jtcy0xXSk7DQoJCQkJCXVu c2V0KCRjb3VudGxpc3RbJG51bWZvcm1zLTFdKTsNCgkJCQkJJG9ybG9naWMgPSAkYW5kbG9n aWMgPSBhcnJheSgpOw0KDQoJCQkJCS8vIENoZWNrIGlmIGFueSB2YWx1ZSBpcyBhIHJhbmdl IGFuZCBleHBhbmQgaXQgaWYgc28NCgkJCQkJJGZ1bGxjb3VudGxpc3QgPSBhcnJheSgpOw0K CQkJCQlmb3JlYWNoICgkY291bnRsaXN0IGFzICRjdXN0Y291bnQpIHsNCgkJCQkJCWlmIChw cmVnX21hdGNoKCcvXihcZCspXC0oXGQrKSQvJywgJGN1c3Rjb3VudCkpIHsNCgkJCQkJCQls aXN0KCRsbywgJGhpKSA9IGV4cGxvZGUoIi0iLCAkY3VzdGNvdW50LCAyKTsNCgkJCQkJCQkk ZnVsbGNvdW50bGlzdCArPSByYW5nZSgkbG8sICRoaSk7DQoJCQkJCQl9IGVsc2Ugew0KCQkJ CQkJCSRmdWxsY291bnRsaXN0W10gPSAkY3VzdGNvdW50Ow0KCQkJCQkJfQ0KCQkJCQl9DQoN CgkJCQkJJGNvdW50bGlzdCA9ICRmdWxsY291bnRsaXN0Ow0KCQkJCQlmb3JlYWNoICgkY291 bnRsaXN0IGFzICRjdXN0Y291bnQpIHsNCgkJCQkJCSRzaG93dmFsID0gKHN0cnBvcygkY3Vz dGNvdW50LCAiISIpID09PSAwKSA/IGZhbHNlIDogdHJ1ZTsvLyBOZWdhdGl2ZSBsb2dpYyBy ZXF1aXJlZA0KCQkJCQkJJGN1c3Rjb3VudCA9IHN0cl9yZXBsYWNlKCchJywgJycsICRjdXN0 Y291bnQpOw0KCQkJCQkJaWYgKCRzaG93dmFsKSB7DQoJCQkJCQkJJG9ybG9naWNbXSA9IGVt cHR5KCRjdXN0Y291bnQpIHx8ICgoJGRpdmJ5KSA/ICgoJGN0ciAlICRjdXN0Y291bnQgPT09 IDApID8gdHJ1ZSA6IGZhbHNlKSA6ICgoJGN1c3Rjb3VudCA9PSAkY3RyKSA/IHRydWUgOiBm YWxzZSkpOw0KCQkJCQkJfSBlbHNlIHsNCgkJCQkJCQkkYW5kbG9naWNbXSA9ICgkY3VzdGNv dW50ID09ICRjdHIpID8gZmFsc2UgOiB0cnVlOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJCWlm IChpbl9hcnJheSgnMScsICRvcmxvZ2ljKSAmJiAhaW5fYXJyYXkoJzAnLCAkYW5kbG9naWMp KSB7DQoJCQkJCQlpZiAoaW5fYXJyYXkoImFib3ZlIiwgJHBvc292ZXIpKSB7DQoJCQkJCQkJ JGNvdW50cHJlW10gPSBwYXJzZShzdHJ0cigkY2FsbGZvcm0sICRyZXBsYWNlbWVudHMpKTsN CgkJCQkJCX0NCgkJCQkJCWlmIChpbl9hcnJheSgiYmVsb3ciLCAkcG9zb3ZlcikpIHsNCgkJ CQkJCQkkY291bnRwb3N0W10gPSBwYXJzZShzdHJ0cigkY2FsbGZvcm0sICRyZXBsYWNlbWVu dHMpKTsNCgkJCQkJCX0NCgkJCQkJfQ0KICAgICAgICAgICAgfQ0KCQkJfQ0KDQoJCQlpZiAo JGRlYnVnID4gMCAmJiAoJGNvdW50cHJlIHx8ICRjb3VudHBvc3QpKSB7DQoJCQkJZWNobyAi KysgQ09VTlQgRk9STSBUUklHR0VSRUQgKysiOw0KCQkJCWlmICgkY291bnRwcmUpIHsNCgkJ CQkJZG1wKCRjb3VudHByZSk7DQoJCQkJfQ0KCQkJCWlmICgkY291bnRwb3N0KSB7DQoJCQkJ CWRtcCgkY291bnRwb3N0KTsNCgkJCQl9DQoJCQl9DQoNCgkJCS8vIEluIGNvbGxhdGUgbW9k ZSB0aGUgZm9ybSBpcyBvbmx5IHBhcnNlZCBhdCB0aGUgZW5kOiBidWlsZCBhIGNvbGxvc2Fs IG11bHRpLWRpbWVuc2lvbiBhcnJheSBvZiBhbGwgaXRlbXMgaGVyZQ0KCQkJaWYgKCRjb2xs YXRlKSB7DQoJCQkJZm9yZWFjaCAoJHJlcGxhY2VtZW50cyBhcyAkZGVmTmFtZSA9PiAkZGVm VmFsKSB7DQoJCQkJCSRjb2xsYXRpb25zWyRkZWZOYW1lXVtdID0gJGRlZlZhbDsNCgkJCQl9 DQoJCQl9IGVsc2Ugew0KCQkJCWlmICgkY291bnRpbmcpIHsNCgkJCQkJJHRodW1ib3V0ID0g YXJyYXlfbWVyZ2UoJHRodW1ib3V0LCAkY291bnRwcmUpOw0KCQkJCX0NCg0KCQkJCWlmICgk dGh1bWJJZHggPCAkZ3JvdXBsaW1pdCkgew0KCQkJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0 cnRyKCR0aGluZywgJHJlcGxhY2VtZW50cykpOw0KCQkJCX0NCgkJCQlpZiAoJGNvdW50aW5n KSB7DQoJCQkJCSR0aHVtYm91dCA9IGFycmF5X21lcmdlKCR0aHVtYm91dCwgJGNvdW50cG9z dCk7DQoJCQkJfQ0KCQkJfQ0KDQoJCQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBjdXJyZW50IHZh bHVlcyBzbyB3ZSBrbm93IGlmIHRoZXkgY2hhbmdlIG5leHQgdGltZQ0KCQkJZm9yZWFjaCAo JHJlc2V0T3B0cyBhcyAkcmVzZXRPcHQgPT4gJHJlc2V0VmFsKSB7DQoJCQkJaWYgKHN0cnBv cygkcmVzZXRPcHQsICdzbWRfZXZlcnknKSA9PT0gZmFsc2UpIHsNCgkJCQkJJHJlc2V0T3B0 c1skcmVzZXRPcHRdID0gJHJvd1skcmVzZXRPcHRdOw0KCQkJCX0gZWxzZSB7DQoJCQkJCSRy ZXNldE9wdHNbJHJlc2V0T3B0XSA9ICR0aHVtYkN0cjsNCgkJCQl9DQoJCQl9DQoJCQkkdGh1 bWJJZHgrKzsNCgkJCSR0aHVtYkN0cisrOw0KCQkJJGlkeCsrOw0KCQkJJGN0cisrOw0KCQl9 DQoJCWlmICgkY29sbGF0ZSkgew0KCQkJZm9yZWFjaCAoJGNvbGxhdGlvbnMgYXMgJGl0ZW0g PT4gJGxpc3QpIHsNCgkJCQkvLyBRdW90ZSB0aGUgbGlzdHMgaWYgcmVxdWlyZWQNCgkJCQkk bGlzdCA9IChlbXB0eSgkZGJsUXVvdGUpIHx8IGluX2FycmF5KCRpdGVtLCAkZGJsUXVvdGUp KSA/IGRvQXJyYXkoJGxpc3QsICdzbWRfZG9EYmxRdW90ZScpIDogJGxpc3Q7DQoJCQkJJGxp c3QgPSAoZW1wdHkoJHNnbFF1b3RlKSB8fCBpbl9hcnJheSgkaXRlbSwgJHNnbFF1b3RlKSkg PyBkb0FycmF5KCRsaXN0LCAnZG9RdW90ZScpIDogJGxpc3Q7DQoJCQkJJGNvbGxhdGlvbnNb JGl0ZW1dID0gaW1wbG9kZSgkY29sbGF0ZWRlbGltLCAkbGlzdCk7DQoJCQl9DQoJCQlpZiAo JGRlYnVnID4gMCkgew0KCQkJCWVjaG8gIisrIENPTExBVElPTlMgKysiOw0KCQkJCWRtcCgk Y29sbGF0aW9ucyk7DQoJCQl9DQoJCQkkdGh1bWJvdXRbXSA9IHBhcnNlKHN0cnRyKCR0aGlu ZywgJGNvbGxhdGlvbnMpKTsNCgkJfQ0KDQoJCS8vIFRhY2sgb24gdGhlIHBhZ2luZyBmcm9t IGVhcmxpZXIgaWYgaXQncyB0byBnbyBhZnRlcndhcmRzDQoJCWlmICgoJGxpbWl0ID4gMCkg JiYgJHBhZ2luZykgew0KCQkJaWYgKCRkZWJ1ZyA+IDApIHsNCgkJCQllY2hvICIrKyBQQUdJ TkcgUkVQTEFDRU1FTlRTICsrIjsNCgkJCQlkbXAoJHJlcGFnZW1lbnRzKTsNCgkJCX0NCgkJ fQ0KCX0NCg0KCS8vIEFkZCB0aGUgcGFnaW5nIHRvIHRoZSBvdXRwdXQgaWYgaXQncyB0byBn byBhYm92ZSB0aGUgdGh1bWJzDQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJ CWlmIChpbl9hcnJheSgiYWJvdmUiLCAkcGFnZW91dCkpIHsNCgkJCSRvdXRbXSA9IGRvV3Jh cCgkbmF2b3V0LCAkbmF2d3JhcHRhZywgJycsICRuYXZjbGFzcyk7DQoJCX0NCgl9DQoNCgkk b3V0W10gPSBkb1dyYXAoJHRodW1ib3V0LCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICRi cmVha2NsYXNzLCAnJywgJycsICRodG1sX2lkKTsNCg0KCWlmICgoJGxpbWl0ID4gMCkgJiYg JHBhZ2luZykgew0KCQlpZiAoaW5fYXJyYXkoImJlbG93IiwgJHBhZ2VvdXQpKSB7DQoJCQkk b3V0W10gPSBkb1dyYXAoJG5hdm91dCwgJG5hdndyYXB0YWcsICcnLCAkbmF2Y2xhc3MpOw0K CQl9DQoJfQ0KDQoJaWYgKCRkZWJ1ZyA+IDIpIHsNCgkJZWNobyAiKysgRklOQUwgT1VUUFVU ICsrIjsNCgkJZG1wKCRvdXQpOw0KCX0NCg0KCXJldHVybiBqb2luKCIgIiwgJG91dCk7DQp9 DQoNCi8vIFdvcmsgb3V0IHdoaWNoIHBhZ2UgdGhpcyBnYWxsZXJ5IGlzIG9uIGFuZCByZXR1 cm4gdGhlIHJlbGV2YW50IGluZm8NCmZ1bmN0aW9uIHNtZF9nZXRQYWdlKCRycywgJGdhbGxJ RCwgJGxpbWl0LCAkb2Zmc2V0LCAkcGFnaW5nKSB7DQoJJG51bVRodW1zID0gY291bnQoJHJz KSAtICRvZmZzZXQ7DQoJaWYgKCgkbGltaXQgPiAwKSAmJiAkcGFnaW5nKSB7DQoJCSRudW1Q YWdlcyA9ICgkbnVtVGh1bXMgPiAwKSA/IGNlaWwoJG51bVRodW1zLyRsaW1pdCkgOiAxOw0K CQkkdGh1bVBhZ2UgPSAoIWdwcygkZ2FsbElEKSkgPyAxIDogZ3BzKCRnYWxsSUQpOw0KCQkk b2Zmc2V0ID0gKCgkdGh1bVBhZ2UgLSAxKSAqICRsaW1pdCkgKyAkb2Zmc2V0Ow0KCX0gZWxz ZSB7DQoJCS8vIE5vIHBhZ2luZyByZXF1aXJlZA0KCQkkbnVtUGFnZXMgPSAxOw0KCQkkdGh1 bVBhZ2UgPSAxOw0KCX0NCglyZXR1cm4gYXJyYXkoJG51bVRodW1zLCAkbnVtUGFnZXMsICR0 aHVtUGFnZSwgJG9mZnNldCk7DQp9DQoNCi8vIFJlYWQgdGhlIGdpdmVuIGRlbGltaXRlZCBk aXJlY3RvcmllcyBhbmQgZ2V0IGFsbCBmaWxlcyB0aGF0IG1hdGNoLg0KLy8gR28gZG93biBh cyBtYW55IHN1YmRpciBsZXZlbHMgYXMgZ2l2ZW4gaW4gdGhlICRzdWIgcGFyYW1ldGVyDQpm dW5jdGlvbiBzbWRfZG9EaXJlY3RvcnkoJGxzdCwgJGx2bD0wLCAkc3ViPTAsICRtYXRjaD0i IiwgJGRsbT0iLCIsICRzcGM9MSwgJGN0cj0wKSB7DQoJbGlzdCgkZGlyaW5jLCAkZGlyZXhj KSA9IHNtZF9kb0xpc3QoJGxzdCwgZmFsc2UsICRzdWIsIGZhbHNlLCAkZGxtLCAkc3BjKTsN CglsaXN0KCRtYXRjaGluYywgJG1hdGNoZXhjKSA9IHNtZF9kb0xpc3QoJG1hdGNoLCBmYWxz ZSwgJycsIGZhbHNlLCAkZGxtLCAkc3BjKTsNCgkkbWF0Y2hpbmMgPSAiLioiIC4oKCRtYXRj aGluYykgPyAiKCIgLmltcGxvZGUoInwiLCRtYXRjaGluYykuIikrLioiIDogIiIpOw0KCSRt YXRjaGV4YyA9ICgkbWF0Y2hleGMpID8gIi4qKCIgLmltcGxvZGUoInwiLCRtYXRjaGV4Yyku IikrLioiIDogInNtZF9nbHJ5XyIubXRfcmFuZCgpOw0KDQoJJHN1YiA9IChlbXB0eSgkc3Vi KSkgPyAwIDogJHN1YjsNCgkkc3ViID0gKHN0cnRvbG93ZXIoJHN1Yik9PSJhbGwiKSA/IDk5 OTk5IDogJHN1YjsNCgkkZmlsZUxpc3QgPSBhcnJheSgpOw0KCWZvcmVhY2ggKCRkaXJpbmMg YXMgJGRpcikgew0KCQlpZiAoJGhhbmRsZSA9IEBvcGVuZGlyKCRkaXIpKSB7DQoJCQl3aGls ZSAoKCRmaWxlID0gQHJlYWRkaXIoJGhhbmRsZSkpICE9PSBmYWxzZSkgew0KCQkJCSRmdWxs cGF0aCA9ICRkaXIuRFMuJGZpbGU7DQoJCQkJaWYgKHByZWdfbWF0Y2goIi8iLiRtYXRjaGlu Yy4iLyIsICRmdWxscGF0aCkgJiYgIXByZWdfbWF0Y2goIi8iLiRtYXRjaGV4Yy4iLyIsICRm dWxscGF0aCkpIHsNCgkJCQkJaWYgKGlzX2RpcigkZnVsbHBhdGgpKSB7DQoJCQkJCQlpZiAo KCRmaWxlID09ICIuIikgfHwgKCRmaWxlPT0gIi4uIikgfHwgKGluX2FycmF5KCRmaWxlLCAk ZGlyZXhjKSkgfHwgKCRsdmwgPj0gJHN1YikpIHsNCgkJCQkJCQljb250aW51ZTsNCgkJCQkJ CX0gZWxzZSB7DQoJCQkJCQkJLy8gUmVjdXJzZSB0aGUgc3ViZGlyLiBOb3RlIHRoYXQgdGhl ICchJyBpcyB0ZW1wb3JhcmlseSBhZGRlZCBiYWNrIHRvIGVhY2ggZGlyZXhjIGl0ZW0NCgkJ CQkJCQkkdG1wID0gJGRpcmV4YzsgLy8gRG9uJ3Qgb3ZlcndyaXRlIHRoZSBvcmlnaW5hbCBh cnJheQ0KCQkJCQkJCWFycmF5X3Vuc2hpZnQoJHRtcCwgJGZ1bGxwYXRoKTsNCgkJCQkJCQkk c3ViRmlsZXMgPSBzbWRfZG9EaXJlY3RvcnkoaW1wbG9kZSgkZGxtLiIhIiwgJHRtcCksICRs dmwrMSwgJHN1YiwgJG1hdGNoLCAkZGxtLCAkc3BjLCAkY3RyKTsNCgkJCQkJCQkkZmlsZUxp c3QgPSBhcnJheV9tZXJnZSgkZmlsZUxpc3QsICRzdWJGaWxlcyk7DQoJCQkJCQkJJGN0ciAr PSBjb3VudCgkc3ViRmlsZXMpOw0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfQ0KCQkJCQl9 IGVsc2Ugew0KCQkJCQkJJGZpbGVzdGF0ID0gc3RhdCgkZnVsbHBhdGgpOw0KCQkJCQkJJGlt Z3NpemUgPSBnZXRpbWFnZXNpemUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3Ry XVsncGF0aCddID0gJGRpcjsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnbmFtZSddID0gYmFz ZW5hbWUoJGZ1bGxwYXRoKTsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnaWQnXSA9IHByZWdf cmVwbGFjZSgnL1wuLiskLycsICcnLCAkZmlsZSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1b J2FsdCddID0gJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2NhcHRpb24nXSA9ICcnOw0K CQkJCQkJJHBhcnRzID0gZXhwbG9kZShEUywgJGRpcik7DQoJCQkJCQkkZmlsZUxpc3RbJGN0 cl1bJ2NhdGVnb3J5J10gPSAoY291bnQoJHBhcnRzKSA+IDEpID8gZW5kKCRwYXJ0cykgOiAn JzsNCgkJCQkJCSRmaWxlTGlzdFskY3RyXVsnYXV0aG9yJ10gPSBzdHJ2YWwoJGZpbGVzdGF0 Wyd1aWQnXSk7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2RhdGUnXSA9IHN0cmZ0aW1lKCIl WS0lbS0lZCAlSDolTTolUyIsICRmaWxlc3RhdFsnY3RpbWUnXSk7DQoJCQkJCQkkcGFydHMg PSBleHBsb2RlKCIuIiwgJGZpbGUpOw0KCQkJCQkJJGZpbGVMaXN0WyRjdHJdWydleHQnXSA9 IChjb3VudCgkcGFydHMpID4gMSkgPyAiLiIuZW5kKCRwYXJ0cykgOiAnJzsNCgkJCQkJCSRm aWxlTGlzdFskY3RyXVsndyddID0gKGlzX2FycmF5KCRpbWdzaXplKSkgPyBzdHJ2YWwoJGlt Z3NpemVbMF0pIDogJyc7DQoJCQkJCQkkZmlsZUxpc3RbJGN0cl1bJ2gnXSA9IChpc19hcnJh eSgkaW1nc2l6ZSkpID8gc3RydmFsKCRpbWdzaXplWzFdKSA6ICcnOw0KCQkJCQl9DQoJCQkJ CSRjdHIrKzsNCgkJCQl9DQoJCQl9DQoJCX0NCgkJaWYgKCRoYW5kbGUpIHsNCgkJCUBjbG9z ZWRpcigkaGFuZGxlKTsNCgkJfQ0KCX0NCglyZXR1cm4gJGZpbGVMaXN0Ow0KfSI7czo0OiJ0 eXBlIjtzOjE6IjAiO3M6NToib3JkZXIiO3M6MToiNSI7czo1OiJmbGFncyI7czoxOiIwIjtz OjQ6ImhlbHAiO3M6NjEyMDk6IjxkaXYgaWQ9InNtZF9oZWxwIj4KCgk8aDEgaWQ9InRvcCI+ c21kX2dhbGxlcnk8L2gxPgoKCTxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4KCgk8 dWw+CgkJPGxpPlN1cHBvcnRzIGFsbCBjdXJyZW50IGFuZCAocHJvYmFibHkpIGZ1dHVyZSBn YWxsZXJ5IHNjcmlwdHMgaW5jbHVkaW5nIHRodW1icG9wLCByb2xsb3ZlciwgdG9vbHRpcCwg bGlnaHRib3gsIGxpdGVib3gsIHNsaW1ib3gsIG1vb25ib3gsIHRoaWNrYm94LCBzbGlkZXNo b3csIGZhbmN5em9vbSwgZXRjPC9saT4KCQk8bGk+UHVsbCBpbWFnZXMgZnJvbSB0aGUgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZGF0YWJhc2UgdGhhdCBtYXRjaCBjYXRlZ29y aWVzLCBJRHMsIGF1dGhvciwgZXh0ZW5zaW9uIG9yIHBhcnRpY3VsYXIgZGltZW5zaW9ucyAv IGFzcGVjdCByYXRpb3M8L2xpPgoJCTxsaT5Vc2UgYXJ0aWNsZSBmaWVsZHMgdG8gaG9sZCBs aXN0cyBvZiBpbWFnZSBjYXRlZ29yaWVzL0lEcyBmb3IgYXJ0aWNsZS1zcGVjaWZpYyBnYWxs ZXJpZXM8L2xpPgoJCTxsaT5NdWx0aS1sZXZlbCBzdWItY2F0ZWdvcnkgc3VwcG9ydDwvbGk+ CgkJPGxpPkdhbGxlcnkgbGF5b3V0IGlzIGRlZmluZWQgaW4gYSA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBmb3JtL2NvbnRhaW5lcjwvbGk+CgkJPGxpPkRpcmVjdC1hY2Nlc3Mg cGFnaW5hdGlvbiBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBsYXlvdXQgb2YgcGFnaW5nIGZlYXR1 cmVzIGNhbiBiZSBjb250cm9sbGVkIGJ5IGEgc2Vjb25kIGZvcm08L2xpPgoJCTxsaT5Vc2Vz IGEgdGFnLXJlcGxhY2VtZW50IHN5c3RlbSBsaWtlIHRoZSB3ZXRfZm9yX2VhY2hfaW1hZ2Ug cGx1Z2luPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4gc3VwcG9y dDwvbGk+Cgk8L3VsPgoKCTxoMiBpZD0iYXV0aG9yIj5BdXRob3I8L2gyPgoKCTxwPjxhIGhy ZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb250YWN0Ij5TdGVmIERhd3NvbjwvYT4uIEZv ciBvdGhlciBzb2Z0d2FyZSBieSBtZSwgb3IgdG8gbWFrZSBhIGRvbmF0aW9uLCBzZWUgdGhl IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4u PC9wPgoKCTxoMiBpZD0iaW5zdGFsbCI+SW5zdGFsbGF0aW9uIC8gVW5pbnN0YWxsYXRpb248 L2gyPgoKCTxwIGNsYXNzPSJyZXF1aXJlZCI+UmVxdWlyZXMgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gNC4yLjArIGFuZCBzbWRfbGliIHYwLjM2KzwvcD4KCgk8cD5Eb3dubG9h ZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5v cmcvcGx1Z2lucy85NTcvc21kX2dhbGxlcnkiPnRleHRwYXR0ZXJuLm9yZzwvYT4sIG9yIHRo ZSBzb2Z0d2FyZSBwYWdlIGFib3ZlLCBwYXN0ZSB0aGUgY29kZSBpbnRvIHRoZSA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBBZG1pbiAtJmd0OyBQbHVnaW5zIHBhbmUsIGluc3Rh bGwgYW5kIGVuYWJsZSB0aGUgcGx1Z2luLiBWaXNpdCB0aGUgPGEgaHJlZj0iaHR0cDovL2Zv cnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTI2NDgyIj5mb3J1bSB0aHJl YWQ8L2E+IGZvciBtb3JlIGluZm8gb3IgdG8gcmVwb3J0IG9uIHRoZSBzdWNjZXNzIG9yIG90 aGVyd2lzZSBvZiB0aGUgcGx1Z2luLjwvcD4KCgk8cD5UbyByZW1vdmUgdGhlIHBsdWdpbiwg c2ltcGx5IGRlbGV0ZSBpdCBmcm9tIHRoZSBBZG1pbi0mZ3Q7UGx1Z2lucyB0YWIuIElmIG5v IG90aGVyIHBsdWdpbnMgYXJlIHVzaW5nIHNtZF9saWIgeW91IG1heSBzYWZlbHkgZGVsZXRl IHRoYXQgdG9vLjwvcD4KCgk8aDIgaWQ9InVzYWdlIj5PdmVydmlldzwvaDI+CgoJPHA+VGhl IGdlbmVyYWwgaWRlYSBpcyB0aGF0IHRoaXMgcGx1Z2luIGFjdHMgYXMgYSBmbGV4aWJsZSBp bWFnZSBmaWx0ZXI7IG5vdGhpbmcgbW9yZS4gVGhlIHBsdWdpbiBvcHRpb25zIGdvdmVybiB3 aGljaCBpbWFnZXMgYXJlIHB1bGxlZCBvdXQgb2YgdGhlIGRhdGFiYXNlIGFuZCB0aGV5IGFy ZSBzb3J0ZWQgaW50byB3aGF0ZXZlciBvcmRlciB5b3UgbGlrZS48L3A+CgoJPHA+QWZ0ZXIg dGhhdCwgZWFjaCBpbWFnZSAmIzgyMTI7IG9uZSBieSBvbmUgJiM4MjEyOyBoYXMgYWxsIGl0 cyBhdHRyaWJ1dGVzIHBhc3NlZCB0aHJvdWdoIHRoZSBjb250YWluZXIgb3IgPGNvZGU+Zm9y bTwvY29kZT4gb2YgeW91ciBjaG9pY2U7IHlvdSBzaW1wbHkgY2hvb3NlIHRvIGRpc3BsYXkg d2hpY2hldmVyIGltYWdlIGF0dHJpYnV0ZXMgeW91IGxpa2UgaW4gdGhpcyBmb3JtLiBUaGlz IG1lYW5zIGFueSBpbWFnZSBhdHRyaWJ1dGVzIGNhbiBiZSAmIzgyMjA7aW5qZWN0ZWQmIzgy MjE7IGRpcmVjdGx5IGludG8gYW55IG1hcmt1cDsgaXQgY291bGQgYmUgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gdGFncywgaXQgY291bGQgYmUgY29udGVudCwgaXQgY291bGQg YmUgamF2YXNjcmlwdCwgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj47IGFueXRo aW5nLjwvcD4KCgk8cD5QYWdpbmF0aW9uIHdvcmtzIHRoZSBzYW1lIHdheSwgYWxsb3dpbmcg eW91IHRvIHNwZWNpZnkgaG93IHVzZXJzIGNhbiBzdGVwIHRocm91Z2ggeW91ciBpbWFnZSBn YWxsZXJpZXMuPC9wPgoKCTxwPlRoZXJlIGlzIGFsc28gYSBzcGVjaWFsICYjODIyMDtjb2xs YXRlJiM4MjIxOyBtb2RlIHRoYXQgYWxsb3dzIHlvdSB0byBjb2xsZWN0IGFsbCBpbWFnZSBh dHRyaWJ1dGVzIHRvZ2V0aGVyIGludG8gYSBzZXJpZXMgb2YgYmlnIGxvbmcgbGlzdHMgPGVt PndpdGhvdXQ8L2VtPiBjYWxsaW5nIHRoZSBmb3JtIGV2ZXJ5IHRpbWUuIFRoZSBmb3JtL2Nv bnRhaW5lciBpcyB0aGVuIG9ubHkgcHJvY2Vzc2VkIG9uY2UgYXQgdGhlIGVuZC48L3A+CgoJ PHA+QmV0d2VlbiB0aGVzZSB0d28gbW9kZXMgeW91IHNob3VsZCBiZSBhYmxlIHRvIHJlYWxp c2UgYW55IGdhbGxlcnlpbmcgc29sdXRpb247IG5vdyBhbmQgaW4gZnV0dXJlLjwvcD4KCgk8 aDIgY2xhc3M9InRhZyAiIGlkPSJzbWRfZ2FsbGVyeSI+c21kX2dhbGxlcnk8L2gyPgoKCTxw IGNsYXNzPSJ0YWctc3VtbWFyeSI+UGxhY2Ugb25lIG9yIG1vcmUgc21kX2dhbGxlcnkgdGFn cyBpbiBhbiBhcnRpY2xlLCBwYWdlIG9yIGZvcm0sIGFuZCBzdXBwbHkgYW55IG9mIHRoZSBm b2xsb3dpbmcgb3B0aW9ucyB0byBjb25maWd1cmUgaXQuIFRoZSBhdHRyaWJ1dGVzIGFyZSBn cm91cGVkIGJ5IGZ1bmN0aW9uIHRvIG1ha2UgaXQgZWFzaWVyIG9uIHlvdXIgZXllcyAvIHNh bml0eS48L3A+CgoJPGgzIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9oMz4KCgk8aDQ+ RmlsdGVyczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+aWQ8L3NwYW4+ IDogbGlzdCBvZiBpbWFnZSBJRHMgdG8gZGlzcGxheS4gTWF5IGJlIGludGVnZXJzIG9yIHJh bmdlcywgZm9yIGV4YW1wbGUgPGNvZGU+aWQ9JnF1b3Q7NSwgNDIsIDgtMTEmcXVvdDs8L2Nv ZGU+IHdvdWxkIGdyYWIgaW1hZ2VzIDUsIDgsIDksIDEwLCAxMSBhbmQgNDIuIFVzZSAmIzgy MTY7ISYjODIxNzsgaW4gZnJvbnQgb2YgYSBudW1iZXIgb3IgcmFuZ2UgdG8gZXhjbHVkZSB0 aG9zZSBpbWFnZXMuIFVzZSAmIzgyMTY7PyYjODIxNzsgYW5kIHRoZSBuYW1lIG9mIGEgPHNw YW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGQgdG8gcmVhZCB0aGUgbGlzdCBvZiBp bWFnZSBJRHMgZnJvbSB0aGF0IGZpZWxkLCBlLmcuIDxjb2RlPmlkPT9hcnRpY2xlX2ltYWdl JnF1b3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYW1lPC9zcGFu PiA6IGxpc3Qgb2YgaW1hZ2UgbmFtZXMgdG8gZGlzcGxheS4gWW91IGNhbiBlaXRoZXIgc3Bl Y2lmeSBleGFjdCBtYXRjaGVzLCBlLmcuIDxjb2RlPm5hbWU9JnF1b3Q7bGlvbi5qcGcsIHRp Z2VyLmpwZyZxdW90OzwvY29kZT4gb3IgcmVndWxhciBleHByZXNzaW9uIG1hdGNoZXMgYnkg YXBwZW5kaW5nIDxjb2RlPjpyZWdleDwvY29kZT4gdG8gdGVybXMuIEZvciBleGFtcGxlLCA8 Y29kZT5uYW1lPSZxdW90O2xpb246cmVnZXgmcXVvdDs8L2NvZGU+IHdvdWxkIG1hdGNoIGxp b24uanBnLCBsaW9uZXNzLmpwZyBhbmQgbWVnYWxpb24uanBnLiBBbHRlcm5hdGl2ZWx5LCA8 Y29kZT5uYW1lPSZxdW90O15saW9uOnJlZ2V4JnF1b3Q7PC9jb2RlPiB3b3VsZCBvbmx5IG1h dGNoIGltYWdlcyB0aGF0IHN0YXJ0IHdpdGggJiM4MjE2O2xpb24mIzgyMTc7LiBVc2UgJiM4 MjE2OyEmIzgyMTc7IGluIGZyb250IG9mIG5hbWVzIHRvIGV4Y2x1ZGUgdGhvc2UgaW1hZ2Vz LiBVc2UgJiM4MjE2Oz8mIzgyMTc7IGFuZCB0aGUgbmFtZSBvZiBhIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IGZpZWxkIHRvIHJlYWQgdGhlIGxpc3Qgb2YgaW1hZ2UgbmFtZXMv cmVnZXhlcyBmcm9tIHRoYXQgZmllbGQsIGUuZy4gPGNvZGU+bmFtZT0/ZmlsZW5hbWVzJnF1 b3Q7PC9jb2RlPiB0byByZWFkIHRoZW0gZnJvbSBhIGN1c3RvbSBmaWVsZCBvZiB0aGF0IG5h bWUuPGRpdiBjbGFzcz0iYnJlYWsiPklmIHlvdSB3YW50IHRvIG5lZ2F0ZSBhIHJlZ3VsYXIg ZXhwcmVzc2lvbiwgdGhpbmdzIG1heSBnZXQgdHJpY2t5IGlmIHlvdSBhcmUgdXNpbmcgbWV0 YSBjaGFyYWN0ZXJzOyBpbiB0aGlzIGNhc2UgaXQgaXMgYmV0dGVyIHRvIHNldCB5b3VyIHJl Z3VsYXIgZXhwcmVzc2lvbiB1cCBpbiwgc2F5LCBhIHR4cDp2YXJpYWJsZSAob3IgYW4gYXJ0 aWNsZSBmaWVsZCkgYW5kIHVzZSA8Y29kZT5uYW1lPSZxdW90OyF2YXJfbmFtZTpyZWdleCZx dW90OzwvY29kZT4uPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPllvdSBjYW4gbWl4IGV4YWN0 IG1hdGNoZXMgYW5kIHJlZ2V4IG1hdGNoZXMgaW4gdGhlIHNhbWUgPGNvZGU+bmFtZTwvY29k ZT4gYXR0cmlidXRlIGlmIHlvdSB3aXNoLiBUaGUgY29sb24gY2FuIGJlIGFsdGVyZWQgd2l0 aCA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPiAmIzgyMTI7IHRoaXMgaXMgc29tZXRpbWVzIG5l Y2Vzc2FyeSBpZiB5b3UgYXJlIHVzaW5nIGNoYXJhY3RlciBjbGFzc2VzIHN1Y2ggYXMgPGNv ZGU+W1s6ZGlnaXQ6XV08L2NvZGU+IGluIHlvdXIgcmVndWxhciBleHByZXNzaW9uLjwvZGl2 PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jYXRlZ29yeTwvc3Bhbj4gOiBsaXN0 IG9mIGltYWdlIGNhdGVnb3JpZXMgdG8gZGlzcGxheS4gWW91IG1heSBzcGVjaWZ5IGZpeGVk LW5hbWUgY2F0ZWdvcmllcyAoZS5nLiAmIzgyMjA7YW5pbWFscyYjODIyMTspIG9yIGEmIzgy MTc7PyYjODIxNzsgZm9sbG93ZWQgYnkgYW4gYXJ0aWNsZSBmaWVsZCBuYW1lLiBlLmcuIDxj b2RlPmNhdGVnb3J5PSZxdW90O2FuaW1hbHMsIGFydC0/dGhpc2lkJnF1b3Q7PC9jb2RlPiB3 b3VsZCBncmFiIGFsbCBpbWFnZXMgZnJvbSBjYXRlZ29yeSAmIzgyMjA7YW5pbWFscyYjODIy MTsgYW5kIGNhdGVnb3J5ICYjODIyMDthcnQtNDImIzgyMjE7IChhc3N1bWluZyB0aGUgY3Vy cmVudCBhcnRpY2xlIGhhcyBhbiBpZCBvZiA0MikuIFVzZSAmIzgyMTY7ISYjODIxNzsgdG8g PGVtPmV4Y2x1ZGU8L2VtPiB0aGUgZ2l2ZW4gY2F0ZWdvcnkgb3IgZmllbGQuPGRpdiBjbGFz cz0iYnJlYWsiPkZpZWxkcyBtYXkgdGhlbXNlbHZlcyBjb250YWluIGxpc3RzIG9mIGNhdGVn b3JpZXMuIFRoZSAmIzgyMTY7PyYjODIxNzsgZmllbGQgbmFtZXMgbWF5IGJlIGNvbWJpbmVk IChlLmcuID9zLT9hcnRpY2xlX2ltYWdlKSBidXQgYmUgYXdhcmUgdGhhdCBjdXN0b20gZmll bGQgbmFtZXMgbWF5IGNvbnRhaW4gc3BhY2VzIGlmIDxjb2RlPnN0cmljdGZpZWxkcz0mcXVv dDswJnF1b3Q7PC9jb2RlPjwvZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5z dWJsZXZlbDwvc3Bhbj4gOiBhbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIGhvdyBtYW55ICYj ODIxNjtsZXZlbHMmIzgyMTc7IGRvd24gdG8gdHJhdmVyc2UgZWFjaCBtYXRjaGluZyBjYXRl Z29yeS4gPGNvZGU+c3VibGV2ZWw9JnF1b3Q7MCZxdW90OzwvY29kZT4gKHRoZSBkZWZhdWx0 KSBpcyBvbmx5IHRoZSB0b3AtbGV2ZWw7IDEgPSB0b3AtbGV2ZWwgcGx1cyB0aGUgMXN0IHN1 Yi1jYXQ7IDIgPSB0b3AtbGV2ZWwgcGx1cyB0aGUgbmV4dCAyIHN1Yi1jYXRzLCBhbmQgc28g b24uIDxjb2RlPnN1YmxldmVsPSZxdW90O2FsbCZxdW90OzwvY29kZT4gaXMgYWxsIHN1Yi1j YXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmF1dGhvcjwvc3Bhbj4gOiBmaWx0 ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlzdCBvZiBhdXRob3IgbG9naW4gbmFtZXM8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+ZXh0ZW5zaW9uPC9zcGFuPiA6IGZpbHRlciBpbWFnZXMg YnkgdGhpcyBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyAod2l0aG91dCB0aGUgbGVhZGluZyBk b3QpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmFzcGVjdDwvc3Bhbj4gOiBmaWx0 ZXIgaW1hZ2VzIGJ5IHRoaXMgbGlzdCBvZiBhc3BlY3QgcmF0aW9zLiBDaG9vc2UgZnJvbSBh bnkgb2YgPGNvZGU+cG9ydHJhaXQ8L2NvZGU+LCA8Y29kZT5sYW5kc2NhcGU8L2NvZGU+IG9y IDxjb2RlPnNxdWFyZTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZGlt ZW5zaW9uczwvc3Bhbj4gOiBmaWx0ZXIgaW1hZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBkaW1l bnNpb25zLiBTcGVjaWZ5IHVwIHRvIHR3byB2YWx1ZXMuIFRoZSBmaXJzdCBpcyB0aGUgd2lk dGggYW5kIHRoZSBzZWNvbmQgaXMgdGhlIGhlaWdodC4gSWYgeW91IHdpc2ggdG8gc3BlY2lm eSBtaW5pbXVtIG9yIG1heGltdW0gZGltZW5zaW9ucywgYWRkIDxjb2RlPiZndDs8L2NvZGU+ LCA8Y29kZT4mZ3Q7PTwvY29kZT4sIDxjb2RlPiZsdDs8L2NvZGU+IG9yIDxjb2RlPiZsdDs9 PC9jb2RlPiBiZWZvcmUgdGhlIHZhbHVlLiBGb3IgZXhhbXBsZSwgPGNvZGU+ZGltZW5zaW9u cz0mcXVvdDsmZ3Q7PTEwMjQsICZndDs9NzY4JnF1b3Q7PC9jb2RlPiB3b3VsZCBvbmx5IHNo b3cgaW1hZ2VzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxMDI0ICYjMjE1OyA3NjggcGl4 ZWxzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNvcnQ8L3NwYW4+IDogcmUtb3Jk ZXIgdGhlIGltYWdlcyBieSA8Y29kZT5jYXRlZ29yeTwvY29kZT4gKHRoZSBkZWZhdWx0KSwg PGNvZGU+bmFtZTwvY29kZT4sIDxjb2RlPmRhdGU8L2NvZGU+LCA8Y29kZT5pZDwvY29kZT4g KHRoZSBkZWZhdWx0IGlmIHVzaW5nIGFuIGlkKSwgZmlsZSA8Y29kZT5leHQ8L2NvZGU+ZW5z aW9uLCA8Y29kZT5hbHQ8L2NvZGU+LCA8Y29kZT5jYXB0aW9uPC9jb2RlPiwgPGNvZGU+YXV0 aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8 Y29kZT50aHVtYl93aWR0aDwvY29kZT4sIDxjb2RlPnRodW1iX2hlaWdodDwvY29kZT4sIDxj b2RlPmhhc3RodW1iPC9jb2RlPiBpbiBlaXRoZXIgPGNvZGU+YXNjPC9jb2RlPmVuZGluZyBv ciA8Y29kZT5kZXNjPC9jb2RlPmVuZGluZyBvcmRlci4gVHdvIHNwZWNpYWwgY2FzZXMgZXhp c3Q6IDxjb2RlPmZpeGVkPC9jb2RlPiBtYWludGFpbnMgdGhlIG9yZGVyIHlvdSBzcGVjaWZp ZWQgaW4gdGhlIGlkIGFuZC9vciBjYXRlZ29yeSBhdHRyaWJ1dGUsIHdoaWxlIDxjb2RlPnJh bmRvbTwvY29kZT4gc2h1ZmZsZXMgdGhlIG9yZGVyLjxkaXYgY2xhc3M9ImJyZWFrIj5Ob3Rl IHRoYXQgaWYgPGNvZGU+cmFuZG9tPC9jb2RlPiBhcHBlYXJzIGFzIHRoZSBmaXJzdCBpdGVt IGluIHRoZSBsaXN0LCByYW5kb20gaW1hZ2VzIHdpbGwgYmUgcHVsbGVkIGZyb20gdGhlIGRh dGFiYXNlIGFuZCB0aGV5IHdpbGwgdGhlbiBiZSBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBv cmRlciBsaXN0ZWQgYWZ0ZXIgaXQuIElmIDxjb2RlPnJhbmRvbTwvY29kZT4gYXBwZWFycyBh bnl3aGVyZSBlbHNlIGluIHRoZSBsaXN0LCBhbnkgc29ydCBpdGVtcyBiZWZvcmUgaXQgd2ls bCBkZXRlcm1pbmUgdGhlIG9yZGVyIG9mIGRhdGEgcHVsbGVkIGZyb20gdGhlIGRhdGFiYXNl LCBhbmQgdGhlIHJlc3VsdHMgd2lsbCB0aGVuIGJlIG9yZGVyZWQgcmFuZG9tbHkuIEluIHRo ZSAybmQgY2FzZSwgYW55IGl0ZW1zIGxpc3RlZCBhZnRlciAmIzgyMTY7cmFuZG9tJiM4MjE3 OyB3aWxsIGJlIGlnbm9yZWQsIGJ1dCA8Y29kZT5maXhlZDwvY29kZT4gaXMgc3RpbGwgaG9u b3VyZWQ8L2Rpdj48L2xpPgoJPC91bD4KCgk8aDQ+TGltaXRzIC8gb2Zmc2V0cyAvIHNpemVz PC9oND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW1pdDwvc3Bhbj4gOiB0 aGUgbWF4aW11bSBudW1iZXIgb2YgaW1hZ2VzIHRvIHNob3cgPGVtPnBlciBwYWdlPC9lbT4u IDAgKHRoZSBkZWZhdWx0KSBvciBvbWl0dGVkID0gdW5saW1pdGVkPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPm1heGxpbWl0PC9zcGFuPiA6IHRoZSBhYnNvbHV0ZSBtYXhpbXVt IG51bWJlciBvZiBpbWFnZSB0byBwdWxsIGZyb20gdGhlIGRhdGFiYXNlLiBNdXN0IGJlIGdy ZWF0ZXIgdGhhbiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPm9mZnNldDwvc3Bh bj4gOiBza2lwIHRoaXMgbWFueSBpbWFnZXMgYW5kIHN0YXJ0IGRpc3BsYXlpbmcgdGhlbSB0 aGVyZWFmdGVyPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRodW1ibGltaXQ8L3Nw YW4+IDogdGhlIG1heGltdW0gbnVtYmVyIG9mIHRodW1ibmFpbHMgdG8gc2hvdy4gMCBvciBv bWl0dGVkID0gYWxsIHRodW1icy4gTm90ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIGxpbWl0 OyB5b3UgY2FuIGxhdW5jaCBhIDIwLWltYWdlIGdhbGxlcnkgYnV0IG9ubHkgc2hvdyAxIHRo dW1ibmFpbCBvbiB0aGUgcGFnZS4gQmUgYXdhcmUgdGhhdCBpZiB5b3UgYXJlIHNob3dpbmcg bXVsdGlwbGUgY2F0ZWdvcmllcyBmcm9tIGEgc2luZ2xlIHRhZywgeW91IHdpbGwgc2VlIDxj b2RlPnRodW1ibGltaXQ8L2NvZGU+IHRodW1ibmFpbHMgPGVtPmF0IGVhY2ggY2hhbmdlIGlu IGNhdGVnb3J5PC9lbT4uIElmIHlvdSBkb24mIzgyMTc7dCB3YW50IHRoaXMsIHNldCA8Y29k ZT5vbmNoYW5nZTwvY29kZT4gdG8gc29tZXRoaW5nIGVsc2UuIFNlZSB0aGUgPGNvZGU+e29i amVjdH08L2NvZGU+IDxhIGhyZWY9IiNyZXBfZ2FsbGVyeSI+cmVwbGFjZW1lbnQgdGFnPC9h PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5ncm91cGxpbWl0PC9zcGFuPiA6IHRo ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgdG8gcHV0IG9uIHRoZSBwYWdlLCA8ZW0+cGVy IGdyb3VwPC9lbT4uIEEgZ3JvdXAgaXMgY29uc2lkZXJlZCBhbnkgc2V0IG9mIGltYWdlcyAo ZS5nLiBhbGwgaW1hZ2VzIGZyb20gb25lIGNhdGVnb3J5KSBzbyB0aGlzIGNhbiBiZSB1c2Vk IHRvIG9ubHkgZGlzcGxheSBOIGltYWdlcyBhdCBlYWNoIGNoYW5nZSBpbiBjYXRlZ29yeS4g QSBjb25jcmV0ZSBleGFtcGxlIGlzIGRpc3BsYXlpbmcgYSB0aHVtYm5haWwgdGhhdCBsYXVu Y2hlcyBhIGdhbGxlcnkgc2hvd2luZyB0aGUgNSBtb3N0IHJlY2VudCB3b3JrcyBmcm9tIGVh Y2ggYXV0aG9yLiBXaXRob3V0IDxjb2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OyBncm91 cGxpbWl0PSZxdW90OzUmcXVvdDs8L2NvZGU+IHRoZSBudW1iZXIgb2YgaW1hZ2VzIGluIHRo ZSBncm91cCB3b3VsZCBiZSB1bmxpbWl0ZWQuIFNlZSA8YSBocmVmPSIjZWcxMiI+ZXhhbXBs ZSAxMjwvYT4gZm9yIG1vcmU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+dGh1bWJv ZmZzZXQ8L3NwYW4+IDogc2tpcCB0aGlzIG1hbnkgdGh1bWJzIGJlZm9yZSBkaXNwbGF5aW5n IDxjb2RlPnRodW1ibGltaXQ8L2NvZGU+IHRodW1ibmFpbHM8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+dGh1bWJzaXplPC9zcGFuPiA6IHRha2VzIG9uZSBvciB0d28gY29tbWEt c2VwYXJhdGVkIG51bWJlcnMgdG8gc3BlY2lmeSB3aWR0aCBhbmQvb3IgaGVpZ2h0IG9mIGFs bCB5b3VyIGdhbGxlcnkgdGh1bWJuYWlscy4gVGhlIGRlZmF1bHQgaXMgaW4gcGl4ZWxzIGlm IHlvdSBkb24mIzgyMTc7dCBzcGVjaWZ5IHVuaXRzLiBNaXNzaW5nIG91dCBvbmUgb3IgdGhl IG90aGVyIHBhcmFtZXRlciAoaS5lLiBoYXZpbmcgYW4gJiM4MjIwO2VtcHR5JiM4MjIxOyBw YXJhbWV0ZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjb21tYSkgd2lsbCBvbmx5IHNldCBvbmUg b2YgdGhlIGRpbWVuc2lvbnMuIFVzZSBhIHNpbmdsZSB2YWx1ZSB0byBtYWtlIHNxdWFyZSB0 aHVtYnMuIElmIHlvdSBvbWl0IGVpdGhlciBvciBib3RoLCB0aGUgY29ycmVzcG9uZGluZyB2 YWx1ZSB3aWxsIGJlIHJlYWQgZnJvbSB0aGUgZGF0YWJhc2U8L2xpPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+aW1nc2l6ZTwvc3Bhbj4gOiBpZGVudGljYWwgdG8gPGNvZGU+dGh1bWJz aXplPC9jb2RlPiBidXQgZm9yIHRoZSBmdWxsIHNpemUgaW1hZ2VzPC9saT4KCTwvdWw+CgoJ PGg0PkZvcm1zIGFuZCBwYWdpbmc8L2g0PgoKCTx1bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPmZvcm08L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZv cm0gdXNlZCB0byBsYXlvdXQgeW91ciBtYXRjaGluZyBpbWFnZXMuIFdpdGhvdXQgdGhpcyBh dHRyaWJ1dGUgdGhlIHBsdWdpbiBhY3RzIGFzIGEgY29udGFpbmVyIHRhZy4gV2l0aG91dCBh IGNvbnRhaW5lciwgdGhlIHBsdWdpbiBkaXNwbGF5cyBlYWNoIGZ1bGwtc2l6ZSBpbWFnZSwg aHlwZXJsaW5rZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFnZWZvcm08L3Nw YW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm0gdXNlZCB0byBz cGVjaWZ5IHRoZSBsYXlvdXQgb2YgeW91ciBwYWdpbmcgbmF2aWdhdGlvbjwvbGk+CgkJPGxp PjxzcGFuIGNsYXNzPSJhdG5tIj5wYWdpbmc8L3NwYW4+IDogc3dpdGNoIHBhZ2luZyBvbiB3 aXRob3V0IGhhdmluZyB0byBzcGVjaWZ5IGEgcGFnZWZvcm0uIFdoZW4gdGhpcyBpcyB1c2Vk LCBhbGwgPGEgaHJlZj0iI3JlcF9wYWdpbmciPnBhZ2UgcmVwbGFjZW1lbnQgdGFnczwvYT4g YmVjb21lIGF2YWlsYWJsZSBpbiB0aGUgPGEgaHJlZj0iI3JlcF9nYWxsZXJ5Ij5nYWxsZXJ5 IHJlcGxhY2VtZW50IHRhZ3M8L2E+IGFzIHdlbGw8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+cGFnZXBvczwvc3Bhbj4gOiB0aGUgcG9zaXRpb24gb2YgdGhlIHBhZ2luZyBibG9j ay4gT3B0aW9ucyBhcmUgPGNvZGU+YmVsb3c8L2NvZGU+ICh0aGUgZGVmYXVsdCksIDxjb2Rl PmFib3ZlPC9jb2RlPiwgb3IgYm90aCBvZiB0aGVtIHNlcGFyYXRlZCBieSA8Y29kZT5kZWxp bTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+b2JqZWN0Zm9ybTwvc3Bh bj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSB1c2VkIHRvIHNw ZWNpZnkgdGhlIGxheW91dCBvZiB5b3VyIDxjb2RlPntvYmplY3R9PC9jb2RlPiByZXBsYWNl bWVudCB0YWcuIFlvdSBjYW4gdXNlIGFsbCB0aGUgc3RhbmRhcmQgPGEgaHJlZj0iI3JlcF9n YWxsZXJ5Ij5nYWxsZXJ5IHJlcGxhY2VtZW50IHRhZ3M8L2E+IHdpdGggdGhlIGV4Y2VwdGlv biBvZiA8Y29kZT57b2JqZWN0fTwvY29kZT4gaXRzZWxmISBVc2VzIGEgaHlwZXJsaW5rZWQg aW1hZ2UgaWYgbm8gZm9ybSBpcyBzcGVjaWZpZWQ8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+Y291bnRmb3JtPC9zcGFuPiA6IGxpc3Qgb2YgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gZm9ybXMgdG8gdXNlIHdoZW4gY2VydGFpbiBudW1iZXJlZCBpbWFnZXMgYXJl IHJlYWNoZWQuIFNlZSA8YSBocmVmPSIjY291bnRmb3JtIj5jb3VudCBmb3JtczwvYT4gYW5k IDxhIGhyZWY9IiNlZzEwIj5leGFtcGxlIDEwPC9hPi4gVGhpcyBoYXMgbm8gZWZmZWN0IGlu IGNvbGxhdGUgbW9kZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5jb3VudHBvczwv c3Bhbj4gOiBkZWZhdWx0IHBvc2l0aW9uIG9mIHRoZSA8Y29kZT5jb3VudGZvcm08L2NvZGU+ cy4gRWl0aGVyIDxjb2RlPmFib3ZlPC9jb2RlPiAodGhlIGRlZmF1bHQpLCA8Y29kZT5iZWxv dzwvY29kZT4sIG9yIGJvdGggb2YgdGhlbSBzZXBhcmF0ZWQgYnkgPGNvZGU+ZGVsaW08L2Nv ZGU+LiBDYW4gYmUgb3ZlcnJpZGRlbiBvbiBhIHBlci1mb3JtIGJhc2lzPC9saT4KCTwvdWw+ CgoJPGg0Pkdyb3VwaW5nIGltYWdlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+b25jaGFuZ2U8L3NwYW4+IDogYSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gJiM4MjIw O3dhdGNoJiM4MjIxOy4gSXQgdGVsbHMgdGhlIHBsdWdpbiB0aGF0IHlvdSB3YW50IHRvIGJl IG5vdGlmaWVkIHdoZW4gaXRlbXMgaW4gdGhpcyBsaXN0IGNoYW5nZSBjb21wYXJlZCB0byB0 aGUgcHJldmlvdXMgaW1hZ2UuIFVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIHRoaXMgc2hv dWxkIGJlIHRoZSBzYW1lIGFzIHlvdXIgPGNvZGU+c29ydDwvY29kZT4gcGFyYW1ldGVyIG9y IHlvdSBtYXkgZ2V0IHNvbWUgZnJlYWt5IHJlc3VsdHMhIEl0IGRlZmF1bHRzIHRvIDxjb2Rl PmNhdGVnb3J5PC9jb2RlPi48ZGl2IGNsYXNzPSJicmVhayI+VGhpcyBpcyB2ZXJ5IHVzZWZ1 bCBmb3Igc3BsaXR0aW5nIGdhbGxlcmllcyBhdCBldmVyeSBjaGFuZ2UgaW4gY2F0ZWdvcnkg YW5kIGRpc3BsYXlpbmcgdGhlIGNhdGVnb3J5IHRpdGxlIGFib3ZlIGVhY2ggZ3JvdXAuIEl0 ZW1zIHlvdSB3YXRjaCBhcmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgcmVwbGFjZW1lbnQgdGFn cyBhbmQgYXJlIGF2YWlsYWJsZSBieSBwdXR0aW5nICYjODIyMDtvbmNoYW5nZTomIzgyMjE7 IGluIGZyb250IG9mIHRoZWlyIG5hbWUgKGUuZy4gPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5 fTwvY29kZT4gJiM4MjEyOyBzZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3Ig bW9yZSkuIFRoZSBjb2xvbiBkZWxpbWl0ZXIgY2FuIGJlIGNoYW5nZWQgd2l0aCA8Y29kZT5w YXJhbWRlbGltPC9jb2RlPi48L2Rpdj48ZGl2IGNsYXNzPSJicmVhayI+WW91IGNhbiBhbHNv IGVsZWN0IHRvIGRlZmVyIHByb2Nlc3Npbmcgb2Ygb25jaGFuZ2UgZXZlbnRzIHRvIGEgZm9y bS4gVG8gZG8gc28sIHNwZWNpZnkgYSBmb3JtIGFmdGVyIHlvdXIgd2F0Y2ggaXRlbSBsaWtl IHRoaXMgPGNvZGU+Y2F0ZWdvcnlfdGl0bGU6bXlfZm9ybTwvY29kZT4uIEluIG15X2Zvcm0g eW91IGNhbiBwdXQgYW55IG1hcmt1cCBhbmQgcmVwbGFjZW1lbnQgdGFncy4gU2VlIDxhIGhy ZWY9IiNlZzExIj5leGFtcGxlIDExPC9hPiBmb3IgbW9yZS48L2Rpdj48ZGl2IGNsYXNzPSJi cmVhayI+QW5vdGhlciB3YXkgb2YgdXNpbmcgdGhpcyBhdHRyaWJ1dGUgaXMgd2l0aCB0aGUg c3BlY2lhbCBwcmVmaXggPGNvZGU+c21kX2V2ZXJ5Om48L2NvZGU+IHdoaWNoIHdpbGwgdHJp Z2dlciBhIGdyb3VwIGNoYW5nZSBldmVyeSBOdGggaW1hZ2UuIE5vdGUgaXQgY2FuJiM4MjE3 O3QgYmUgdXNlZCB0byB3YXRjaCBzcGVjaWZpYyB0aGluZ3MgaW4gdGhpcyBtb2RlOyBpdCBp cyBvbmx5IHVzZWQgdG8gdHJpZ2dlciA8Y29kZT5ncm91cHRhZzwvY29kZT4gY2hhbmdlczwv ZGl2PjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5vbmNoYW5nZXdyYXB0YWc8L3Nw YW4+IDogdGhlIChYKUhUTUwgdGFnIHRvIHN1cnJvdW5kIGFueSA8Y29kZT5vbmNoYW5nZTwv Y29kZT4gZWxlbWVudHMgeW91IGFyZSB3YXRjaGluZywgZS5nLiA8Y29kZT5vbmNoYW5nZXdy YXB0YWc9JnF1b3Q7aDMmcXVvdDs8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPm9uY2hhbmdlY2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8 L3NwYW4+IGNsYXNzIG5hbWUgdHJvIGFwcGx5IHRvIHRoZSB3cmFwdGFnIG9mIGFueSBvbmNo YW5nZSBlbGVtZW50cyB5b3UgYXJlIHdhdGNoaW5nPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmdyb3VwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBtYWtlIGF2YWls YWJsZSBhcyBhIHJlcGxhY2VtZW50IHNvIHlvdSBjYW4gd3JhcCBncm91cHMgb2YgZWxlbWVu dHMgYXQgZWFjaCA8Y29kZT5vbmNoYW5nZTwvY29kZT4uIERlZmF1bHQ6IHVuc2V0LiBTZWUg PGEgaHJlZj0iI2VnNiI+ZXhhbXBsZXMgNjwvYT4gZm9yIG1vcmUgb24gdGhlIDxjb2RlPmdy b3VwdGFnc3RhcnQ8L2NvZGU+IC8gPGNvZGU+Z3JvdXB0YWdlbmQ8L2NvZGU+IHJlcGxhY2Vt ZW50IHRhZ3M8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Z3JvdXBjbGFzczwvc3Bh bj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBhcHBs aWVkIHRvIGFueSA8Y29kZT5ncm91cHRhZzwvY29kZT48L2xpPgoJPC91bD4KCgk8aDQ+VGFn L2NsYXNzL2Zvcm1hdHRpbmcgYXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+d3JhcHRhZzwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91 bmQgdGhlIGVudGlyZSBnYWxsZXJ5LCBlLmcuIDxjb2RlPndyYXB0YWc9JnF1b3Q7ZGl2JnF1 b3Q7PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5icmVhazwvc3Bhbj4g OiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vycm91bmQgZWFjaCB0aHVtYm5haWw8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXRubSI+Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5DU1M8L3NwYW4+IGNsYXNzIG5hbWUgYXBwbGllZCB0byB0aGUgPGNvZGU+d3JhcHRh ZzwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YnJlYWtjbGFzczwvc3Bh bj4gOiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgbmFtZSBhcHBs aWVkIHRvIHRoZSA8Y29kZT5icmVhazwvY29kZT4gZWxlbWVudHM8L2xpPgoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+aHRtbF9pZDwvc3Bhbj4gOiB0aGUgbmFtZSBvZiBhbiA8c3BhbiBj bGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gPGNvZGU+aWQ8L2NvZGU+IGF0dHJpYnV0ZSB0byBh cHBseSB0byB0aGUgd3JhcHRhZzwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5uYXZ3 cmFwdGFnPC9zcGFuPiA6IHRoZSAoWClIVE1MIHRhZyB0byBzdXJyb3VuZCB0aGUgZW50aXJl IDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiwgZS5nLiA8Y29kZT53cmFwdGFnPSZxdW90O2RpdiZx dW90OzwvY29kZT4uIERlZmF1bHQ6IDxjb2RlPnVsPC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFu IGNsYXNzPSJhdG5tIj5uYXZicmVhazwvc3Bhbj4gOiB0aGUgKFgpSFRNTCB0YWcgdG8gc3Vy cm91bmQgZWFjaCBpdGVtIHdpdGhpbiB0aGUgPGNvZGU+cGFnZWZvcm08L2NvZGU+LiBEZWZh dWx0OiA8Y29kZT5saTwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+bmF2 Y2xhc3M8L3NwYW4+IDogdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+IGNsYXNz IG5hbWUgb2YgdGhlIG5hdmlnYXRpb24gd3JhcHRhZy4gRGVmYXVsdDogPGNvZGU+c21kX2dh bGxlcnlfbmF2PC9jb2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5lbXB0eWNs YXNzPC9zcGFuPiA6IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+Q1NTPC9zcGFuPiBjbGFzcyBu YW1lIG9mIHRoZSBuYXZpZ2F0aW9uIGl0ZW1zIHRoYXQgYXJlIDxlbT5ub3Q8L2VtPiBsaW5r cy4gRGVmYXVsdDogPGNvZGU+ZW1wdHk8L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPmZvcm1hdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25seSBpZiB1 c2luZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiBhbGxvd3MgeW91IHRvIGNoYW5n ZSB0aGUgZGF0ZSBmb3JtYXQgdXNlZC4gQ2FuIHRha2UgYW55IDxhIGhyZWY9Imh0dHA6Ly91 ay5waHAubmV0L3N0cmZ0aW1lIj5zdHJmdGltZSgpPC9hPiB2YWx1ZXMuIERlZmF1bHRzIHRv IHRoZSBkYXRlIHN5c3RlbSBhcyBzZXQgaW4gdGhlIHNpdGUmIzgyMTc7cyBwcmVmczwvbGk+ CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5sYW5nPC9zcGFuPiAoPHNwYW4gY2xhc3M9InJl cXVpcmVkIj5vbmx5IGlmIHVzaW5nIDxjb2RlPntkYXRlfTwvY29kZT48L3NwYW4+KSA6IHNl dHMgdGhlIGxhbmd1YWdlIGNvZGUgb2YgdGhlIGRhdGUgZm9ybWF0PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmdtdDwvc3Bhbj4gKDxzcGFuIGNsYXNzPSJyZXF1aXJlZCI+b25s eSBpZiB1c2luZyA8Y29kZT57ZGF0ZX08L2NvZGU+PC9zcGFuPikgOiByZXR1cm5zIGVpdGhl ciBsb2NhbCB0aW1lIGFjY29yZGluZyB0byB0aGUgc2V0IHRpbWUgem9uZSBwcmVmZXJlbmNl cyAoMCksIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5HTVQ8L3NwYW4+IHRpbWUgKDEpLiBEZWZh dWx0OiAwPC9saT4KCTwvdWw+CgoJPGg0PlBsdWdpbiBjdXN0b21pc2F0aW9uPC9oND4KCgk8 dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhl IGRlbGltaXRlciBmb3Igc3BlY2lmeWluZyBhdHRyaWJ1dGUgbGlzdHMuIERlZmF1bHQgaXMg Y29tbWEgKCwpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnBhcmFtZGVsaW08L3Nw YW4+IDogY2hhbmdlIHRoZSBkZWxpbWl0ZXIgZm9yIHNwZWNpZnlpbmcgaW50ZXItcGFyYW1l dGVyIGF0dHJpYnV0ZXMuIERlZmF1bHQgaXMgY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPmNvbGxhdGU8L3NwYW4+IDogc3dpdGNoIHRoZSBwbHVnaW4gaW50byA8 YSBocmVmPSIjY29sbGF0ZV9tb2RlIj5jb2xsYXRlIG1vZGU8L2E+PC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPmNvbGxhdGVkZWxpbTwvc3Bhbj4gOiBjaGFuZ2UgdGhlIGRlbGlt aXRlciBiZXR3ZWVuIGVhY2ggY29sbGF0ZWQgaXRlbS4gRGVmYXVsdCBpcyBjb21tYSAoLCk8 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29tYm88L3NwYW4+IDogc3BlY2lmeSB5 b3VyIG93biA8YSBocmVmPSIjY29tYm9zIj5jdXN0b20gcmVwbGFjZW1lbnQgdGFnczwvYT48 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ZXNjYXBlPC9zcGFuPiA6IGxpc3Qgb2Yg cmVwbGFjZW1lbnQgdmFyaWFibGUgbmFtZXMgdG8gJiM4MjE2O2VzY2FwZSYjODIxNzssIGlu IG90aGVyIHdvcmRzIGNvbnZlcnQgYW55IDxzcGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFu PiB0YWdzIHRvIHRoZWlyIGNoYXJhY3RlciBlbnRpdHkgZXF1aXZhbGVudHMuIFNldCB0byA8 Y29kZT5lc2NhcGU9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB0byB0dXJuIHRoaXMgZmVhdHVyZSBv ZmYuIFlvdSBjYW4gZXNjYXBlIHlvdXIgb3duIGNvbWJvcy4gRGVmYXVsdDogPGNvZGU+YWx0 LCB0aXRsZSwgY2FwdGlvbjwvY29kZT48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ c3RyaWN0ZmllbGRzPC9zcGFuPiA6IHdoZW4gdXNpbmcgJiM4MjE2Oz8mIzgyMTc7IG9yICYj ODIxNjshJiM4MjE3OyBmaWVsZHMsIHNwYWNlcyBhcmUgYWxsb3dlZCBpbiBmaWVsZCBuYW1l cy4gU2V0IDxjb2RlPnN0cmljdGZpZWxkcz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byBmb3Ji aWQgc3BhY2VzLiBEZWZhdWx0OiAwPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmdh bGxlcnlpZDwvc3Bhbj4gOiB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcyB5b3Ugc2hvdWxk IG5ldmVyIG5lZWQgdGhpcy4gRWFjaCBnYWxsZXJ5IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElE IGJhc2VkIG9uIHRoZSBzdXBwbGllZCBhdHRyaWJ1dGVzIHNvIHlvdSBtYXkgdXNlIG1vcmUg dGhhbiBvbmUgZ2FsbGVyeSBvbiBhIHBhZ2UgYW5kIG5hdmlnYXRlIHRoZW0gaW5kZXBlbmRl bnRseS4gSW4gdGhlIHVubGlrZWx5IGV2ZW50IHRoYXQgdHdvIGlkZW50aWNhbCBJRHMgYXJl IGdlbmVyYXRlZCB5b3UgY2FuIG92ZXJyaWRlIHRoZSBJRCBmb3IgYSBnYWxsZXJ5IGJ5IHVz aW5nIHRoaXMgYXR0cmlidXRlLjxkaXYgY2xhc3M9ImJyZWFrIj5JbnRlcm5hbGx5IHRoZSBw bHVnaW4gZ2VuZXJhdGVzIGEgMzItY2hhcmFjdGVyIGhhc2ggc3RyaW5nIGZvciBlYWNoIHRh ZywgdGhlbiBwaWNrcyBhIDQtY2hhciBjb2RlIGZyb20gdGhpcyBzdHJpbmcgKGl0IHRha2Vz IGV2ZXJ5IDZ0aCBjaGFyYWN0ZXIgYnkgZGVmYXVsdCkuIFlvdSBjYW4gc3VwcGx5IGEgdW5p cXVlIGZpeGVkIHN0cmluZyAoZS5nLiA8Y29kZT5nYWxsZXJ5aWQ9JnF1b3Q7TXlHYWwmcXVv dDs8L2NvZGU+KSBvciBnaXZlIGl0IGEgcXVlc3Rpb24gbWFyayBhbmQgMiBudW1iZXJzIHNl cGFyYXRlZCBieSBhIGNvbG9uIChlLmcuIDxjb2RlPmdhbGxlcnlpZD0mcXVvdDs/NTo0JnF1 b3Q7PC9jb2RlPikuIFRoZSBmaXJzdCBudW1iZXIgaXMgdGhlIGxlbmd0aCBvZiB0aGUgZmlu YWwgc3RyaW5nIHRvIGdlbmVyYXRlLCB0aGUgc2Vjb25kIG51bWJlciBpcyBob3cgbWFueSBj aGFyYWN0ZXJzIHRvIHNraXAgaW4gdGhlIDMyLWNoYXIgc3RyaW5nIGVhY2ggdGltZSBpdCBw aWNrcyBvbmUuPC9kaXY+PGRpdiBjbGFzcz0iYnJlYWsiPkluIHRoaXMgY2FzZSBpdCBnZW5l cmF0ZXMgYSA1LWNoYXJhY3RlciBzdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVycyBpdCBmaW5k cyBhdCBwb3NpdGlvbnMgMSw1LDksMTMsIGFuZCAxNy4gSWYgeW91IG9taXQgdGhlIDJuZCBu dW1iZXIgKGUuZy4gPGNvZGU+Z2FsbGVyeWlkPSZxdW90Oz82JnF1b3Q7PC9jb2RlPikgaXQg d2lsbCBhc3N1bWUgaXQmIzgyMTc7cyBhbiBpbmNyZW1lbnQgb2YgMTwvZGl2PjwvbGk+CgkJ PGxpPjxzcGFuIGNsYXNzPSJhdG5tIj50aHVtYjwvc3Bhbj4gOiB1bmRlciBub3JtYWwgb3Bl cmF0aW9uLCB0aHVtYm5haWxzIHVzZSB0aGUgJiM4MjE2O3QmIzgyMTc7IGltYWdlIGluIHlv dXIgPGNvZGU+aW1hZ2VzPC9jb2RlPiBkaXJlY3RvcnkgYW5kIHRoZSBmdWxsIHNpemUgcGlj dHVyZXMgZG9uJiM4MjE3O3QuIElmIHlvdSB3aXNoIHRvIHJlZGVmaW5lIHRoaXMgeW91IG1h eSBzcGVjaWZ5IHVwIHRvIHR3byB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGEgY29sb24uIFRoZSBm aXJzdCBpbmRpY2F0ZXMgdGhlIHN0YXRlIG9mIHRoZSBmdWxsIHNpemUgaW1hZ2UsIGFuZCB0 aGUgc2Vjb25kIGlzIHRoZSBzdGF0ZSBvZiB0aGUgdGh1bWJuYWlsOgoJPHVsPgoJCTxsaT50 aHVtYj0wOjEgJiM4MjEyOyBmdWxsc2l6ZSA9IHJlZ3VsYXIgaW1hZ2UgOiB0aHVtYm5haWwg PSB0aHVtYjwvbGk+CgkJPGxpPnRodW1iPTE6MCAmIzgyMTI7IGZ1bGxzaXplID0gdGh1bWIg OiB0aHVtYm5haWwgPSByZWd1bGFyIGltYWdlPC9saT4KCQk8bGk+dGh1bWI9MDowIChvciB0 aHVtYj0wKSAmIzgyMTI7IGZ1bGxzaXplID0gcmVndWxhciBpbWFnZSA6IHRodW1ibmFpbCA9 IHJlZ3VsYXIgaW1hZ2U8L2xpPgoJCTxsaT50aHVtYj0xOjEgKG9yIHRodW1iPTEpICYjODIx MjsgZnVsbHNpemUgPSB0aHVtYiA6IHRodW1ibmFpbCA9IHRodW1iPC9saT4KCTwvdWw+PC9s aT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnRleHQ8L3NwYW4+IDogZGlzcGxheSB0aGUg Z2l2ZW4gdGV4dCBpbnN0ZWFkIG9mIHRodW1ibmFpbHMuIFRoZSB0ZXh0IGNhbiBjb250YWlu IDxjb2RlPj88L2NvZGU+IGFydGljbGUgZmllbGRzPC9saT4KCTwvdWw+CgoJPGg0PlNwZWNp YWwgYXR0cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Y29s dW1uczwvc3Bhbj4gOiBnaXZlIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25h bCBjb2x1bW5zIHlvdSB3b3VsZCBsaWtlIHRvIHB1bGwgZnJvbSB0aGUgZGF0YWJhc2UuIEVh Y2ggaXRlbSB5b3Ugc3BlY2lmeSBpcyBzcGxpdCBpbnRvIHRocmVlIHBhcnRzOiA8Y29kZT50 YWJsZS5jb2x1bW46cmVwbGFjZW1lbnQgbmFtZTwvY29kZT4uIFRoZSBvbmx5IG1hbmRhdG9y eSBwYXJ0IGlzIHRoZSByZXBsYWNlbWVudCBuYW1lLCBzaW5jZSA8Y29kZT50YWJsZTwvY29k ZT4gZGVmYXVsdHMgdG8gdHhwX2ltYWdlLCBhbmQgdGhlIDxjb2RlPmNvbHVtbjwvY29kZT4g ZGVmYXVsdHMgdG8gdGhlIHNhbWUgbmFtZSBhcyB0aGUgcmVwbGFjZW1lbnQgeW91IHNwZWNp ZnkuPGRpdiBjbGFzcz0iYnJlYWsiPkZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBpbnN0YWxs ZWQgdGhlIGNub19pbWFnZV9vcmRlciBwbHVnaW4geW91IGNvdWxkIHVzZSA8Y29kZT5jb2x1 bW5zPSZxdW90O3Bvc2l0aW9uJnF1b3Q7PC9jb2RlPiwgc2luY2UgdGhlIHBsdWdpbiBhZGRz IHRoZSAmIzgyMTY7cG9zaXRpb24mIzgyMTc7IGNvbHVtbiB0byB0eHBfaW1hZ2UuIFlvdSBj b3VsZCB0aGVuIHNvcnQgYnkgPGNvZGU+cG9zaXRpb248L2NvZGU+IGFuZCBhbHNvIGRpc3Bs YXkgdGhlIGltYWdlJiM4MjE3O3MgPGNvZGU+e3Bvc2l0aW9ufTwvY29kZT4uIElmIHlvdSB3 aXNoZWQgdG8gcmVuYW1lIHRoZSB2YXJpYWJsZSB0bywgc2F5LCA8Y29kZT5pbWdwb3M8L2Nv ZGU+IHlvdSB3b3VsZCB1c2UgPGNvZGU+Y29sdW1ucz0mcXVvdDtwb3NpdGlvbjppbWdwb3Mm cXVvdDs8L2NvZGU+LiBOb3RlIHRoYXQgaWYgeW91IHNwZWNpZnkgdGhlIHRhYmxlIG5hbWUg eW91IG11c3QgYWxzbyBpbmNsdWRlIHRoZSB0YWJsZSBwcmVmaXggaWYgeW91IGhhdmUgdXNl ZCBvbmUuPC9kaXY+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmRpcmVjdG9yeTwv c3Bhbj4gOiAoPHNwYW4gY2xhc3M9InJlcXVpcmVkIj5leHBlcmltZW50YWw8L3NwYW4+KSBy ZWFkIGltYWdlcyBmcm9tIGEgbGlzdCBvZiBkaXJlY3RvcmllcyAob3IgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj5zKSBpbnN0ZWFkIG9mIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+ VFhQPC9zcGFuPiBkYXRhYmFzZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5tYXRj aDwvc3Bhbj4gOiBsaW1pdCB0aGUgaW1hZ2VzIGFuZCBkaXJlY3RvcmllcyBjaG9zZW4gaW4g PGNvZGU+ZGlyZWN0b3J5PC9jb2RlPiBtb2RlLiBHaXZlIGEgbGlzdCBvZiB3b3JkcyB0byBp bmNsdWRlIG9yICFleGNsdWRlIGFuZCBhbnkgbWF0Y2hpbmcgZmlsZXMgb3IgZGlyZWN0b3Jp ZXMgd2lsbCBiZSBjaG9zZW4gb3IgaWdub3JlZCwgcmVzcGVjdGl2ZWx5LiBUaGUgbWF0Y2gg dGVybXMgYXJlIGF1dG9tYXRpY2FsbHkgYXNzdW1lZCB0byBiZSAmIzgyMjA7d2lsZCYjODIy MTsgc28gYW55IHBhcnQgb2YgdGhlIGZpbGUgbmFtZSAvIHBhdGggd2lsbCB0cmlnZ2VyIHRo ZSBtYXRjaDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5kZWJ1Zzwvc3Bhbj4gOiB0 dXJuIG9uIGRpYWdub3N0aWNzLiBWYXJ5aW5nIGxldmVscyBvZiB2ZXJib3NpdHkgZnJvbSAw IChub25lKSB0byA0IChhIGxvdCk8L2xpPgoJPC91bD4KCgk8aDIgaWQ9ImdhbGxlcnlfZm9y bSI+R2FsbGVyeSBmb3JtPC9oMj4KCgk8cD5UaGUgPGNvZGU+Zm9ybTwvY29kZT4gaXMgd2hl cmUgeW91IGRlc2lnbiB3aGF0IGV2ZXJ5IHRodW1ibmFpbCB3aWxsIGxvb2sgbGlrZSBvbiB0 aGUgc2NyZWVuLiBZb3UgZG8gdGhpcyBieSBzcGVjaWZ5aW5nIDxzcGFuIGNsYXNzPSJjYXBz Ij5IVE1MPC9zcGFuPiBtYXJrdXAgb3IgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g dGFncyBhcyBub3JtYWwuIEluIGtleSBwbGFjZXMgd2hlcmUgeW91IHdhbnQsIGZvciBleGFt cGxlLCBhbiBpbWFnZSBJRCAvIGFsdCB0YWcgLyBpbWFnZSB3aWR0aCB0byBiZSBkaXNwbGF5 ZWQsIHlvdSBzcGVjaWZ5IHNwZWNpYWwgcmVwbGFjZW1lbnQgdGFncywgZGV0YWlsZWQgYmVs b3cuIFRoZXNlIGFyZSByZXBsYWNlZCBmb3IgZWFjaCBpbWFnZSBpbiB0dXJuLCB0aHVzIGJ1 aWxkaW5nIHVwIHRoZSBnYWxsZXJ5LjwvcD4KCgk8cD5JbiBjb2xsYXRlIG1vZGUsIHRoZSBp bWFnZSBkZXRhaWxzIGFyZSBpbnN0ZWFkIG1hZGUgaW50byBsaXN0cy4gVGhlIGZvcm0gaXMg b25seSBwcm9jZXNzZWQgb25jZSBhbmQgdGhlIHJlcGxhY2VtZW50IHRhZ3Mgb3V0cHV0IHRo ZSBlbnRpcmUgbGlzdC48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9nYWxsZXJ5 Ij5SZXBsYWNlbWVudCB0YWdzOiBnYWxsZXJ5PC9oMz4KCgk8dWw+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57aWR9PC9zcGFuPiA6IGltYWdlIElEIChvciwgaW4gZGlyZWN0b3J5IG1v ZGUsIHRoZSBmaWxlbmFtZSB3aXRob3V0IGl0cyBleHRlbnNpb24pPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPntuYW1lfTwvc3Bhbj4gOiBmdWxsIGltYWdlIGZpbGVuYW1lIGFz IGRlZmluZWQgaW4gdGhlIGRhdGFiYXNlLCB1c3VhbGx5IGluY2x1ZGluZyBleHRlbnNpb248 L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2V4dH08L3NwYW4+IDogZmlsZSBleHRl bnNpb24sIGluY2x1ZGluZyBkb3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2Nh dGVnb3J5fTwvc3Bhbj4gOiBpbWFnZSBjYXRlZ29yeSBuYW1lPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPntjYXRlZ29yeV90aXRsZX08L3NwYW4+IDogaW1hZ2UgY2F0ZWdvcnkg dGl0bGU8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2F1dGhvcn08L3NwYW4+IDog d2hvIHVwbG9hZGVkIHRoZSBpbWFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 dXJsfTwvc3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgZnVs bHNpemUgaW1hZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1idXJsfTwv c3Bhbj4gOiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvZiB0aGUgdGh1bWJuYWls PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntpbWFnZXBhdGh9PC9zcGFuPiA6IGRp cmVjdG9yeSB0aGUgaW1hZ2UgaXMgaW48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e2ltYWdlZGVmfTwvc3Bhbj4gOiBqdXN0IHRoZSBmaWxlIG5hbWUgcGFydCBvZiB0aGUgaW1h Z2UgKGUuZy4gNS5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYmRl Zn08L3NwYW4+IDoganVzdCB0aGUgZmlsZSBuYW1lIHBhcnQgb2YgdGhlIHRodW1ibmFpbCAo ZS5nLiA1dC5qcGcpPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnthbHR9PC9zcGFu PiA6IGFsdCB0ZXh0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aXRsZX0gb3Ig e2NhcHRpb259PC9zcGFuPiA6IGNhcHRpb248L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e2RhdGV9PC9zcGFuPiA6IGltYWdlIHVwbG9hZCBkYXRlPC9saT4KCQk8bGk+PHNwYW4g Y2xhc3M9ImF0bm0iPnt3aWR0aH08L3NwYW4+IDogaW1hZ2Ugd2lkdGg8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e2hlaWdodH08L3NwYW4+IDogaW1hZ2UgaGVpZ2h0PC9saT4K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt3dW5pdHN9PC9zcGFuPiA6IGltYWdlIHdpZHRo IHVuaXRzIChlLmcuIHB4LCAlLCBlbSwgZXRjLik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e2h1bml0c308L3NwYW4+IDogaW1hZ2UgaGVpZ2h0IHVuaXRzPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVtYndpZHRofTwvc3Bhbj4gOiB0aHVtYm5haWwgd2lk dGg8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaGVpZ2h0fTwvc3Bhbj4g OiB0aHVtYm5haWwgaGVpZ2h0PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0aHVt Ynd1bml0c308L3NwYW4+IDogdGh1bWJuYWlsIHdpZHRoIHVuaXRzIChlLmcuIHB4LCAlLCBl bSwgZXRjLik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e3RodW1iaHVuaXRzfTwv c3Bhbj4gOiB0aHVtYm5haWwgaGVpZ2h0IHVuaXRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9 ImF0bm0iPntoYXN0aHVtYn08L3NwYW4+IDogaWYgdGhlIGltYWdlIGhhcyBhbiBhc3NvY2lh dGVkIHRodW1ibmFpbCBvciBub3Q8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e2dh bGxlcnlpZH08L3NwYW4+IDogZ2FsbGVyeSBpZCB0aGF0IHlvdSBvciB0aGUgcGx1Z2luIGFz c2lnbmVkPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntvYmplY3R9PC9zcGFuPiA6 IGEgc3BlY2lhbCBpdGVtIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSA8Y29kZT50ZXh0PC9jb2Rl PiBPUiB0aGUgaW1hZ2UgdGFnIG9mIHRoZSBjb3JyZXNwb25kaW5nIHRodW1ibmFpbCwgYnV0 IDxlbT5vbmx5PC9lbT4gaWYgPGNvZGU+dGh1bWJsaW1pdDwvY29kZT4gYWxsb3dzIGl0LiBl LmcuIGlmIDxjb2RlPnRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OzwvY29kZT4gdGhpcyB2YXJp YWJsZSBpcyBvbmx5IHNldCBmb3IgdGhlIGZpcnN0IHRodW1ibmFpbCBpbiB0aGUgbGlzdDsg ZXZlcnkgb3RoZXIgdGltZSBpdCBpcyBlbXB0eTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj57Y291bnRlcn08L3NwYW4+IDogaW1hZ2UgY291bnRlciwgc3RhcnRpbmcgZnJvbSAx IGFuZCBpbmNyZW1lbnRpbmcgZWFjaCB0aW1lPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPntpbmRleH08L3NwYW4+IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7 IHByb2JhYmx5IG5vdCBtdWNoIHVzZSk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e3RodW1iY291bnRlcn08L3NwYW4+IDogdGh1bWJuYWlsIGltYWdlIGNvdW50ZXIsIHN0YXJ0 aW5nIGZyb20gMS4gTm90ZSBpdCBpcyAmIzgyMTY7cmVzZXQmIzgyMTc7IHdoZW5ldmVyIGFu IGVsZW1lbnQgZ2l2ZW4gaW4gPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGRpZmZlcnMgZnJvbSB0 aGUgcHJldmlvdXMgaXRlbTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57dGh1bWJp bmRleH08L3NwYW4+IDogaW5kZXggY291bnRlciAoemVyby1iYXNlZCAmIzgyMTI7IHByb2Jh Ymx5IG5vdCBtdWNoIHVzZSkuIEl0IGlzIHJlc2V0IGxpa2UgPGNvZGU+e3RodW1iY291bnRl cn08L2NvZGU+PC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnt0b3RhbGltYWdlc308 L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIGltYWdlcyBtYXRjaGVkIG9uIHRoaXMgcGFnZTwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwvc3Bhbj4gOiBhYnNv bHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBwYWdlczwvbGk+Cgk8 L3VsPgoKCTxwPkluIGFkZGl0aW9uLCBpZiBlaXRoZXIgPGNvZGU+cGFnaW5nPSZxdW90OzEm cXVvdDs8L2NvZGU+IG9yIDxjb2RlPnBhZ2Vmb3JtPC9jb2RlPiBoYXZlIGJlZW4gc3BlY2lm aWVkLCBhbGwgdGhlIDxhIGhyZWY9IiNyZXBfcGFnaW5nIj5wYWdpbmcgcmVwbGFjZW1lbnQg dGFnczwvYT4gYXJlIGF2YWlsYWJsZSB0b28uIElmIHRob3NlIGFyZW4mIzgyMTc7dCBlbm91 Z2gsIHlvdSBjYW4gPGEgaHJlZj0iI2NvbWJvcyI+Y3JlYXRlIHlvdXIgb3duPC9hPiBieSBn cm91cGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIGFib3ZlLCBvcHRpb25hbGx5IHdpdGggYXJ0 aWNsZSB2YXJpYWJsZXMgc3VjaCBhcyA8Y29kZT4/ZXhjZXJwdDwvY29kZT4sIDxjb2RlPj9r ZXl3b3JkczwvY29kZT4sIDxjb2RlPj9hcnRpY2xlX2ltYWdlPC9jb2RlPiwgZXRjLjwvcD4K Cgk8cD5PdGhlciB0YWdzIGFyZSBhZGRlZCBkZXBlbmRpbmcgaWYgeW91IGFyZSB3YXRjaGlu ZyBmb3IgPGNvZGU+b25jaGFuZ2U8L2NvZGU+IGVsZW1lbnRzLCBvciBpZiB5b3UgaGF2ZSBz cGVjaWZpZWQgYSA8Y29kZT5ncm91cHRhZzwvY29kZT4uIElmIHlvdSBhZGRlZCA8Y29kZT5v bmNoYW5nZT0mcXVvdDthdXRob3IsIGNhdGVnb3J5JnF1b3Q7PC9jb2RlPiB0aGVuIGV2ZXJ5 IHRpbWUgdGhlIGF1dGhvciBvciBjYXRlZ29yeSBjaGFuZ2VkIGNvbXBhcmVkIHRvIHRoZSBw cmV2aW91cyBpbWFnZSwgb25lIG9yIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyB3b3VsZCBi ZWNvbWUgYXZhaWxhYmxlOyBuYW1lbHkgPGNvZGU+e29uY2hhbmdlOmF1dGhvcn08L2NvZGU+ IGFuZCA8Y29kZT57b25jaGFuZ2U6Y2F0ZWdvcnkpPC9jb2RlPi4gVXNpbmcgb25jaGFuZ2Ug d2l0aCA8Y29kZT5zbWRfZXZlcnk8L2NvZGU+IGRvZXMgPGVtPm5vdDwvZW0+IGFkZCBhIG5l dyByZXBsYWNlbWVudCB0YWcgYXMgaXQgaXMgbWVyZWx5IHVzZWQgdG8gY291bnQuPC9wPgoK CTxwPklmIHlvdSB1c2VkIDxjb2RlPmdyb3VwdGFnPSZxdW90O2RpdiZxdW90OzwvY29kZT4g YXMgd2VsbCwgeW91IHdvdWxkIGJlIGdpdmVuIHR3byBuZXcgcmVwbGFjZW1lbnQgdGFncyBs YWJlbGxlZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdl bmQ8L2NvZGU+LiBTZWUgPGEgaHJlZj0iI2VnNiI+ZXhhbXBsZSA2PC9hPiBmb3IgZGV0YWls cy48L3A+CgoJPGgyIGlkPSJwYWdpbmdfZm9ybSI+UGFnaW5nIGZvcm08L2gyPgoKCTxwPkFk ZCBnYWxsZXJ5IG5hdmlnYXRpb24gdG8geW91ciBwYWdlLiBXb3JrcyBpbiBhIHNpbWlsYXIg bWFubmVyIHRvIHRoZSA8YSBocmVmPSIjZ2FsbGVyeV9mb3JtIj5nYWxsZXJ5IGZvcm08L2E+ OiBhIHNlcmllcyBvZiByZXBsYWNlbWVudCB0YWdzIGdvdmVybiB3aGljaCBnYWxsZXJ5IG5h dmlnYXRpb24gaXRlbXMgYXJlIGF2YWlsYWJsZS4gWW91IGNvdWxkIGNob29zZSB0byBvbmx5 IHNob3cgbmV4dC9wcmV2LiBPciBwZXJoYXBzIDFzdCBwYWdlL2xhc3QgcGFnZS4gT3IgbnVt YmVyZWQgcGFnZSBsaW5rcy48L3A+CgoJPGgzIGNsYXNzPSJhdHRzICIgaWQ9InJlcF9wYWdp bmciPlJlcGxhY2VtZW50IHRhZ3M6IHBhZ2luZzwvaDM+CgoJPHVsPgoJCTxsaT48c3BhbiBj bGFzcz0iYXRubSI+e25hdmZpcnN0fTwvc3Bhbj4gOiBmaXJzdCBwYWdlIChkZWZhdWx0IGxh YmVsOiAmIzgyMjA7Rmlyc3QmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bh bj4pPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZwcmV2fTwvc3Bhbj4gOiBw cmV2aW91cyBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JmxhcXVvOyYjODIyMTsgLyA8 c3BhbiBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e25hdmVhcmxpZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYmVmb3JlIHRo ZSBjdXJyZW50IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXN1 cmx9PC9zcGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRoIGEgPHNwYW4gY2xhc3M9ImNhcHMiPlVS TDwvc3Bhbj4gbGluayB0byBpdHNlbGY8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+ e25hdnRoaXN9PC9zcGFuPiA6IGN1cnJlbnQgcGFnZSB3aXRob3V0IGEgPHNwYW4gY2xhc3M9 ImNhcHMiPlVSTDwvc3Bhbj4gbGluazwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57 bmF2bGF0ZXJ9PC9zcGFuPiA6IGFueSBwYWdlIG51bWJlcnMgYWZ0ZXIgdGhlIGN1cnJlbnQg cGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bmF2bmV4dH08L3NwYW4+IDog bmV4dCBwYWdlIChkZWZhdWx0IGxhYmVsOiAmIzgyMjA7JnJhcXVvOyYjODIyMTsgLyA8c3Bh biBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPik8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+e25hdmxhc3R9PC9zcGFuPiA6IGxhc3QgcGFnZSAoZGVmYXVsdCBsYWJlbDogJiM4MjIw O0xhc3QmIzgyMjE7IC8gPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4pPC9saT4KCQk8 bGk+PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZmaXJzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB0byBmaXJzdCBwYWdlPC9saT4KCQk8bGk+ PHNwYW4gY2xhc3M9ImF0bm0iPntuYXZwcmV2cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIHByZXZpb3VzIHBhZ2U8L2xpPgoJCTxsaT48 c3BhbiBjbGFzcz0iYXRubSI+e25hdnRoaXNwYWdldXJsfTwvc3Bhbj4gOiByYXcgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdG8gY3VycmVudCBwYWdlPC9saT4KCQk8bGk+PHNw YW4gY2xhc3M9ImF0bm0iPntuYXZuZXh0cGFnZXVybH08L3NwYW4+IDogcmF3IDxzcGFuIGNs YXNzPSJjYXBzIj5VUkw8L3NwYW4+IHRvIG5leHQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNs YXNzPSJhdG5tIj57bmF2bGFzdHBhZ2V1cmx9PC9zcGFuPiA6IHJhdyA8c3BhbiBjbGFzcz0i Y2FwcyI+VVJMPC9zcGFuPiB0byBsYXN0IHBhZ2U8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+e3RvdGFsaW1hZ2VzfTwvc3Bhbj4gOiB0b3RhbCBudW1iZXIgb2YgaW1hZ2VzIG1h dGNoZWQgb24gdGhlIGN1cnJlbnQgcGFnZTwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5t Ij57dG90YWxwYWdlc308L3NwYW4+IDogdG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoaXMg Y29sbGVjdGlvbjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj57bWF4aW1hZ2VzfTwv c3Bhbj4gOiBhYnNvbHV0ZSBtYXhpbXVtIG51bWJlciBvZiBpbWFnZXMgYWNyb3NzIGFsbCBw YWdlczwvbGk+Cgk8L3VsPgoKCTxwPlRoZSBjdXJyZW50IHBhZ2UgaGFzIGEgZml4ZWQgY2xh c3Mgb2YgJiM4MjE2O2N1cnJlbnQmIzgyMTc7IGFuZCBlYWNoIGl0ZW0gaXMsIGJ5IGRlZmF1 bHQsIGEgPGNvZGU+Jmx0O2xpJmd0OzwvY29kZT4gZm9yIGVhc3kgc3R5bGluZy4gQ3VzdG9t IGxhYmVscyBhcmUgZGVmaW5lZCBkaXJlY3RseSBpbiB0aGUgZm9ybSBpdHNlbGY7IGZvciBl eGFtcGxlIHRvIGxhYmVsIHRoZSBsaW5rIHRoYXQgdGFrZXMgdXNlcnMgdG8gdGhlIGZpcnN0 IHBhZ2Ugb2YgdGhlIGdhbGxlcnkgYXMgJiM4MjIwOzFzdCYjODIyMTssIHVzZTo8L3A+CgoJ PHA+PGNvZGU+e25hdmZpcnN0OjFzdH08L2NvZGU+PC9wPgoKCTxwPldpdGggdGhpcyBzeW50 YXggeW91IGNhbiBsYWJlbCBuYXZmaXJzdCwgbmF2bGFzdCwgbmF2cHJldiwgbmF2bmV4dCBh bmQgbmF2dGhpcyAodGhlICYjODIxNjs6JiM4MjE3OyBkZWxpbWl0ZXIgaW4gdGhpcyBjYXNl IGlzIHNwZWNpZmllZCBieSA8Y29kZT5wYXJhbWRlbGltPC9jb2RlPikuIFlvdSBjYW4gdXNl IHRoaXMgbWVjaGFuaXNtIHRvIHJlYWQgPHNwYW4gY2xhc3M9ImNhcHMiPk1MUDwvc3Bhbj4g c25pcHBldHMsIGUuZzo8L3A+CgoJPHA+PGNvZGU+e25hdmZpcnN0OiMjZmlyc3RMYWJlbCMj fTwvY29kZT48L3A+CgoJPHA+WW91IGFyZSBub3QgbGltaXRlZCB0byB0ZXh0IGxhYmVscy4g SW1hZ2VzIGNvdWxkIGJlIHVzZWQ6PC9wPgoKCTxwPjxjb2RlPntuYXZsYXN0OiAmbHQ7aW1n IHNyYz0mcXVvdDtpbWFnZXMvbGFzdC5wbmcmcXVvdDsgLyZndDt9PC9jb2RlPjwvcD4KCgk8 cD5Zb3UgY2FuIG92ZXJyaWRlIHRoZSBudW1iZXIgb2YgaXRlbXMgZGlzcGxheWVkIGJ5IG5h dmVhcmxpZXIgYW5kIG5hdmxhdGVyIGJ5IHNwZWNpZnlpbmcgYSBjb2xvbiBhbmQgYSBudW1i ZXIuIFNvIHRvIG9ubHkgc2hvdyAyIGl0ZW1zIHRvIHRoZSBsZWZ0IG9mIHRoZSBjdXJyZW50 IHBhZ2UgYW5kIDMgaXRlbXMgdG8gdGhlIHJpZ2h0LCB1c2UgPGNvZGU+e25hdmVhcmxpZXI6 Mn0ge25hdmxhdGVyOjN9PC9jb2RlPiBpbiB5b3VyIGZvcm0uIElmIHlvdSB3ZXJlIG9uIHBh Z2UgOSBvZiAxNSwge25hdmVhcmxpZXI6NH0ge25hdmxhdGVyOjN9IHdvdWxkIHNob3cgPGNv ZGU+Jmx0OyZsdDsgNSA2IDcgOCA5IDEwIDExIDEyICZndDsmZ3Q7PC9jb2RlPjwvcD4KCgk8 cD5DdXJyZW50bHkgPGNvZGU+e25hdmVhcmxpZXJ9PC9jb2RlPiBhbmQgPGNvZGU+e25hdmxh dGVyfTwvY29kZT4gb25seSBkaXNwbGF5IGFyYWJpYyBudW1lcmFscy4gQW55IGlkZWFzIG9u IGhvdyB0byBvZmZlciBvdGhlciBjaGFyYWN0ZXIgc2V0cyBncmVhdGx5IGFwcHJlY2lhdGVk LjwvcD4KCgk8aDIgaWQ9ImNvdW50Zm9ybSI+Q291bnQgZm9ybXM8L2gyPgoKCTxwPlNvbWV0 aW1lcyBpdCYjODIxNztzIGhhbmR5IHRvIGJlIGFibGUgdG8gdGFrZSBhY3Rpb24gb25seSB3 aGVuIGNlcnRhaW4gaW1hZ2VzIGFyZSByZWFjaGVkOyBmb3IgZXhhbXBsZTo8L3A+CgoJPHVs PgoJCTxsaT5vbmx5IGRpc3BsYXkgc29tZXRoaW5nIG9uIHRoZSBmaXJzdCBvciBsYXN0IGlt YWdlPC9saT4KCQk8bGk+c3RhcnQgYSBuZXcgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3Nw YW4+ICYjODIxNjtyb3cmIzgyMTc7IGV2ZXJ5IDNyZCBpbWFnZTwvbGk+CgkJPGxpPmJyZWFr IHlvdXIgZ2FsbGVyeSB1cCB3aXRoIGFuIGFkdmVydDwvbGk+Cgk8L3VsPgoKCTxwPlRoaXMg Y2FuIGJlIGRvbmUgd2l0aCBzbWRfaWYgYnV0IHNpbmNlIGl0IGlzIHN1Y2ggYSBjb21tb24g ZmVhdHVyZSwgdGhlIHBsdWdpbiBoYXMgdGhlIGFiaWxpdHkgYnVpbHQgaW4uIEFsbCByZXBs YWNlbWVudCB0YWdzIGFyZSBhdmFpbGFibGUgd2l0aGluIHlvdXIgY291bnRmb3JtcyBzbyB5 b3UgY2FuIGRvIHNvbWUgcHJldHR5IG5lYXQgc3R1ZmYuIEl0IGlzIGJlc3QgZXhwbGFpbmVk IGJ5IGV4YW1wbGU6PC9wPgoKCTx1bD4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzE6 Z2FsX2hlYWQmcXVvdDs8L2NvZGU+IDogdGhpcyB3b3VsZCBvdXRwdXQgdGhlIGZvcm0gPGVt PmdhbF9oZWFkPC9lbT4gb25seSB3aGVuIHRoZSBmaXJzdCBpbWFnZSBpcyBkaXNwbGF5ZWQ8 L2xpPgoJCTxsaT48Y29kZT5jb3VudGZvcm09JnF1b3Q7e3RvdGFsaW1hZ2VzfTpnYWxfZm9v dCZxdW90OzwvY29kZT4gOiB0aGlzIHdvdWxkIG91dHB1dCB0aGUgZm9ybSA8ZW0+Z2FsX2Zv b3Q8L2VtPiBvbmx5IHdoZW4gdGhlIGxhc3QgaW1hZ2UgaXMgZGlzcGxheWVkPC9saT4KCQk8 bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90OzE6Z2FsX2hlYWQsIHt0b3RhbGltYWdlc306Z2Fs X2Zvb3QmcXVvdDs8L2NvZGU+IDogZG8gYm90aCBvZiB0aGUgYWJvdmU8L2xpPgoJCTxsaT48 Y29kZT5jb3VudGZvcm09JnF1b3Q7MTpnYWxfaGVhZCwge3RvdGFsaW1hZ2VzfTpnYWxfZm9v dDpzbWRfYmVsb3cmcXVvdDs8L2NvZGU+IDogdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIGV4 YW1wbGUsIGJ1dCBwdXQgdGhlIGNvbnRlbnRzIGJlbG93IHRoZSBsYXN0IGltYWdlIChieSBk ZWZhdWx0LCBhbGwgb3V0cHV0IGFwcGVhcnMgYWJvdmUgdGhlIGdpdmVuIGltYWdlKTwvbGk+ CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDs0Ojk6c21kX2JlbG93OmdhbF9hZCZxdW90 OzwvY29kZT4gOiBvdXRwdXQgPGVtPmdhbF9hZDwvZW0+IGFmdGVyIHRoZSA0dGggYW5kIDl0 aCBpbWFnZXMgb25seTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDs0LTk6c21k X2JlbG93OmdhbF9hZCZxdW90OzwvY29kZT4gOiBvdXRwdXQgPGVtPmdhbF9hZDwvZW0+IGFm dGVyIHRoZSA0dGgsIDV0aCwgNnRoLCA3dGgsIDh0aCBhbmQgOXRoIGltYWdlcyBvbmx5PC9s aT4KCQk8bGk+PGNvZGU+Y291bnRmb3JtPSZxdW90O3NtZF9ldmVyeTozOmdhbF9yb3cmcXVv dDs8L2NvZGU+IDogb3V0cHV0IDxlbT5nYWxfcm93PC9lbT4gYmVmb3JlIGV2ZXJ5IDNyZCBp bWFnZTwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVvdDtzbWRfZXZlcnk6MjohODpn YWxfcm93JnF1b3Q7PC9jb2RlPiA6IG91dHB1dCA8ZW0+Z2FsX3JvdzwvZW0+IGJlZm9yZSBl dmVyeSBldmVuIGltYWdlIGJ1dCBub3Qgb24gdGhlIDh0aCBpbWFnZTwvbGk+CgkJPGxpPjxj b2RlPmNvdW50Zm9ybT0mcXVvdDs6Z2FsX3JvdyZxdW90OzwvY29kZT4gOiB1c2UgYW4gZW1w dHkgZmlyc3QgdmFsdWUgdG8gb3V0cHV0IDxlbT5nYWxfcm93PC9lbT4gYmVmb3JlIGV2ZXJ5 IGltYWdlLiBUaGlzIG1heSBzZWVtIHVzZWxlc3MsIGJ1dCBpdCBtZWFucyB5b3UgY2FuIHVz ZSB0d28sIHRocmVlLCBmb3VyJiM4MjMwOyBmb3JtcyAob3IgYW55IG51bWJlciBvZiBmb3Jt cyBhbmQgdGhlIGNvbnRhaW5lcikgc2ltdWx0YW5lb3VzbHkgdG8gaXRlcmF0ZSBvdmVyIHRo ZSBzYW1lIGdhbGxlcnkuIE9yIHVzZSB0aGUgc2FtZSBmb3JtIGF0IGRpZmZlcmVudCBmcmVx dWVuY2llcy4gR2V0IGNyZWF0aXZlITwvbGk+CgkJPGxpPjxjb2RlPmNvdW50Zm9ybT0mcXVv dDs6ITU6Z2FsX3JvdzpzbWRfYmVsb3cmcXVvdDs8L2NvZGU+IDogYWdhaW4sIG1pc3Npbmcg b3V0IHRoZSBmaXJzdCB2YWx1ZSB3aWxsIG91dHB1dCBnYWxfcm93IGFmdGVyIGV2ZXJ5IGlt YWdlLCBidXQgdGhpcyB0aW1lIHNraXBwaW5nIHRoZSA1dGggaW1hZ2U8L2xpPgoJPC91bD4K Cgk8cD5UaGUgPGNvZGU+LDwvY29kZT4gYW5kIDxjb2RlPjo8L2NvZGU+IGNhbiBiZSBvdmVy cmlkZGVuIHdpdGggdGhlIDxjb2RlPmRlbGltPC9jb2RlPiBhbmQgPGNvZGU+cGFyYW1kZWxp bTwvY29kZT4gYXR0cmlidXRlcywgcmVzcGVjdGl2ZWx5LjwvcD4KCgk8cD5UaGVyZSBhcmUg YSBmZXcgcnVsZXMgd2hlbiB1c2luZyB0aGUgY291bnRmb3JtOjwvcD4KCgk8dWw+CgkJPGxp Pm51bWJlcnMgbXVzdCBhcHBlYXIgYmVmb3JlIHRoZSBmb3JtIG5hbWU8L2xpPgoJCTxsaT50 aGUgZm9ybSBuYW1lIGlzIHVzdWFsbHkgdGhlIGxhc3QgaXRlbSBpbiB0aGUgY29sb24tc2Vw YXJhdGVkIGxpc3QsIHRob3VnaCB5b3UgY2FuIHB1dCA8Y29kZT5zbWRfYWJvdmU8L2NvZGU+ IG9yIDxjb2RlPnNtZF9iZWxvdzwvY29kZT4gbGFzdCBpZiB5b3Ugd2lzaDwvbGk+CgkJPGxp Pjxjb2RlPnNtZF9ldmVyeTwvY29kZT4gb25seSBhZmZlY3RzIHRoZSB2YWx1ZSB0aGF0IDxl bT5pbW1lZGlhdGVseTwvZW0+IGZvbGxvd3MgaXQsIGUuZy4gPGNvZGU+Y291bnRmb3JtPSZx dW90O3NtZF9ldmVyeTo1Ojc6MTI6bXlfYWQmcXVvdDs8L2NvZGU+IHdpbGwgb3V0cHV0IDxl bT5teV9hZDwvZW0+IGF0IGV2ZXJ5IDV0aCBpbWFnZSwgYXMgd2VsbCBhcyA8ZW0+b25seTwv ZW0+IG9uIHRoZSA3dGggYW5kIDEydGggaW1hZ2VzLiBUaHVzIHRoZSBzZXF1ZW5jZSB3b3Vs ZCBiZSA1LCA3LCAxMCwgMTIsIDE1LCAyMCwgMjUsIDMwJiM4MjMwOzwvbGk+CgkJPGxpPmlm IHVzaW5nIDxjb2RlPnNtZF9ldmVyeTwvY29kZT4sIGl0IDxzdHJvbmc+bXVzdDwvc3Ryb25n PiBhcHBlYXIgYXMgdGhlIGZpcnN0IGl0ZW0uIEZvciBleGFtcGxlIDxjb2RlPmNvdW50Zm9y bT0mcXVvdDs0OnRoZV9mb3VydGgsIDY6c21kX2V2ZXJ5OjU6bXlfYWQmcXVvdDs8L2NvZGU+ IGlzIGludmFsaWQsIGJ1dCA8Y29kZT5jb3VudGZvcm09JnF1b3Q7NDp0aGVfZm91cnRoLCBz bWRfZXZlcnk6NTo2Om15X2FkJnF1b3Q7PC9jb2RlPiBpcyBPSzwvbGk+Cgk8L3VsPgoKCTxw PlNlZSA8YSBocmVmPSIjZWcxMCI+ZXhhbXBsZSAxMDwvYT4gZm9yIG1vcmUuPC9wPgoKCTxo MiBpZD0iY29tYm9zIj5Db21ib3M8L2gyPgoKCTxwPklmIHRoZSBidWlsdC1pbiA8YSBocmVm PSIjcmVwX2dhbGxlcnkiPnJlcGxhY2VtZW50IHRhZ3M8L2E+IGFyZW4mIzgyMTc7dCBlbm91 Z2ggZm9yIHlvdXIgbmVlZHMgb3IgeW91IGZpbmQgeW91cnNlbGYgcmVwZWF0aW5nIHRoZSBz YW1lIGNvbWJpbmF0aW9uIGFuZCB3YW50IHRvIHNhdmUgeW91cnNlbGYgc29tZSB0eXBpbmcs IHlvdSBjYW4gZGVmaW5lIHlvdXIgb3duLiBUaGUgc3ludGF4IGlzOjwvcD4KCgk8cD48Y29k ZT5jb21ibz0mcXVvdDtuZXd0YWcxOmRlZmluaXRpb24sIG5ld3RhZzI6ZGVmaW5pdGlvbiwg Li4uJnF1b3Q7PC9jb2RlPjwvcD4KCgk8cD4mIzgyMTY7ZGVmaW5pdGlvbiYjODIxNzsgY2Fu IGJlIGFueSBmaXhlZCB0ZXh0LCBhbnkgZXhpc3RpbmcgcmVwbGFjZW1lbnQgdGFnLCBvciBh bnkgJiM4MjE2Oz8mIzgyMTc7IGFydGljbGUgdmFyaWFibGUgc28geW91IGNhbiBnZXQgcmVh bGx5IHdpbGQgaGVyZSwgZm9yIGV4YW1wbGU6PC9wPgoKCTxwPjxjb2RlPmNvbWJvPSZxdW90 O2ltZ2luOmZvdW5kIGluID9zIFt0YWdnZWQgd2l0aCA/a2V5d29yZHMuIFBob3RvIGJ5IHth dXRob3J9XSZxdW90OzwvY29kZT48L3A+CgoJPHA+T25jZSBkZWZpbmVkLCA8Y29kZT57aW1n aW59PC9jb2RlPiBpcyBhdmFpbGFibGUgdG8geW91ciBnYWxsZXJ5IDxjb2RlPmZvcm08L2Nv ZGU+IGFuZCBtaWdodCBiZSByZXBsYWNlZCB3aXRoICYjODIyMDtmb3VuZCBpbiB6b28gW3Rh Z2dlZCB3aXRoIHplYnJhLCBhZnJpY2EsIHN0cmlwZXMuIFBob3RvIGJ5IEJsb2tlXSYjODIy MTsuICRwcmV0ZXh0IGlzIGFsc28gYXZhaWxhYmxlIGZvciB0aG9zZSBnZWVrcyB3aG8ga25v dyB3aGF0JiM4MjE3O3MgaW4gaXQgKHRlbXBvcmFyaWx5IHVzZSA8Y29kZT5kZWJ1Zz0mcXVv dDs0JnF1b3Q7PC9jb2RlPiB0byB2aWV3IGFsbCBhdmFpbGFibGUgYXJ0aWNsZSB2YXJpYWJs ZXMpLjwvcD4KCgk8cD5PbmUgdGhpbmcgdG8gd2F0Y2ggb3V0IGZvciBpcyB0aGF0IHRoZSBz cGFjZSBjaGFyYWN0ZXIgaXNuJiM4MjE3O3QgbmVjZXNzYXJpbHkgYSBkZWxpbWl0ZXIgZm9y IDxjb2RlPj88L2NvZGU+IHZhcmlhYmxlcyAoYmVjYXVzZSBjdXN0b20gZmllbGRzIGNhbiBo YXZlIHNwYWNlcyBpbiB0aGVtKS4gU28gPGNvZGU+Y29tYm89JnF1b3Q7ZG9lc25vdHdvcms6 P3MgaW4gP2NhdGVnb3J5MSZxdW90OzwvY29kZT4gd2lsbCBsb29rIGZvciBhIHZhcmlhYmxl IGxhYmVsbGVkICYjODIyMDtzIGluJiM4MjIxOyBhbmQgb25lIGNhbGxlZCAmIzgyMjA7Y2F0 ZWdvcnkxJiM4MjIxOy4gT25seSBvbmUgb2YgdGhvc2UgZXhpc3RzISBDbGV2ZXIgdXNlIG9m IHBhcmVudGhlc2VzIG9yIG90aGVyIHB1bmN0dWF0aW9uIGNhbiB3b3JrIHJvdW5kIHRoaXMu IE9yIHVzZSA8Y29kZT5zdHJpY3RmaWVsZHM9JnF1b3Q7MCZxdW90OzwvY29kZT4gdG8gdHVy biBvZmYgdGhlIHVzZSBvZiBzcGFjZXMgaW4gY3VzdG9tIGZpZWxkIG5hbWVzLjwvcD4KCgk8 aDIgaWQ9ImNvbGxhdGVfbW9kZSI+Q29sbGF0ZSBtb2RlPC9oMj4KCgk8cD5JZiB5b3Ugd2Fu dCB0byBnZXQgPGVtPnJlYWxseTwvZW0+IGZ1bmt5IHlvdSBjYW4gcHV0IHRoZSBwbHVnaW4g aW50byBhIDJuZCBtb2RlIGNhbGxlZCAmIzgyMjA7Y29sbGF0aW9uIG1vZGUmIzgyMjE7LiBU aGlzIG1lYW5zIHlvdXIgY2hvc2VuIGZvcm0gaXMgPHN0cm9uZz5ub3Q8L3N0cm9uZz4gZXhl Y3V0ZWQgZm9yIGV2ZXJ5IGltYWdlOyBpdCBpcyBvbmx5IHVzZWQgb25jZSBhdCB0aGUgdmVy eSBlbmQgb2YgdGhlIGxpc3QsIGFmdGVyIGFsbCB0aGUgaW1hZ2VzIGhhdmUgYmVlbiBpbnRl cm5hbGx5ICYjODIyMDtjb2xsZWN0ZWQmIzgyMjE7LiBJbiBlZmZlY3QsIHRoZSBwbHVnaW4g YnVpbGRzIHVwIGEgZ2lhbnQgYXJyYXkgb2YgYWxsIG1hdGNoaW5nIGltYWdlcyByZWFkeSBm b3IgeW91IHRvIG91dHB1dCB0aGVtIGFsbCBpbiBvbmUgZ28uIFRoaXMgaXMgdmVyeSBoYW5k eSBmb3IgZG9pbmcgc2xpZGVzaG93cyBhbmQgaXMgYmVzdCBleHBsYWluZWQgYnkgZXhhbXBs ZTo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDsxJnF1b3Q7PC9jb2RlPjwvcD4KCgk8 cD5zd2l0Y2hlcyBjb2xsYXRpb24gbW9kZSBvbi4gSWYgdGhlIHBsdWdpbiBtYXRjaGVkIDQg aW1hZ2VzIGFuZCB5b3Ugd2VyZSB0byB1c2UgdGhlIHJlcGxhY2VtZW50IHRhZyA8Y29kZT57 bmFtZX08L2NvZGU+IGluIHlvdXIgZm9ybSBsaWtlIHRoaXM6PC9wPgoKPHByZSBjbGFzcz0i YmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczoge25hbWV9 CjwvY29kZT48L3ByZT4KCgk8cD55b3UgbWlnaHQgZ2V0IHRoaXM6PC9wPgoKPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+VGhlIG1hdGNoaW5nIGltYWdlczogaGVy b24uanBnLHBlbmd1aW4uanBnLGVtdS5qcGcscHVmZmluLmpwZwo8L2NvZGU+PC9wcmU+CgoJ PHA+U29tZXRpbWVzIGl0JiM4MjE3O3MgdXNlZnVsIHRvIGJlIGFibGUgdG8gcHV0IHF1b3Rl cyBhcm91bmQgZWFjaCBpdGVtIHNvIHlvdSBjYW4gdGVsbCBjb2xsYXRlIG1vZGUgdG8gZG8g dGhhdCBpbnN0ZWFkOjwvcD4KCgk8cD48Y29kZT5jb2xsYXRlPSZxdW90O3F1b3RlOntuYW1l fSZxdW90OzwvY29kZT48L3A+CgoJPHA+WW91IHdvdWxkIHRoZW4gZ2V0OjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPlRoZSBtYXRjaGluZyBpbWFnZXM6 ICZxdW90O2hlcm9uLmpwZyZxdW90OywmcXVvdDtwZW5ndWluLmpwZyZxdW90OywmcXVvdDtl bXUuanBnJnF1b3Q7LCZxdW90O3B1ZmZpbi5qcGcmcXVvdDsKPC9jb2RlPjwvcHJlPgoKCTxw PlRoZSBkZWxpbWl0ZXIgKGEgY29tbWEgaW4gdGhpcyBjYXNlKSBjYW4gYmUgb3ZlcnJpZGRl biB3aXRoIHRoZSA8Y29kZT5kZWxpbTwvY29kZT4gYXR0cmlidXRlLiBZb3UgbWF5IHVzZSA8 Y29kZT5zZ2xxdW90ZTwvY29kZT4gdG8gd3JhcCBzaW5nbGUgcXVvdGVzIHJvdW5kIHRoZSBp dGVtcywgb3IgJiM4MjIwO2RibHF1b3RlJiM4MjIxOyBhcyBhIHN5bm9ueW0gZm9yICYjODIy MDtxdW90ZSYjODIyMTsgaWYgeW91IHByZWZlci4gWW91IGNhbiBxdW90ZSBtb3JlIHRoYW4g b25lIHRoaW5nIGF0IG9uY2UgYnkgc3BlY2lmeWluZyB0aGUgaXRlbXMgYXMgYSBkZWxpbWl0 ZWQgbGlzdDo8L3A+CgoJPHA+PGNvZGU+Y29sbGF0ZT0mcXVvdDtxdW90ZTp7bmFtZX06e2Fs dH06e2ltZ2lufSZxdW90OzwvY29kZT48L3A+CgoJPHA+WWVzLCB5b3UgY2FuIHVzZSBjb21i b3MhIFRoZSBkZWxpbWl0ZXIgdXNlZCBiZXR3ZWVuIGl0ZW1zIGNhbiBiZSBvdmVycmlkZW4g d2l0aCB0aGUgPGNvZGU+Y29sbGF0ZWRlbGltPC9jb2RlPiBhdHRyaWJ1dGUuPC9wPgoKCTxw PlRoZSBzZWNvbmQgc3BlY2lhbCBmZWF0dXJlIG9mIGNvbGxhdGlvbiBtb2RlIGlzIHRoYXQg eW91IGRvIG5vdCBoYXZlIHRvIGFsd2F5cyBvdXRwdXQgdGhlIGVudGlyZSBsaXN0LiBZb3Ug Y2FuIGdyYWIgaW5kaXZpZHVhbCBlbnRpdGllcyBmcm9tIHdpdGhpbiB0aGUgaW50ZXJuYWwg YXJyYXkgYnkgdXNpbmcgdGhlICYjODIxNjsjJiM4MjE3OyBub3RhdGlvbiB0aHVzOjwvcD4K CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPntuYW1lfSBtaWdodCBv dXRwdXQgJnF1b3Q7aGVyb24uanBnJnF1b3Q7LCZxdW90O3Blbmd1aW4uanBnJnF1b3Q7LCZx dW90O2VtdS5qcGcmcXVvdDssJnF1b3Q7cHVmZmluLmpwZyZxdW90OyAoYXMgYmVmb3JlKQp7 bmFtZSMxfSB3b3VsZCBvbmx5IG91dHB1dCBoZXJvbi5qcGcKe25hbWUjM30gd291bGQgb25s eSBvdXRwdXQgZW11LmpwZwo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHdoZW4gcHVs bGluZyBvdXQgaW5kaXZpZHVhbCBlbnRyaWVzIHRoZXkgPHN0cm9uZz5kbyBub3Q8L3N0cm9u Zz4gZ2V0IHF1b3RlcyBhZGRlZCB0byB0aGVtLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91 IHVzZWQgPGNvZGU+cXVvdGU8L2NvZGU+IG9yIG5vdC4gVGhpcyBpcyBiZWNhdXNlIGl0IGlz IGEgc2luZ2xlIGl0ZW0gc28geW91IGNhbiBlYXNpbHkgcHV0IHRoZSBxdW90ZXMgaW4gdGhl IGZvcm0gaXRzZWxmICh2aXo6IDxjb2RlPiZxdW90O3tuYW1lIzJ9JnF1b3Q7PC9jb2RlPik8 L3A+CgoJPHA+TWVzc2luZyBhcm91bmQgd2l0aCBwdWxsaW5nIG91dCBpbmRpdmlkdWFsIGl0 ZW1zIGFuZCBsaXN0cyBjYW4geWllbGQgc29tZSB2ZXJ5IGludGVyZXN0aW5nIHJlc3VsdHMg YW5kIGFsbG93cyBzb21lIGNvbXBsZXRlbHkgd2Fja3kgZ2FsbGVyaWVzIHRvIGJlIGdlbmVy YXRlZC4gVHJ5IGNvbWJpbmluZyBzbWRfZ2FsbGVyeSB0YWdzIHdpdGggPGNvZGU+Jmx0O3R4 cDppZl9kaWZmZXJlbnQmZ3Q7PC9jb2RlPiBmb3IgYSByZWFsIG1pbmQgc2NyYW1ibGUgOi0p PC9wPgoKCTxoMiBpZD0iZXhhbXBsZXMiPkV4YW1wbGVzPC9oMj4KCgk8cD5UaGUgZXhhbXBs ZXMgYWxsIHVzZSB0aGUgY2xhc3NpYyB6b28gd2Vic2l0ZS4gTGV0JiM4MjE3O3MgZ2V0IHNv bWUgcGljdHVyZXMgb3V0IG9mIHRoZSBkYXRhYmFzZSYjODIzMDs8L3A+CgoJPGgzIGlkPSJl ZzEiPkV4YW1wbGUgMTogc2ltcGxlIC8gbGlnaHRib3hlZCBnYWxsZXJ5PC9oMz4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkg Y2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OyBzdWJsZXZlbD0mcXVvdDthbGwmcXVvdDsg Zm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGF0 IHB1bGxzIG91dCBhbGwgcGljdHVyZXMgZnJvbSB0aGUgYW5pbWFscyBjYXRlZ29yeSwgaW5j bHVkaW5nIGFsbCBzdWItY2F0ZWdvcmllcywgYW5kIHBhc3NlcyB0aGVtIHRvIHRoZSBmb3Jt IGNhbGxlZCAmIzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9yIHByb2Nlc3NpbmcuIFRoZSBmb3Jt IGNvdWxkIGJlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDtpbWcgY2xhc3M9JnF1b3Q7YW5pbWFnZSZxdW90OyBzcmM9JnF1b3Q7e3VybH0mcXVv dDsgYWx0PSZxdW90O3thbHR9JnF1b3Q7IC8mZ3Q7CiZsdDtkaXYgY2xhc3M9JnF1b3Q7YWNh cHRpb24mcXVvdDsmZ3Q7e3RpdGxlfSZsdDsvZGl2Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+ VGhhdCBtZWFucywgZm9yIGV2ZXJ5IG1hdGNoZWQgaW1hZ2UsIHN1YnN0aXR1dGUgaXRzIDxz cGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+LCBhbHQgYW5kIHRpdGxlIHRhZ3MgaW50byB0 aGUgcmVsZXZhbnQgcGxhY2VzLiBUaHVzIHlvdSBnZXQgYSBzZXJpZXMgb2YgaW1hZ2VzIG9u IHRoZSBwYWdlLCB3aGljaCB5b3UgY2FuIHN0eWxlIGFjY29yZGluZ2x5LjwvcD4KCgk8cD5G b3IgYSBtb3JlIGZhbmN5IG91dHB1dCB1c2luZywgc2F5LCBzbGltYm94LCB5b3UgY291bGQg bG9hZCB0aGUgcmVsZXZhbnQgbGlicmFyaWVzIGFuZCBzdHlsZXMgaW4gdGhlIDxjb2RlPiZs dDtoZWFkJmd0OzwvY29kZT4gb2YgeW91ciBwYWdlOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFz Y3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9tb290b29scy5qcyZxdW90OyZndDsmbHQ7L3Nj cmlwdCZndDsKJmx0O3NjcmlwdCB0eXBlPSZxdW90O3RleHQvamF2YXNjcmlwdCZxdW90OyBz cmM9JnF1b3Q7L2pzL3NsaW1ib3guanMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDts aW5rIHJlbD0mcXVvdDtzdHlsZXNoZWV0JnF1b3Q7IHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVv dDsgaHJlZj0mcXVvdDsvY3NzL3NsaW1ib3guY3NzJnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5UaGVuIHlvdXIgJiM4MjE2O2dhbGxlcnkmIzgyMTc7IGZvcm0gY291bGQgYmU6 PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2EgcmVs PSZxdW90O2xpZ2h0Ym94LXtjYXRlZ29yeX0mcXVvdDsgaHJlZj0mcXVvdDt7dXJsfSZxdW90 OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBvZiB7Y2FwdGlvbn0mcXVvdDsmZ3Q7CiAm bHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7CiZsdDsvYSZndDsK PC9jb2RlPjwvcHJlPgoKCTxwPlZvaWxhISBVc2luZyB0aGUgc2FtZSBzbWRfZ2FsbGVyeSB0 YWcgeW91IGhhdmUgY2hhbmdlZCB0aGUgd2F5IHRoZSBnYWxsZXJ5IHJlbmRlcnMgZnJvbSBh IHNpbXBsZSBsaXN0IHRvIGEgZnVsbC1mZWF0dXJlZCBzbGltYm94LiBXaXRoIHZpcnR1YWxs eSB0aGUgc2FtZSBmb3JtIHlvdSBjYW4gc3dpdGNoIHRoZSBvdXRwdXQgdG8gdGhpY2tib3gs IGxpZ2h0Ym94LCBsaXRlYm94LCBtb29uYm94IG9yIHdoYXRldmVyLXlvdS1saWtlLWJveCBk ZXBlbmRpbmcgb24gd2hpY2ggbGlicmFyaWVzIHlvdSBsb2FkLiBGb2xsb3cgdGhlIGluc3Ry dWN0aW9ucyBmb3IgeW91ciBmYXZvdXJpdGUgZWZmZWN0IGFuZCBwbHVnIGl0IGludG8gc21k X2dhbGxlcnkuPC9wPgoKCTxoMyBpZD0iZWcyIj5FeGFtcGxlIDI6IGxhdW5jaCBmcm9tIG9u ZSBpbWFnZTwvaDM+CgoJPHA+QSBjb21tb24gcmVxdWVzdCBpcyB0byBiZSBhYmxlIHRvICYj ODIyMDtsYXVuY2gmIzgyMjE7IGEgc2xpbWJveCBnYWxsZXJ5IGZyb20gYSBzaW5nbGUgaW1h Z2Ugb3IgdGV4dCBsaW5rLiBVc2luZyBhIHNpbmdsZSBpbWFnZTo8L3A+Cgo8cHJlIGNsYXNz PSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVn b3J5PSZxdW90O2FuaW1hbHMmcXVvdDsKICAgICBzdWJsZXZlbD0mcXVvdDthbGwmcXVvdDsK ICAgICBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsgdGh1bWJsaW1pdD0mcXVvdDsxJnF1b3Q7 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgZm9ybSB3aWxsIHVzZSB0aGUgc3BlY2lh bCA8Y29kZT57b2JqZWN0fTwvY29kZT4gcmVwbGFjZW1lbnQgdGFnIHNvIGl0IG9ubHkgZGlz cGxheXMgdGhlIHRodW1ibmFpbCBpZiB0aGUgdmFsdWUgb2YgdGh1bWJsaW1pdCBoYXMgPHN0 cm9uZz5ub3Q8L3N0cm9uZz4gYmVlbiByZWFjaGVkOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDthIHJlbD0mcXVvdDtsaWdodGJveC1zbWQmcXVv dDsgaHJlZj0mcXVvdDt7dXJsfSZxdW90OwogICAgIHRpdGxlPSZxdW90O0EgcGljdHVyZSBv ZiB7dGl0bGV9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5DaGFuZ2UgdGhlIHN0YXJ0IGltYWdlIGJ5IHNwZWNpZnlpbmcgPGNvZGU+dGh1bWJv ZmZzZXQ8L2NvZGU+ICYjODIxMjsgbm90ZSB0aGlzIHdpbGwgYWxzbyBzdGFydCB0aGUgbGln aHRib3ggZWZmZWN0IGZyb20gdGhlIGltYWdlIHlvdSBjaG9vc2UuIElmIHlvdSB3YW50IHRv IHN0YXJ0IG9uIGEgc3BlY2lmaWMgaW1hZ2UgaW4gcG9zaXRpb24gMSwgdXNlIHRoZSA8Y29k ZT5pZDwvY29kZT4gYXR0cmlidXRlIHRvIGJyaW5nIGl0IHRvIHRoZSB0b3Agb2YgdGhlIGxp c3QsIG9yIGNoYW5nZSB0aGUgc29ydCBvcmRlci48L3A+CgoJPHA+SWYgeW91IHdhbnRlZCB0 byBsYXVuY2ggdGhlIGdhbGxlcnkgZnJvbSBhIHRleHQgbGluaywgYWRkIHNvbWV0aGluZyBs aWtlIDxjb2RlPnRleHQ9JnF1b3Q7Q2xpY2sgdG8gc3RhcnQgbGlnaHRib3gmcXVvdDs8L2Nv ZGU+LjwvcD4KCgk8aDMgaWQ9ImVnMyI+RXhhbXBsZSAzOiBwb3B1cCBnYWxsZXJ5PC9oMz4K Cgk8cD5UbyBhY2hpZXZlIGFuIGVmZmVjdCBzaW1pbGFyIHRvIHJzc190aHVtYnBvcCwgYWRk IGFuIGltYWdlIGFuZCBjYXB0aW9uIHBsYWNlaG9sZGVyIG91dHNpZGUgdGhlIGNhbGwgdG8g c21kX2dhbGxlcnksIHRoZW4gaW5jbHVkZSB5b3VyIHNtZF9nYWxsZXJ5IHRhZyBhcyB1c3Vh bC4gVGhpcyB0aW1lIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gYWxsIHRoZSBwaWN0dXJl cyBmcm9tIHRoZSBjYXRlZ29yaWVzIHVwIHRvIHR3byBsZXZlbHMgYmVsb3cgYm90aCAmIzgy MjA7YW5pbWFscyYjODIyMTssIHBsdXMgd2hpY2hldmVyIGNhdGVnb3JpZXMgYXJlIGxpc3Rl ZCBpbiA8Y29kZT5teV9jdXN0b21fZmllbGQ8L2NvZGU+IGFuZCB0aGUgaW1hZ2VzIHdpdGgg SURzIDI1LCAzOCwgMzksIDQwIGFuZCA0Mjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0m cXVvdDsvaW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVvdDtm dWxsY2FwdGlvbiZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkg c3VibGV2ZWw9JnF1b3Q7MiZxdW90OwogICAgIGNhdGVnb3J5PSZxdW90O2FuaW1hbHMsID9t eV9jdXN0b21fZmllbGQmcXVvdDsKICAgICBpZD0mcXVvdDsyNSwgNDIsIDM4LTQwJnF1b3Q7 IGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhl IGdhbGxlcnkgZm9ybSBsb29rcyBzY2FyeSBidXQgaXMgb25seSBhIHRodW1ibmFpbCBpbWFn ZSBzdXJyb3VuZGVkIGJ5IGEgc2ltcGxlIGFuY2hvciB0YWcgd2l0aCB0d28gYWN0aW9ucyBh c3NpZ25lZCB0byBpdDogYSBtb3VzZW92ZXIgdG8gY29weSB0aGUgcGljdHVyZSBhbmQgY2Fw dGlvbiBpbnRvIHRoZSBwbGFjZWhvbGRlcjsgYW5kIGEgbW91c2VvdXQgdG8gcmVtb3ZlIHRo ZW06PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2Eg aHJlZj0mcXVvdDt7dXJsfSZxdW90OyB0aXRsZT0mcXVvdDt7dGl0bGV9JnF1b3Q7CiAgICAg b25tb3VzZW92ZXI9JnF1b3Q7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJiMzOTtmdWxsc2l6 ZSYjMzk7KS5zcmMgPSB0aGlzLmhyZWY7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo JiMzOTtmdWxsY2FwdGlvbiYjMzk7KS5pbm5lckhUTUwgPSB0aGlzLnRpdGxlOyByZXR1cm4g ZmFsc2U7JnF1b3Q7CiAgICAgb25tb3VzZW91dD0mcXVvdDtkb2N1bWVudC5nZXRFbGVtZW50 QnlJZCgmIzM5O2Z1bGxzaXplJiMzOTspLnNyYyA9ICYjMzk7L2ltYWdlcy8xNy5qcGcmIzM5 OzsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmIzM5O2Z1bGxjYXB0aW9uJiMzOTsp LmlubmVySFRNTCA9ICYjMzk7JiMzOTs7IHJldHVybiBmYWxzZTsmcXVvdDsmZ3Q7CiAgJmx0 O2ltZyBzcmM9JnF1b3Q7e3RodW1idXJsfSZxdW90OyBhbHQ9JnF1b3Q7e2FsdH0mcXVvdDsg LyZndDsKJmx0Oy9hJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGVyZSBhcmUgbXVj aCBuZWF0ZXIgd2F5cyBvZiBkb2luZyB0aGlzIChlLmcuIHdpdGggalF1ZXJ5KSBhbmQgaXQm IzgyMTc7cyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIHRoaXMgZm9ybSBpbiBhIGxpdmUgc2l0 ZSwgYnV0IGl0IGdpdmVzIGEgZmxhdm91ciBvZiB3aGF0IGlzIHBvc3NpYmxlLjwvcD4KCgk8 aDMgaWQ9ImVnNCI+RXhhbXBsZSA0OiBzbGlkZXNob3c8L2gzPgoKCTxwPlRoaXMgb25lIHVz ZXMgY29sbGF0ZSBtb2RlIGJ1dCBpcyBub3QgbXVjaCBtb3JlIGRpZmZpY3VsdCB0byB1bmRl cnN0YW5kLiBJbiB5b3VyIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gc2VjdGlvbjo8L3A+ Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7c2NyaXB0IHR5 cGU9JnF1b3Q7dGV4dC9qYXZhc2NyaXB0JnF1b3Q7IHNyYz0mcXVvdDsvanMvbW9vdG9vbHMu anMmcXVvdDsmZ3Q7Jmx0Oy9zY3JpcHQmZ3Q7CiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0 L2phdmFzY3JpcHQmcXVvdDsgc3JjPSZxdW90Oy9qcy9zbGlkZXNob3cuanMmcXVvdDsmZ3Q7 Jmx0Oy9zY3JpcHQmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgdGFnOjwvcD4KCjxwcmUg Y2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkK ICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OyBmb3JtPSZxdW90O2dhbGxlcnkm cXVvdDsKICBjb21ibz0mcXVvdDtpbWdsaXN0OntpZH17ZXh0fSZxdW90OwogIGNvbGxhdGU9 JnF1b3Q7cXVvdGU6e2ltZ2xpc3R9OnthbHR9JnF1b3Q7IC8mZ3Q7CjwvY29kZT48L3ByZT4K Cgk8cD5UaGF0IHB1bGxzIGFsbCBwaWN0dXJlcyBmcm9tIHRoZSBiaXJkcyBhbmQgZmlzaCBj YXRlZ29yaWVzLiBBbHRob3VnaCB0ZWNobmljYWxseSB1bm5lY2Vzc2FyeSwgYSBjb21ibyBo YXMgYmVlbiBkZWZpbmVkIHRvIHNob3cgaG93IGl0IGNhbiBiZSB1c2VkLiBUaGlzIGNvbWJv IGlzIGNhbGxlZCA8Y29kZT5pbWdsaXN0PC9jb2RlPiBhbmQgaXMgZGVmaW5lZCBhcyB0aGUg aW1hZ2UmIzgyMTc7cyBJRCBudW1iZXIgcGx1cyBpdHMgZXh0ZW5zaW9uLiBXZSB1c2UgdGhp cyBpbiB0aGUgY29sbGF0ZSBhdHRyaWJ1dGUgYW5kIHRlbGwgaXQgdG8gcHV0IGRvdWJsZSBx dW90ZXMgcm91bmQgZXZlcnkgaXRlbSBpbiAmIzgyMTY7aW1nbGlzdCYjODIxNzsgYW5kICYj ODIxNjthbHQmIzgyMTc7LiBUaGVuIHdlIGNhbiBwdXQgdGhlc2UgdmFsdWVzIGludG8gdGhl IG5lY2Vzc2FyeSBqYXZhc2NyaXB0IGluIHRoZSA8Y29kZT5nYWxsZXJ5PC9jb2RlPiBmb3Jt IHRvIGdlbmVyYXRlIHRoZSBzbGlkZXNob3c6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O2RpdiBjbGFzcz0mcXVvdDtzbGlkZXNob3cmcXVvdDsg aWQ9JnF1b3Q7c2xpZGVzaG93MSZxdW90OyZndDsKICZsdDtpbWcgc3JjPSZxdW90OyZsdDt0 eHA6c2l0ZV91cmwgLyZndDtpbWFnZXMve2lkIzF9LmpwZyZxdW90OwogICAgIGFsdD0mcXVv dDt7YWx0IzF9JnF1b3Q7IHdpZHRoPSZxdW90O3t3aWR0aCMxfSZxdW90OyBoZWlnaHQ9JnF1 b3Q7e2hlaWdodCMxfSZxdW90OyAvJmd0OwombHQ7L2RpdiZndDsKPC9jb2RlPgo8Y29kZSBj bGFzcz0iYmxvY2siPiZsdDtzY3JpcHQgdHlwZT0mcXVvdDt0ZXh0L2phdmFzY3JpcHQmcXVv dDsmZ3Q7Cm15U2hvdzEgPSBuZXcgU2xpZGVzaG93KCZxdW90O3NsaWRlc2hvdzEmcXVvdDss CiAgeyBodTogJnF1b3Q7Jmx0O3R4cDpzaXRlX3VybCAvJmd0O2ltYWdlcy8mcXVvdDssCiAg ICBpbWFnZXM6IFt7aW1nbGlzdH1dLAogICAgY2FwdGlvbnM6IFt7YWx0fV0sCiAgICBjbGFz c2VzOiBbJnF1b3Q7cHJldiZxdW90OywmcXVvdDtuZXh0JnF1b3Q7LCZxdW90O2FjdGl2ZSZx dW90O10sCiAgICB0eXBlOiAmcXVvdDtmYWRlJnF1b3Q7CiAgfSk7CiZsdDsvc2NyaXB0Jmd0 Owo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IHRoZSBpbml0aWFsIHBvcnRpb24gKGlu IHRoZSBkaXYgYW5kIGltZyB0YWdzKSB1c2VzIHRoZSAmIzgyMTY7IyYjODIxNzsgbm90YXRp b24gYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdG8gZGlzcGxheSBvbmUgaW1hZ2UgdG8gJiM4MjIw O3N0YXJ0JiM4MjIxOyB0aGUgc2xpZGVzaG93LiBJbiB0aGlzIGNhc2Ugd2UmIzgyMTc7cmUg dXNpbmcgdGhlIGZpcnN0IGltYWdlIGluIHRoZSBsaXN0LCBidXQgeW91IGNhbiBjaGFuZ2Ug dGhlICMxIGZvciAjNDIgaWYgeW91IHdhbnRlZCB0byBzaG93IHRoZSBmb3J0eS1zZWNvbmQg aW1hZ2UgaW5zdGVhZCEgVGhlIHBhcnQgaW4gdGhlIHNjcmlwdCB0YWcgdXNlcyB0aGUgZnVs bCwgcXVvdGVkIGxpc3RzIGJlY2F1c2UgdGhhdCYjODIxNztzIHRoZSBmb3JtYXQgdGhlIGph dmFzY3JpcHQgcmVxdWlyZXMuPC9wPgoKCTxoMyBpZD0iZWc1Ij5FeGFtcGxlIDU6IHBhZ2lu YXRpb248L2gzPgoKCTxwPlRvIGFkZCBwYWdpbmcgdG8gYSBnYWxsZXJ5IHlvdSB1c2UgdGhl IDxjb2RlPmxpbWl0PC9jb2RlPiBhdHRyaWJ1dGUgdG8gc2hvdyBhIG51bWJlciBvZiB0aHVt YnMgcGVyIHBhZ2UuIEZvciBhIHBhZ2VkIHRodW1icG9wIGdhbGxlcnkgdGhhdCBzaG93cyBm aXZlIHRodW1icyBwZXIgcGFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xh c3M9ImJsb2NrIj4mbHQ7aW1nIGlkPSZxdW90O2Z1bGxzaXplJnF1b3Q7IHNyYz0mcXVvdDsv aW1hZ2VzL2VtcHR5LmpwZyZxdW90OyAvJmd0OwombHQ7c3BhbiBpZD0mcXVvdDtmdWxsY2Fw dGlvbiZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7CiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdv cnk9JnF1b3Q7YW5pbWFscyZxdW90OwogIGZvcm09JnF1b3Q7Z2FsbGVyeSZxdW90OyBwYWdl Zm9ybT0mcXVvdDtnYWxsZXJ5X25hdiZxdW90OwogIGxpbWl0PSZxdW90OzUmcXVvdDsgLyZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSAmIzgyMTY7Z2FsbGVyeSYjODIxNzsgZm9ybSBp cyBpZGVudGljYWwgdG8gdGhlIG9uZSBpbiA8YSBocmVmPSIjZWc0Ij5leGFtcGxlIDQ8L2E+ LCB3aGlsZSB5b3VyIGdhbGxlcnlfbmF2IGZvcm0gbWlnaHQgbG9vayBsaWtlIHRoaXM6PC9w PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O2RpdiBjbGFz cz0mcXVvdDt0b3RhbCZxdW90OyZndDsjIG9mIHBpY3M6IHt0b3RhbGltYWdlc30mbHQ7L2Rp diZndDsKICAgICB7bmF2Zmlyc3R9IHtuYXZwcmV2fQogICAgIHtuYXZlYXJsaWVyfSB7bmF2 dGhpc30ge25hdmxhdGVyfQogICAgIHtuYXZuZXh0fSB7bmF2bGFzdH0KPC9jb2RlPjwvcHJl PgoKCTxwPlRoYXQgbWlnaHQgcmVuZGVyIHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoaXMgYmVs b3cgdGhlIHRodW1iczo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj4jIG9mIHBpY3M6IDM4CiAgICAgRmlyc3QgJmx0OyAxIDIgMyA0IDUgNiA3IDggJmd0 OyBMYXN0CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2OiBvbmNoYW5n ZTwvaDM+CgoJPHA+SWYgeW91IHdhbnQgdG8gc2ltdWxhdGUgbXVsdGlwbGUgZ2FsbGVyaWVz IGZyb20gb25lIHNtZF9nYWxsZXJ5IHRhZyB5b3UgY2FuIHVzZSA8Y29kZT5vbmNoYW5nZTwv Y29kZT4gdG8gJiM4MjIwO3dhdGNoJiM4MjIxOyBmb3Igd2hlbiBjZXJ0YWluIGF0dHJpYnV0 ZXMgb2YgaW1hZ2VzIGNoYW5nZSBhbmQgaW5zZXJ0IHNwZWNpYWwgdGFncyA8ZW0+b25seSB3 aGVuIHNvbWV0aGluZyBjaGFuZ2VzPC9lbT4uIEluIHRoaXMgcmVnYXJkIGl0IGFjdHMgbGlr ZSBhIHNvdXBlZC11cCB2ZXJzaW9uIG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ JiM4MjE3O3MgYnVpbHQtaW4gPGNvZGU+Jmx0O3R4cDppZl9kaWZmZXJlbnQmZ3Q7PC9jb2Rl PiB0YWcuPC9wPgoKCTxwPllvdSBjYW4gd2F0Y2ggdGhlIHVzdWFsIHRoaW5ncyBsaWtlIDxj b2RlPmNhdGVnb3J5PC9jb2RlPiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+d2lkdGg8 L2NvZGU+LCA8Y29kZT5oZWlnaHQ8L2NvZGU+LCA8Y29kZT5leHQ8L2NvZGU+ZW5zaW9uIGFu ZCBzbyBvbjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7dHhwOnNtZF9nYWxsZXJ5CiAgICAgY2F0ZWdvcnk9JnF1b3Q7YmlyZHMsIGZpc2gmcXVv dDsgZm9ybT0mcXVvdDtnYWxsZXJ5JnF1b3Q7CiAgICAgb25jaGFuZ2U9JnF1b3Q7Y2F0ZWdv cnlfdGl0bGUmcXVvdDsKICAgICBvbmNoYW5nZXdyYXB0YWc9JnF1b3Q7aDMmcXVvdDsgLyZn dDsKPC9jb2RlPjwvcHJlPgoKCTxwPlNpbmNlIHRoZSBwbHVnaW4gbm9ybWFsbHkgc29ydHMg YnkgY2F0ZWdvcnksIHRoaXMgd2lsbCBoYXZlIHRoZSBlZmZlY3Qgb2YgYWRkaW5nIG9uZSBy ZXBsYWNlbWVudCB0YWcgPGNvZGU+e29uY2hhbmdlOmNhdGVnb3J5X3RpdGxlfTwvY29kZT4g YXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSB0aHVtYiBsaXN0IGFuZCBhbHNvIHdoZW4g dGhlIGNhdGVnb3J5IHN3aXRjaGVzIGZyb20gJiM4MjE2O2JpcmRzJiM4MjE3OyB0byAmIzgy MTY7ZmlzaCYjODIxNzsuIFRodXMgeW91ciBnYWxsZXJ5IGZvcm0gY291bGQgYmU6PC9wPgoK PHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+e29uY2hhbmdlOmNhdGVn b3J5X3RpdGxlfQombHQ7YSBocmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdo dGJveC17Y2F0ZWdvcnl9JnF1b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7CjwvY29kZT48 L3ByZT4KCgk8cD5UaGF0IHdvdWxkIG1ha2UgdHdvIGxpZ2h0Ym94YWJsZSBzZXRzIG9mIHRo dW1ibmFpbHMgd2l0aCBhIGhlYWRpbmcgMyBhYm92ZSBlYWNoIGdyb3VwIGNvbnRhaW5pbmcg dGhlIGNhdGVnb3J5IHRpdGxlLjwvcD4KCgk8cD5Ob3RlIHRoYXQgaWYgeW91IGFkZCA8Y29k ZT50aHVtYmxpbWl0PSZxdW90OzEmcXVvdDs8L2NvZGU+IHRvIHRoZSBzbWRfZ2FsbGVyeSB0 YWcgeW91IGNhbiBzaG93IGp1c3Qgb25lIHRodW1ibmFpbCBpbiBlYWNoIGdyb3VwLCB3aXRo IGhlYWRpbmdzIGFib3ZlIGVhY2ggdGh1bWIuIFZpc2l0b3JzIGNsaWNraW5nIHRoZSB0aHVt YiB3aWxsIGxhdW5jaCB0aGUgbGlnaHRib3ggYW5kIGJlIGFibGUgdG8gYnJvd3NlIHRoZSBy ZWxldmFudCBjYXRlZ29yeS4gSWYgeW91IHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBj YW4gb25seSBicm93c2Ugc2l4IGltYWdlcyBpbiBlYWNoIGNhdGVnb3J5IHNldCwgYWRkIDxj b2RlPmdyb3VwbGltaXQ9JnF1b3Q7NiZxdW90OzwvY29kZT4uPC9wPgoKCTxwPkFuIGV4dHJh IHBhaXIgb2YgcmVwbGFjZW1lbnQgdGFncyBhcmUgYXZhaWxhYmxlIGlmIHlvdSB3aXNoIHRv IHdyYXAgdGhlIG9iamVjdHMgdGhlbXNlbHZlcyB0byBncm91cCB0aGVtLiBVc2UgdGhlIDxj b2RlPmdyb3VwdGFnPC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXBjbGFzczwvY29kZT4gYXR0cmli dXRlcyB0byBzZXQgaXQgdXAsIHRoZW4gdHdvIG5ldyByZXBsYWNlbWVudCB0YWdzIGNhbGxl ZCA8Y29kZT5ncm91cHRhZ3N0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+Z3JvdXB0YWdlbmQ8L2Nv ZGU+IGJlY29tZSBhdmFpbGFibGUuIFRoZXkgYXJlIGNvbmRpdGlvbmFsIGFuZCBhcmUgb25s eSBwb3B1bGF0ZWQgd2hlbiB0aGUgYXR0cmlidXRlcyB5b3UgYXJlIHdhdGNoaW5nL3NvcnRp bmcgYnkgY2hhbmdlLiBVc2UgaXQgbGlrZSB0aGlzOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2Nr Ij48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgaWQ9JnF1b3Q7P2Fy dGljbGVfaW1hZ2UmcXVvdDsKICAgICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90 OyBmb3JtPSZxdW90O2dhbGxlcnkmcXVvdDsKICAgICBvbmNoYW5nZT0mcXVvdDtjYXRlZ29y eV90aXRsZSZxdW90OwogICAgIG9uY2hhbmdld3JhcHRhZz0mcXVvdDtoMyZxdW90OwogICAg IGdyb3VwdGFnPSZxdW90O2RpdiZxdW90OyBncm91cGNsYXNzPSZxdW90O2JveCZxdW90OyAv Jmd0Owo8L2NvZGU+PC9wcmU+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJs b2NrIj57b25jaGFuZ2U6Y2F0ZWdvcnlfdGl0bGV9Cntncm91cHRhZ3N0YXJ0fQombHQ7YSBo cmVmPSZxdW90O3t1cmx9JnF1b3Q7IHJlbD0mcXVvdDtsaWdodGJveC17Y2F0ZWdvcnl9JnF1 b3Q7Jmd0Owp7b2JqZWN0fQombHQ7L2EmZ3Q7Cntncm91cHRhZ2VuZH0KPC9jb2RlPjwvcHJl PgoKCTxwPk5vdGUgdGhhdCB5b3UgY2FuIG1vdmUgdGhlIDxjb2RlPmdyb3VwdGFnc3RhcnQ8 L2NvZGU+IHRvIHN1cnJvdW5kIHRoZSA8Y29kZT5vbmNoYW5nZTwvY29kZT5kIHRpdGxlIGlm IHlvdSB3aXNoLjwvcD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3OiBzbWRfZXZlcnk8L2gz PgoKCTxwPllvdSBjYW4gYWxzbyB0cmlnZ2VyIGFuIG9uY2hhbmdlIGV2ZW50IGV2ZXJ5IG50 aCBpbWFnZTo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7dHhwOnNtZF9nYWxsZXJ5IGNhdGVnb3J5PSZxdW90O2Zyb250cGFnZSZxdW90OwogICAg IGxpbWl0PSZxdW90OzkmcXVvdDsgc29ydD0mcXVvdDtyYW5kb20mcXVvdDsKICAgICBvbmNo YW5nZT0mcXVvdDtzbWRfZXZlcnk6MyZxdW90OwogICAgIGdyb3VwdGFnPSZxdW90O3VsJnF1 b3Q7IGdyb3VwY2xhc3M9JnF1b3Q7c2xpZGVzaG93JnF1b3Q7Jmd0Owp7Z3JvdXB0YWdzdGFy dH0KICAgJmx0O2xpJmd0OwogICAgICAmbHQ7YSBocmVmPSZxdW90OyZsdDt0eHA6cGVybWxp bmsgaWQ9JnF1b3Q7e2FsdH0mcXVvdDsgLyZndDsmcXVvdDsmZ3Q7CiAgICAgICAgICZsdDtp bWcgc3JjPSZxdW90O3t0aHVtYnVybH0mcXVvdDsgYWx0PSZxdW90OyZxdW90OyAvJmd0Owog ICAgICAgICAmbHQ7c3BhbiZndDt7dGl0bGV9Jmx0Oy9zcGFuJmd0OwogICAgICAmbHQ7L2Em Z3Q7CiAgICZsdDsvbGkmZ3Q7Cntncm91cHRhZ2VuZH0KJmx0Oy90eHA6c21kX2dhbGxlcnkm Z3Q7CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnOCI+RXhhbXBsZSA4OiB1bmNhdGVnb3Jp emVkIGltYWdlczwvaDM+CgoJPHA+U29tZXRpbWVzIHlvdSBtaWdodCB3aXNoIHRvIGV4dHJh Y3QgaW1hZ2VzIHRoYXQgZG8gbm90IGhhdmUgYSBjYXRlZ29yeSBhc3NpZ25lZC4gWW91IG5l ZWQgdG8gdXNlIHRoZSBzcGVjaWFsIHZhbHVlIDxjb2RlPlNNRF9FTVBUWTwvY29kZT4gZm9y IHRoaXM6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0 O3R4cDpzbWRfZ2FsbGVyeSBjYXRlZ29yeT0mcXVvdDtTTURfRU1QVFksIHNob2VzJnF1b3Q7 IC8mZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Zb3UgY2FuIGFsc28gbmVnYXRlIHRoZSBsb2dp YyBzbyB5b3UgY2FuIGV4dHJhY3QgYWxsIGltYWdlcyB0aGF0IGhhdmUgc29tZSAoYW55KSBj YXRlZ29yeSBhc3NpZ25lZCB0byB0aGVtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7IVNN RF9FTVBUWSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPGgzIGlkPSJlZzkiPkV4YW1w bGUgOToge29iamVjdH0gYW5kIG9iamVjdGZvcm08L2gzPgoKCTxwPlRoZSBkZWZhdWx0IDxj b2RlPntvYmplY3R9PC9jb2RlPiBvdXRwdXRzIGEgc2ltcGxlIGh5cGVybGlua2VkIHRodW1i bmFpbC4gSWYgeW91IHdhbnQgc29tZXRoaW5nIGEgYml0IG1vcmUgZXhvdGljLCBsaWtlIGxh dW5jaGluZyBhIHNoYWRvd2JveCBlZmZlY3QgZnJvbSBhIHNpbmdsZSB0aHVtYm5haWwgdGhh dCBhbHNvIGhhcyB0aGUgY2FwdGlvbiBiZW5lYXRoIGl0LCB5b3UgbmVlZCB0byBjdXN0b21p c2UgdGhlIDxjb2RlPntvYmplY3R9PC9jb2RlPiB2aWEgdGhlIDxjb2RlPm9iamVjdGZvcm08 L2NvZGU+IGF0dHJpYnV0ZS4gUHV0IGEgbGlzdCBvZiBpbWFnZSBJRHMgaW4geW91ciBhcnRp Y2xlIGltYWdlIGZpZWxkIGFuZCB0aGVuOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29k ZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkgdGh1bWJsaW1pdD0mcXVvdDsx JnF1b3Q7CiAgICAgaWQ9JnF1b3Q7P2FydGljbGVfaW1hZ2UmcXVvdDsgd3JhcHRhZz0mcXVv dDtkaXYmcXVvdDsKICAgICBjbGFzcz0mcXVvdDt0aHVtYnMmcXVvdDsgb2JqZWN0Zm9ybT0m cXVvdDtteV9vYmomcXVvdDsKICAgICBjb21ibz0mcXVvdDthcnRpZDo/dGhpc2lkJnF1b3Q7 Jmd0OwogICZsdDthIHJlbD0mcXVvdDtzaGFkb3dib3hbe2FydGlkfV07CiAgICAgb3B0aW9u cz17Y291bnRlclR5cGU6JiMzOTtza2lwJiMzOTssCiAgICAgY29udGludW91czp0cnVlLAog ICAgIGFuaW1hdGU6ZmFsc2UsCiAgICAgYW5pbVNlcXVlbmNlOiYjMzk7c3luYyYjMzk7fSZx dW90OwogICAgIGhyZWY9JnF1b3Q7e3VybH0mcXVvdDsKICAgICB0aXRsZT0mcXVvdDt7YWx0 fSZxdW90OyZndDt7b2JqZWN0fSZsdDsvYSZndDsKJmx0Oy90eHA6c21kX2dhbGxlcnkmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8cD5BbmQgaW4gPGNvZGU+bXlfb2JqPC9jb2RlPiwgeW91IGNv dWxkIHB1dDo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4m bHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7Jmx0O2JyIC8mZ3Q7 e3RpdGxlfQo8L2NvZGU+PC9wcmU+CgoJPHA+Tm90aWNlIGhvdyB0aGUgcmVwbGFjZW1lbnQg dGFncyBzdGlsbCB3b3JrIGluIHRoZSA8Y29kZT5vYmplY3Rmb3JtPC9jb2RlPj8gVGhpcyBh bGxvd3MgeW91IHRvIGJ1aWxkIHVwIGEgY29tcGxldGUgbGF5b3V0IGZvciB0aGUgbGF1bmNo YWJsZSB0aHVtYm5haWwgYW5kIGhhdmUgaXQgb25seSByZW5kZXJlZCBvbmNlIG9uIHRoZSBw YWdlLiBUaGUgcmVzdCBvZiB0aGUgY29udGFpbmVyIGluIHRoaXMgZXhhbXBsZSByZW5kZXJz IGFsbCB0aGUgJiM4MjIwO2hpZGRlbiYjODIyMTsgaW1hZ2VzIGluIHRoZSBzaGFkb3dib3gg Z2FsbGVyeS48L3A+CgoJPGgzIGlkPSJlZzEwIj5FeGFtcGxlIDEwOiA8Y29kZT5jb3VudGZv cm08L2NvZGU+PC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX2dhbGxlcnkgY2F0ZWdvcnk9JnF1b3Q7YW5pbWFscyZxdW90OwogICAg IGNvdW50Zm9ybT0mcXVvdDsxOmdhbF9hOnNtZF9hYm92ZSwKICAgICAgIHt0b3RhbGltYWdl c306Z2FsX2MsCiAgICAgICBzbWRfZXZlcnk6Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYiZxdW90 OwogICAgIGNvdW50cG9zPSZxdW90O2JlbG93JnF1b3Q7Jmd0OwombHQ7dHhwOnRodW1ibmFp bCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7CiZsdDsvdHhwOnNtZF9nYWxsZXJ5Jmd0Owo8 L2NvZGU+PC9wcmU+CgoJPHA+Tm90ZSB0aGF0IDxjb2RlPmNvdW50cG9zPC9jb2RlPiBpcyBz ZXQgdG8gPGNvZGU+YmVsb3c8L2NvZGU+IGluIHRoaXMgZXhhbXBsZSBzbyBhbGwgb3V0cHV0 IGFwcGVhcnMgPGVtPmFmdGVyPC9lbT4gdGhlIGdpdmVuIGltYWdlcy4gSWYgeW91IG1hZGUg dGhlIGZvbGxvd2luZyB0aHJlZSBmb3JtcywgeW91ciB0YWcgd291bGQgc3BsaXQgdGhlIGdh bGxlcnkgaW50byAmIzgyMTY7cm93cyYjODIxNzsgb2YgMyBpbWFnZXM6PC9wPgoKCTxwPmdh bF9hOiA8Y29kZT4mbHQ7ZGl2IGNsYXNzPSZxdW90O25ld3JvdyZxdW90OyZndDs8L2NvZGU+ PGJyIC8+CmdhbF9iOiA8Y29kZT4mbHQ7L2RpdiZndDsmbHQ7ZGl2IGNsYXNzPSZxdW90O25l d3JvdyZxdW90OyZndDs8L2NvZGU+PGJyIC8+CmdhbF9jOiA8Y29kZT4mbHQ7L2RpdiZndDs8 L2NvZGU+PC9wPgoKCTxwPkJyZWFraW5nIHRoZSA8Y29kZT5jb3VudGZvcm08L2NvZGU+IGF0 dHJpYnV0ZSBkb3duIGludG8gaXRzIGNvbXBvbmVudHMsIHlvdSBjYW4gc2VlIHRoYXQ6PC9w PgoKCTx1bD4KCQk8bGk+PGNvZGU+MTpnYWxfYTpzbWRfYWJvdmU8L2NvZGU+IGFkZHMgdGhl ICYjODIxNjtuZXdyb3cmIzgyMTc7IGRpdiBhYm92ZSB0aGUgZmlyc3QgaW1hZ2U8L2xpPgoJ CTxsaT48Y29kZT57dG90YWxpbWFnZXN9OmdhbF9jPC9jb2RlPiBhZGRzIHRoZSBjbG9zaW5n IGRpdiBiZWxvdyB0aGUgbGFzdCBpbWFnZSBvbiB0aGlzIHBhZ2U8L2xpPgoJCTxsaT48Y29k ZT5zbWRfZXZlcnk6Mzohe3RvdGFsaW1hZ2VzfTpnYWxfYjwvY29kZT4gYWRkcyBhIGNsb3Np bmcgYW5kIHRoZW4gYW4gb3BlbmluZyBkaXYgYWZ0ZXIgZXZlcnkgM3JkIGltYWdlLCA8ZW0+ ZXhjZXB0PC9lbT4gb24gdGhlIGxhc3QgaW1hZ2UuIElmIHdlIGRpZG4mIzgyMTc7dCBwdXQg dGhlIGV4Y2VwdGlvbiBpbiwgYW5kIHlvdSBoYWQgMTIgdGh1bWJuYWlscyBpbiB5b3VyIGdh bGxlcnkgKHdoaWNoIGlzIGRpdmlzaWJsZSBieSAzISkgeW91IHdvdWxkIHNlZSB0aGUgY29u dGVudHMgb2YgZ2FsMiBhZnRlciB0aGUgbGFzdCBpbWFnZSBhcyB3ZWxsPC9saT4KCTwvdWw+ CgoJPGgzIGlkPSJlZzExIj5FeGFtcGxlIDExOiBVc2luZyBhbiBvbmNoYW5nZSBmb3JtPC9o Mz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21k X2dhbGxlcnkKICAgICBjYXRlZ29yeT0mcXVvdDtiaXJkcywgZmlzaCZxdW90OwogICAgIG9u Y2hhbmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlOm9jX2Zvcm0mcXVvdDsmZ3Q7CntvbmNoYW5n ZTpjYXRlZ29yeV90aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1 b3Q7bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0Owom bHQ7L3R4cDpzbWRfZ2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPmFuZCBpbiBmb3Jt IDxjb2RlPm9jX2Zvcm08L2NvZGU+OjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBj bGFzcz0iYmxvY2siPiZsdDtkaXYgaWQ9JnF1b3Q7e2NhdGVnb3J5fSZxdW90OwogICBjbGFz cz0mcXVvdDtjYXRlZ29yeSZxdW90OyZndDt7Y2F0ZWdvcnlfdGl0bGV9Jmx0Oy9kaXYmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9ImVnMTIiPkV4YW1wbGUgMTI6IFBvcnRmb2xpbyBs YW5kaW5nIHBhZ2U8L2gzPgoKCTxwPkhlcmUgd2Ugd2lsbCByZW5kZXIgYSBnYWxsZXJ5IGZv ciBlYWNoIGFydGlzdCBvbiBhIGdhbGxlcnkgc2l0ZS4gQXJyYW5nZSB5b3VyIGltYWdlIGNh dGVnb3JpZXMgc28gdGhleSBhcmUgY2hpbGRyZW4gb2YgYSBwYXJlbnQgaW1hZ2UgY2F0ZWdv cnk6PC9wPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+cG9ydGZv bGlvCiAgfC0tJmd0OyBtb25ldAogIHwtLSZndDsgdmFuX2dvZ2gKICB8LS0mZ3Q7IHR1cm5l cgogIHwtLSZndDsgZGFsaQogIHwtLSZndDsgLi4uCjwvY29kZT48L3ByZT4KCgk8cD5UaGVu IG9mIGNvdXJzZSwgdXBsb2FkIHlvdXIgaW1hZ2VzIGFuZCBhc3NpZ24gdGhlbSB0byB0aGUg YXBwcm9wcmlhdGUgYXJ0aXN0IGNhdGVnb3J5LjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2dhbGxlcnkKICAgICBjYXRlZ29yeT0m cXVvdDtwb3J0Zm9saW8mcXVvdDsgc3VibGV2ZWw9JnF1b3Q7MSZxdW90OwogICAgIG9uY2hh bmdlPSZxdW90O2NhdGVnb3J5X3RpdGxlJnF1b3Q7CiAgICAgb25jaGFuZ2V3cmFwdGFnPSZx dW90O2gzJnF1b3Q7IHRodW1ibGltaXQ9JnF1b3Q7MSZxdW90OwogICAgIGdyb3VwbGltaXQ9 JnF1b3Q7NSZxdW90OyBzb3J0PSZxdW90O2NhdGVnb3J5IGFzYywgZGF0ZSBkZXNjJnF1b3Q7 CiAgICAgb2JqZWN0Zm9ybT0mcXVvdDtmdWxsX2xpbmsmcXVvdDsmZ3Q7CntvbmNoYW5nZTpj YXRlZ29yeV90aXRsZX0KJmx0O2EgaHJlZj0mcXVvdDt7dXJsfSZxdW90OyByZWw9JnF1b3Q7 bGlnaHRib3gte2NhdGVnb3J5fSZxdW90OyZndDsKe29iamVjdH0KJmx0Oy9hJmd0OwombHQ7 L3R4cDpzbWRfZ2FsbGVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkluIEZvcm0gPGNvZGU+ ZnVsbF9saW5rPC9jb2RlPjo8L3A+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnRodW1ibmFpbCBpZD0mcXVvdDt7aWR9JnF1b3Q7IC8mZ3Q7CiZs dDtzcGFuJmd0OwogICBTZWUgJmx0O2EgaHJlZj0mcXVvdDsvYXJ0aXN0cy97Y2F0ZWdvcnl9 JnF1b3Q7Jmd0O2FsbCBpbWFnZXMgYnkge2NhdGVnb3J5X3RpdGxlfSZsdDsvYSZndDsuCiZs dDsvc3BhbiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoYXQgd2lsbCBncmFiIGVhY2ggYXJ0 aXN0IGNhdGVnb3J5IGFuZCBkaXNwbGF5IGEgdGh1bWJuYWlsIG9mIHRoZSBtb3N0IHJlY2Vu dCB3b3JrIHN1Ym1pdHRlZCBieSBlYWNoIGF1dGhvciB1bmRlciB0aGVpciBvd24gaGVhZGlu Zy4gV2hlbiB5b3UgY2xpY2sgdGhlIHRodW1ibmFpbCBpdCBsYXVuY2hlcyB0aGUgbGlnaHRi b3ggZ2FsbGVyeSBhbmQgYWxsb3dzIHlvdSB0byBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBmaXZl IG1vc3QgcmVjZW50IHBpY3R1cmVzIHN1Ym1pdHRlZC4gQmVuZWF0aCB0aGUgdGh1bWJuYWls IGlzIGEgbGluayB0byBhbiBpbmRpdmlkdWFsIGFydGljbGUgdGhhdCBjb3VsZCBzaG93IHRo YXQgYXJ0aXN0cyYjODIxNztzIGNvbXBsZXRlIHdvcmtzIGFuZCBhIGJpby48L3A+CgoJPGgy IGlkPSJjaGFuZ2Vsb2ciPkNoYW5nZWxvZzwvaDI+CgoJPHA+QWxsIGF2YWlsYWJsZSB2ZXJz aW9ucyBhbmQgY2hhbmdlcyBhcmUgbGlzdGVkIGhlcmUuPC9wPgoKCTxwPjxzdHJvbmc+QmV0 YTwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjE0IEZlYiAwOCB8IDAuMSB8IEluaXRpYWwg cmVsZWFzZSAmIzgyMTE7IEhhcHB5IFZhbGVudGluZXMgRGF5IDotKTwvbGk+CgkJPGxpPjE5 IEZlYiAwOCB8IDAuMiB8IEFkZGVkIHtnYWxsZXJ5aWR9ICh0aGFua3MgcmxvYWRlcnJvKSBh bmQgc29tZSBza2VsZXRvbiBkb2NzPC9saT4KCTwvdWw+CgoJPHA+PHN0cm9uZz5PZmZpY2lh bDwvc3Ryb25nPjwvcD4KCgk8dWw+CgkJPGxpPjExIE1hciAwOCB8IDAuMyB8IE9mZmljaWFs IHB1YmxpYyByZWxlYXNlLiBGaXhlZCBzaWxseSBlbXB0eSBmaWVsZCBidWc7IGFkZGVkIHtj b3VudGVyfSwge2luZGV4fSBhbmQgdGhlIHRvdGFscyAoYWxsIHRoYW5rcyBqYWtvYik8L2xp PgoJCTxsaT4xNSBNYXIgMDggfCAwLjMxIHwgRml4ZWQgYSBjb3VwbGUgb2YgdW5kZWZpbmVk IGluZGV4ZXMgYW5kIGFkZGVkIHtjYXRlZ29yeV90aXRsZX0gKHRoYW5rcyBqc3R1YmJzKTwv bGk+CgkJPGxpPjE3IE1hciAwOCB8IDAuMzIgfCBGaXhlZCBhbm90aGVyIHVuZGVmaW5lZCBp bmRleCBhbmQgcmVtb3ZlZCBib2d1cyBjYWxsIHRvIHNtZF9saWIgKGJvdGggdGhhbmtzIHNl Y3VuZGFyKTwvbGk+CgkJPGxpPjIxIE1hciAwOCB8IDAuMzMgfCBEaWQgdjAuMzEgcHJvcGVy bHksIGluY2x1ZGluZyB0YWJsZSBwcmVmaXggKHRoYW5rcyBuYXJkbyk8L2xpPgoJCTxsaT4w MSBBcHIgMDggfCAwLjM0IHwgRml4ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlNRTDwvc3Bhbj4g cGFyZW50aGVzaXMgYnVnIDsgYWRkZWQgZW1wdHljbGFzcyBhbmQge21heGltYWdlc30gKHRo YW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDggQXByIDA4IHwgMC40IHwgQ2hhbmdlZCB0 aHVtYiB0byBhbGxvdyB0aHVtYi9mdWxsc2l6ZSBzd2FwcGluZyA7IEFkZGVkIHRodW1iY2hh bmdlLCB0aHVtYmNoYW5nZXdyYXB0YWcsIHRodW1iY2hhbmdlY2xhc3MsIHt0aHVtYmluZGV4 fSwge3RodW1iY291bnRlcn0gYW5kIHRoZSB7Y2hhbmdlZDoqfSByZXBsYWNlbWVudCB0YWdz ICh0aGFua3MgZnVscyk8L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjQxIHwgRml4ZWQgRGly ZWN0b3J5IHNlcGFyYXRvciAodGhhbmtzIGN1ZGEpIDsgYWRkZWQgcmF3IHBhZ2UgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj5zIHRvIHRoZSBuYXYgcmVwbGFjZW1lbnQgYXJyYXkg YW5kIG1hZGUgdGhlIG5hdiBhcnJheSBhdmFpbGFibGUgaW4gdGhlIHN0YW5kYXJkIHJlcGxh Y2VtZW50cyBhcnJheSAodGhhbmtzIHZpc3VhbHBlb3BsZSk8L2xpPgoJCTxsaT4yNyBNYXkg MDggfCAwLjQyIHwgQWRkZWQgcGFnZXBvcyBhbmQgbWFkZSBwYWdlIGJsb2NrcyBpbmRlcGVu ZGVudCBvZiB0aHVtYiBibG9jayAodGhhbmtzIGR1Y2hhbXApPC9saT4KCQk8bGk+MTAgSnVu IDA4IHwgMC40MyB8IEZpeGVkIHNvcnQ9JiM4MjIwO2ZpeGVkJiM4MjIxOyB3aGVuIHVzaW5n IGxpbWl0ICh0aGFua3Mgcm9iaW43NDYpIDsgYWRkZWQgcGVyLWdyb3VwIG9uY2hhbmdlIHdy YXBwaW5nIGFuZCBhbGxvd2VkIGZpeGVkIHNvcnRpbmcgb2YgY2F0ZWdvcmllcyAodGhhbmtz IGpzdHViYnMpIDsgZGVwcmVjYXRlZCB0aHVtYmNoYW5nZSogYW5kIHJlbmFtZWQgYXMgb25j aGFuZ2UqIDsgZml4ZWQgJGlkeCBjb3VudGVyIHByb2JsZW08L2xpPgoJCTxsaT4xMCBKdW4g MDggfCAwLjQ0IHwgQXR0ZW1wdCAjMiBhdCBwZXItZ3JvdXAgb25jaGFuZ2Ugd3JhcHBpbmcg KHRoYW5rcyBhZ2FpbiBqc3R1YmJzKTwvbGk+CgkJPGxpPjE0IEp1bCAwOCB8IDAuNDUgfCBG aXhlZCBsYWNrIG9mIG91dHB1dCB3aGVuIG5vdCB1c2luZyBjYXRlZ29yaWVzICh0aGFua3Mg cm9iaW43NDYpPC9saT4KCQk8bGk+MTYgTm92IDA4IHwgMC40NiB8IEFkZGVkIGNvbGxhdGVk ZWxpbSAodGhhbmtzIGN1cmlvdXopIDsgZml4ZWQgKEkgaG9wZSkgdGhlIGNhdGVnb3J5IC8g aWQgYnVnIGZyb20gMC40NCBhbmQgMC40NSAodGhhbmtzIHJvYmluNzQ2L25hcmRvKTwvbGk+ CgkJPGxpPjEzIEZlYiAwOSB8IDAuNSB8IFJlcXVpcmVzIHNtZF9saWIgOyBhZGRlZCA8c3Bh biBjbGFzcz0iY2FwcyI+TUxQPC9zcGFuPiBzdXBwb3J0ICh0aGFua3MgbmV0LWNhcnZlcikg OyBhZGRlZCBzdXBwb3J0IGZvciBkaXNwbGF5aW5nIHVuY2F0ZWdvcmlzZWQgaW1hZ2VzICh0 aGFua3MgeHphbWVuKSA7ICYjODIxNjs/JiM4MjE3OyB2YXJzIGV4cGFuZGVkIHRvIGxpbmsg LyBpbWFnZSAvIGZpbGUgLyA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBh bmQgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgOyBuZXcgYXR0cmli dXRlczogPGNvZGU+ZXNjYXBlPC9jb2RlPiwgPGNvZGU+aHRtbF9pZDwvY29kZT4sIDxjb2Rl PmZvcm1hdDwvY29kZT4sIDxjb2RlPmdtdDwvY29kZT4sIDxjb2RlPmxhbmc8L2NvZGU+ICh0 aGFua3MgbWFuaXF1aSksIDxjb2RlPnN0cmljdGZpZWxkczwvY29kZT4gOyBpbXByb3ZlZCA8 Y29kZT57b2JqZWN0fTwvY29kZT4gc3VwcG9ydCBhbmQgYWRkZWQgPGNvZGU+b2JqZWN0Zm9y bTwvY29kZT4gKHRoYW5rcyB0eWUvcnZ0dXJuYWdlKSA7IDxjb2RlPnt0aXRsZX08L2NvZGU+ ID09IDxjb2RlPntjYXB0aW9ufTwvY29kZT4gYXQgbGFzdCEgOyByZW1vdmVkIDxjb2RlPnRo dW1iY2hhbmdlPC9jb2RlPiogYXR0cmlidXRlcyA7IGltcHJvdmVkIHN1cHBvcnQgZm9yIHRh YmxlIGV4dGVuc2lvbnMgKHZpYSB0aGUgPGNvZGU+Y29sdW1uczwvY29kZT4gYXR0cmlidXRl OiB0aGFua3MgUmVkRm94KSA7IGFkZGVkIDxjb2RlPnNtZF9ldmVyeTwvY29kZT4gc3ludGF4 IHRvIDxjb2RlPm9uY2hhbmdlPC9jb2RlPiAodGhhbmtzIGpha29iKSA7IGZpeGVkIG9mZnNl dCBidWcgKHRoYW5rcyBmZXJhZ25vbGkpPC9saT4KCQk8bGk+MDEgTWFyIDA5IHwgMC41MSB8 IEFkZGVkIDxjb2RlPmNvdW50Zm9ybTwvY29kZT4gYW5kIDxjb2RlPmNvdW50cG9zPC9jb2Rl PiA7IGZpeGVkIDxjb2RlPntoYXN0aHVtYn08L2NvZGU+IHdhcm5pbmc8L2xpPgoJCTxsaT4x NiBOb3YgMDkgfCAwLjUyIHwgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gNC4yLjAg b25seSA7IGFkZGVkIGRhdGFiYXNlIHRodW1ibmFpbCBoZWlnaHQgYW5kIHdpZHRoIHN1cHBv cnQgOyBhZGRlZCA8Y29kZT5hc3BlY3Q8L2NvZGU+LCA8Y29kZT5kaW1lbnNpb25zPC9jb2Rl PiwgPGNvZGU+YXV0aG9yPC9jb2RlPiwgPGNvZGU+ZXh0ZW5zaW9uPC9jb2RlPiBhbmQgPGNv ZGU+aW1nc2l6ZTwvY29kZT4gYXR0cmlidXRlcyA7IGZpeGVkIHF1b3RlIHBhcnNpbmcgaW4g PGNvZGU+ZXNjYXBlPC9jb2RlPiBhdHRyaWJ1dGUgYW5kIHdhcm5pbmcgd2hlbiB1c2luZyA8 Y29kZT5maXhlZDwvY29kZT4gc29ydGluZyAoYm90aCB0aGFua3MgbWFuaXF1aSk8L2xpPgoJ CTxsaT4wMSBKYW4gMTAgfCAwLjUzIHwgQWRkZWQgb25jaGFuZ2UgZm9ybSBjYXBhYmlsaXR5 ICh0aGFua3MgTWF0dEQpPC9saT4KCQk8bGk+MDEgRmViIDEwIHwgMC41NCB8IE11bHRpcGxl IGltYWdlcyBub3QgZGlzcGxheWVkIGlmIG11bHRpcGxlIGNhdGVnb3JpZXMgZXhpc3Qgd2l0 aCB0aGUgc2FtZSBuYW1lIGFuZCBkaWZmZXJlbnQgdGl0bGU8L2xpPgoJCTxsaT4wMSBNYXIg MTAgfCAwLjU1IHwgQWRkZWQgPGNvZGU+bmFtZTwvY29kZT4gZmlsdGVyaW5nPC9saT4KCQk8 bGk+MTAgTWFyIDEwIHwgMC42IHwgU2ltcGxpZmllZCBxdWVyeSB0byBlbGltaW5hdGUgZXJy b3JzIHdpdGggdW5jYXRlZ29yaXNlZCBpbWFnZXMgYmVpbmcgb21pdHRlZCBmcm9tIHRoZSBy ZXN1bHRzOyBhbGxvd2VkIGNvdW50Zm9ybSByYW5nZXMgOyBhZGRlZCA8Y29kZT5ncm91cGxp bWl0PC9jb2RlPjwvbGk+CgkJPGxpPjAzIEFwciAxMCB8IDAuNjEgfCBBZGRlZCA8Y29kZT5i cmVha2NsYXNzPC9jb2RlPiAodGhhbmtzIHRoZV9naG9zdCk8L2xpPgoJPC91bD4KCgk8aDIg aWQ9ImNyZWRpdHMiPkNyZWRpdHM8L2gyPgoKCTxwPlRoaXMgcGx1Z2luIHdvdWxkbiYjODIx Nzt0IGhhdmUgZXhpc3RlZCB3aXRob3V0IHRoZSBhd2Vzb21lIG1pbmQgb2YgUm9iZXJ0IFdl dHpsbWF5ci4gSGlzIHdldF9mb3JfZWFjaF9pbWFnZSBwbHVnaW4gaXMgdHJ1ZSBnZW5pdXM7 IHRoaXMgc2ltcGx5IHN0YW5kcyBvbiB0aGUgc2hvdWxkZXJzIG9mIHRoYXQgaWRlYSBhbmQg cm9sbHMgaW4gYSBzb3VwZWQgdXAgdmVyc2lvbiBvZiB0aGUgdGh1bWJuYWlsIGdlbmVyYXRp b24gZW5naW5lIGZyb20gc21kX3NsaW1ib3guIFRvIHRoYXQgZW5kLCB0aGUgcGx1Z2luIGlz IGFsc28gaW5kZWJ0ZWQgdG8gYW55b25lIHdobyBoYXMgcG9zdGVkIGZlYXR1cmVzIG9yIGJ1 ZyByZXBvcnRzIHRvIG1lIG9yIHRoZSBzbWRfc2xpbWJveCB0aHJlYWQuIFlvdSYjODIxNzty ZSBhbGwgbWFydmVsbG91cy48L3A+Cgo8L2Rpdj4KPCEtLSAqKiogQkVHSU4gUExVR0lOIENT UyAqKiogLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNzbWRfaGVscCB7IGxpbmUtaGVp Z2h0OjEuNSA7fQojc21kX2hlbHAgY29kZSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQ6IDEw NSUvMTMwJSAiQ291cmllciBOZXciLCBjb3VyaWVyLCBtb25vc3BhY2U7IGJhY2tncm91bmQt Y29sb3I6ICNGRkZGQ0M7fQojc21kX2hlbHAgY29kZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5v cm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgYmFja2dyb3VuZC1jb2xvcjogI2YwZTY4 YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHggMTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7 IH0KI3NtZF9oZWxwIGE6bGluaywgI3NtZF9oZWxwIGE6dmlzaXRlZCB7IGNvbG9yOiAjMDBj OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCBibHVl OyBwYWRkaW5nLWJvdHRvbToxcHg7fQojc21kX2hlbHAgYTpob3ZlciwgI3NtZF9oZWxwIGE6 YWN0aXZlIHsgY29sb3I6IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJv dHRvbTogMnB4IHNvbGlkIGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBo MSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdp bjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CiNzbWRfaGVscCBoMiB7IGJvcmRlci1ib3R0 b206IDFweCBzb2xpZCBibGFjazsgcGFkZGluZzoxMHB4IDAgMDsgY29sb3I6ICMzNjk7IGZv bnQ6IDE3cHggR2VvcmdpYSwgc2Fucy1zZXJpZjsgfQojc21kX2hlbHAgaDMgeyBjb2xvcjog IzA3OTsgZm9udDogYm9sZCAxMnB4IEFyaWFsLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2lu ZzogMXB4OyBtYXJnaW46IDEwcHggMCAwO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IHRl eHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQojc21kX2hlbHAgaDQgeyBmb250OiBib2xkIDEx cHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBw eCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KI3NtZF9oZWxwIC5hdG5tIHsg Zm9udC13ZWlnaHQ6Ym9sZDsgY29sb3I6IzMzZDsgfQojc21kX2hlbHAgLm1hbmQgeyBiYWNr Z3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVkICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxl IHt3aWR0aDo5MCU7IHRleHQtYWxpZ246Y2VudGVyOyBwYWRkaW5nLWJvdHRvbToxZW07fQoj c21kX2hlbHAgdGQsICNzbWRfaGVscCB0aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRk aW5nOi41ZW0gMDt9CiNzbWRfaGVscCB1bCB7IGxpc3Qtc3R5bGUtdHlwZTpzcXVhcmU7IH0K I3NtZF9oZWxwIC5yZXF1aXJlZCB7Y29sb3I6cmVkO30KI3NtZF9oZWxwIGxpIHsgbWFyZ2lu OjVweCAyMHB4IDVweCAzMHB4OyB9CiNzbWRfaGVscCAuYnJlYWsgeyBtYXJnaW4tdG9wOjVw eDsgfQo8L3N0eWxlPgo8IS0tICoqKiBFTkQgUExVR0lOIENTUyAqKiogLS0+CiI7czozOiJt ZDUiO3M6MzI6Ijc2NWNiYmE2NzFkMTAzZmY5ZDUwMTVjNDFjOGRiZDQxIjt9