# wlk_mp v0.5.3 # A magazine image manipulation tool. # Walker Hamilton # http://www.walkerhamilton.com # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuNS4zIjtzOjY6ImF1dGhvciI7czoxNToiV2Fs a2VyIEhhbWlsdG9uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjI5OiJodHRwOi8vd3d3LndhbGtl cmhhbWlsdG9uLmNvbSI7czoxMToiZGVzY3JpcHRpb24iO3M6MzU6IkEgbWFnYXppbmUgaW1h Z2UgbWFuaXB1bGF0aW9uIHRvb2wuIjtzOjQ6InR5cGUiO2k6MDtzOjQ6Im5hbWUiO3M6Njoi d2xrX21wIjtzOjQ6ImhlbHAiO3M6Mzc2NzoiCTxoMT53bGtfbXA8L2gxPgoJPHVsPgoJCTxs aT52IDAuNSAmIzgyMTE7IFRoaXMgZml4ZXMgYSBidWcgaW4gc3BlY2lmeWluZyB0aGUgaW1h Z2UgY2F0ZWdvcnkgdmlhIHRoZSB0YWcgcmF0aGVyIHRoYW4gdGhlIGN1c3RvbV9maWVsZCAo Ym90aCB3b3JrIG5vdykuIEFsc28gZGlkIGdlbmVyYWwgaG91c2VrZWVwaW5nIGFuZCBjbGVh bnVwLiBZb3UgY2FuIG5vdyBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgaW1hZ2VzIHRvIGFwcGVh ciAod2hlbiB1c2luZyBjYXRlZ29yeSkgYnkgY3JlYXRpbmcgYSBjdXN0b20gZmllbGQgY2Fs bCAmIzgyMjA7bWFnbnVtJiM4MjIxOyBvciB1c2luZyB0aGUgYXR0cmlidXRlICYjODIyMDtu dW1iZXImIzgyMjE7IHdpdGhpbiB0aGUgdGFnLjwvbGk+CgkJPGxpPnYgMC40ICYjODIxMTsg VGhpcyBhZGRzIGNhdGVnb3J5IHNlbGVjdGlvbiB0byB0aGUgcGx1Z2luLjwvbGk+CgkJPGxp PnYgMC4zICYjODIxMTsgVGhpcyB2ZXJzaW9uIGlzIGEgbmFtZS1jaGFuZ2UgdmVyc2lvbiBv bmx5LjwvbGk+Cgk8L3VsPgoJPHA+VGhpcyBwbHVnaW4gaXMgYW4gaW50ZWdyYXRpb24gb2Yg dGhlIE1hZ2F6aW5lIEZvcm1hdHRlZCBJbWFnZXMgYXMgc2VlbiBvbiBBTEEuPC9wPgoJPHA+ WW91JiM4MjE3O3JlIGdvaW5nIHRvIG5lZWQgdG8gZG93bmxvYWQgPGEgaHJlZj0iaHR0cDov L2Rldi5zaWduYWxmYWRlLmNvbS90eHAvd2xrX21wX2ltYWdlZG90cGhwLnppcCI+dGhpcyB6 aXA8L2E+IGFuZCB0aGVuIHVwbG9hZCBpdCB0byB5b3VyICYjODIyMDtmaWxlcyYjODIyMTsg ZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHBsdWdpbi48L3A+Cgk8aDI+SW5zdGFsbGF0aW9uPC9o Mj4KCTxwPlNpbmNlIHlvdSBjYW4gcmVhZCB0aGlzIGhlbHAsIHlvdSBoYXZlIGluc3RhbGxl ZCB0aGUgcGx1Z2luIHRvIHR4cC48L3A+Cgk8cD5EaWQgeW91IGFjdGl2YXRlIGl0PzwvcD4K CTxoMj5Vc2FnZTwvaDI+Cgk8cD5QbGFjZSB0aGUgPGNvZGU+Jmx0O3R4cDp3bGtfbXAgLyZn dDs8L2NvZGU+IHRhZyBpbiBhbiBhcnRpY2xlLCBmb3JtIG9yIHBhZ2UuPC9wPgoJPGgyPkF0 dHJpYnV0ZXM8L2gyPgoJPHVsPgoJCTxsaT48c3Ryb25nPndpZHRoPC9zdHJvbmc+OiBzcGVj aWZ5IGVudGlyZSB3aWR0aCBvZiBtYWdhemluZSBib3guPC9saT4KCQk8bGk+PHN0cm9uZz5w YWRkaW5nPC9zdHJvbmc+OiBzcGVjaWZ5IHBhZGRpbmcgYmV0d2VlbiBpbWFnZXM8L2xpPgoJ CTxsaT48c3Ryb25nPmFsdDwvc3Ryb25nPjogc3BlY2lmeSB5ZXIgYWx0IHRhZyAoSSYjODIx NzttIGp1c3QgcHV0dGluZyB0aGlzIGluIHRoZXJlKTwvbGk+CgkJPGxpPjxzdHJvbmc+bnVt YmVyPC9zdHJvbmc+OiB1c2Ugb25seSBpZiBzcGVjaWZ5aW5nIGNhdGVnb3J5LCBpcyB0aGUg bnVtYmVyIG9mIGltYWdlcyB5b3Ugd2FudCByZXR1cm5lZC48YnIgLz4KKERlZmF1bHRzIHRv IDMpPC9saT4KCQk8bGk+PHN0cm9uZz5zb3J0PC9zdHJvbmc+OiB1c2Ugb25seSBpZiBzcGVj aWZ5aW5nIGNhdGVnb3J5LCBjYW4gYmUgJiM4MjE2O0FTQyYjODIxNzssICYjODIxNjtERVND JiM4MjE3Oywgb3IgJiM4MjE2OzxhY3JvbnltIHRpdGxlPSIiPlJBTkQ8L2Fjcm9ueW0+JiM4 MjE3Oy4gKERlZmF1bHRzIHRvICYjODIxNjs8YWNyb255bSB0aXRsZT0iIj5SQU5EPC9hY3Jv bnltPiYjODIxNzsgJiM4MjExOyBTb3J0IGlzIGJ5IGRhdGUgY29sIFtkYXRlIHVwbGFvZGVk XSk8L2xpPgoJPC91bD4KCTxwPjxzdHJvbmc+aW1hZ2VzPC9zdHJvbmc+OiBzcGVjaWZ5IHlv dXIgaW1hZ2VzIGJ5IGlkIGZyb20gdGhlIGltYWdlcyBsaXN0LiBzaG91bGQgYmUgYSBsaXN0 IG9mIG51bWJlcnMsIHBpcGUtZGVsaW1pdGVkIChFeC4gaW1hZ2VzID0gJiM4MjIwOzF8NXw4 fDEyfDE2JiM4MjIxOyApPC9wPgoJPHA+b3ImIzgyMzA7Li48L3A+Cgk8cD48c3Ryb25nPmNh dGVnb3J5PC9zdHJvbmc+ICYjODIxMTsgc3BlY2lmeSBhIGNhdGVnb3J5IGZyb20gd2hpY2gg dG8gZHJhdyBpbWFnZXMgKGRyYXdzIHJhbmRvbWx5IGlzIHNvcnQgaXMgbm90IHNwZWNpZmll ZCkuPC9wPgoJPHA+VGhlIHNlbGVjdGlvbiB0aWVycyBpdHNlbGYgbGlrZSBzbzo8L3A+Cgk8 b2w+CgkJPGxpPkNoZWNrcyB0byBzZWUgaWYgYSBjYXRlZ29yeSBpcyBzcGVjaWZpZWQgaW4g dGhlIHRhZyBpdHNlbGYsIGlmIG5vdCBnb2VzIG9uIHRvJiM4MjMwOzwvbGk+CgkJPGxpPkNo ZWNrcyB0byBzZWUgaWYgYSBjYXRlZ29yeSB3YXMgc3BlY2lmaWVkIGluIGEgY3VzdG9tX2Zp ZWxkIGNhbGxlZCAmIzgyMTY7bWFnY2F0ZWdvcnkmIzgyMTc7LCBpZiBub3QgZ29lcyBvbiB0 byYjODIzMDsuPC9saT4KCQk8bGk+Q2hlY2tzIHRvIHNlZSBpZiB0YWcgaGFkIGFuIGF0dHJp YnV0ZSBjYWxsZWQgaW1hZ2VzIGFuZCBoYWQgaW1hZ2UgaWRzIG9yIHVyaXMgc3BlY2lmaWVk LCBpZiBub3QgZ29lcyBvbiB0byYjODIzMDsuPC9saT4KCQk8bGk+Q2hlY2tzIHRvIHNlZSBp ZiB0aGUgY3VzdG9tX2ZpZWxkLCBtYWdpbWFnZXMgaGFkIGNvbnRlbnQgYW5kIGlmIHRob3Nl IHdlcmUgaW1hZ2UgdXJpcyBvciBudW1iZXJzLjwvbGk+CgkJPGxpPlRoZW4sIGlmIHRoZSBj YXRlZ29yeSB3YXMgc2V0IGNoZWNrcyB0byBzZWUgaWYgYSBudW1iZXIgb2YgaW1hZ2VzIGlz IHNldCBpbiBhIGN1c3RvbV9maWVsZCBjYWxsZWQgJiM4MjE2O21hZ251bSYjODIxNzsuLi5p ZiB0aGF0JiM4MjE3O3Mgbm90IGZvdW5kJiM4MjMwOy48L2xpPgoJCTxsaT5UaGVuLCBjaGVj a3MgdG8gc2VlIGlmIGEgbnVtYmVyIG9mIGltYWdlcyBpcyBzZXQgaW4gYSBwcm9wZXJ0eSBj YWxsZWQgJiM4MjE2O251bWJlciYjODIxNzsgaW4gdGhlIHRhZyBpdHNlbGYmIzgyMzA7Li5p ZiB0aGF0JiM4MjE3O3Mgbm90IGZvdW5kJiM4MjMwOy48L2xpPgoJCTxsaT5kZWZhdWx0cyB0 byAzIGltYWdlcyBmcm9tIHRoYXQgY2F0ZWdvcnkuPC9saT4KCTwvb2w+Cgk8cD5Db21wbGV0 ZSBFeGFtcGxlOiA8Y29kZT4mbHQ7dHhwOndsa19tcCB3aWR0aD0iNjAwIiBwYWRkaW5nPSIz IiBhbHQ9Im1hZ2F6aW5lIGltYWdlcyIgaW1hZ2VzPSIxfDV8Nnw3IiAvJmd0OzwvY29kZT48 L3A+Cgk8aDI+UHV0dGluZyB0aGUgdGFnIGluIGEgZm9ybSBtZWFucyB0aGF0IGV2ZXJ5IGFy dGljbGUgdHJpZXMgdG8gbG9hZCB0aGlzIHVwLiBIb3cgZG8geW91IHNwZWNpZnkgaW1hZ2Vz LCB0aGVuPzwvaDI+Cgk8cD5FYXN5IGVub3VnaC4gR28gdG8gJiM4MjIwO0FkbWluJiM4MjIx OyAtPiAmIzgyMjA7QWR2YW5jZWQgUHJlZmVyZW5jZXMmIzgyMjE7IGFuZCBjcmVhdGUgYSBj dXN0b20gZmllbGQgY2FsbGVkICYjODIyMDttYWdpbWFnZXMmIzgyMjE7LiBUaGVuIHdoZW5l dmVyIHlvdSB3YW50IHRvIHNwZWNpZnkgaW1hZ2VzIGZvciB5b3VyIGFydGljbGUsIGNsaWNr IHRoZSAmIzgyMjA7QWR2YW5jZWQgT3B0aW9ucyYjODIyMTsgb24gdGhlIGxlZnQgaGFuZCBz aWRlIG9mIHlvdXIgYXJ0aWNsZSBjcmVhdGlvbiBwYWdlIGFuZCBlbnRlciB0aGUgaW1hZ2Ug bnVtYmVycyB3aXRoIHRoZSBwaXBlIGNoYXJhY3RlciBiZXR3ZWVuIHRoZW0uIChFeC4gaW1h Z2VzID0gMXw1fDh8MTJ8MTYgKTwvcD4KCTxwPkFuZCBkb24mIzgyMTc7dCB3b3JyeSBhYm91 dCB1c2luZyB1cCB0b28gbWFueSByZXNvdXJjZXMsIGlmIG5vIGltYWdlcyBhcmUgc3BlY2lm aWVkLCB0aGlzIHBsdWdpbiBkb2VzbiYjODIxNzt0IHRyeSBhbmQgb3V0cHV0IGFueXRoaW5n ISBTbyB5b3UgY2FuIGhhdmUgc29tZSBhcnRpY2xlcyB3aXRoIGltYWdlcyBhbmQgc29tZSB3 aXRob3V0LjwvcD4KCiAiO3M6NDoiY29kZSI7czoxNDI0OToiY2xhc3MgbWFnYXppbmVsYXlv dXQgewoJdmFyICRpbWFnZXMgPSBhcnJheSgpOwoJdmFyICRfbnVtaW1hZ2VzID0gMDsKCXZh ciAkX2Z1bGx3aWR0aDsKCXZhciAkX2ltYWdldGVtcGxhdGUgPSAiPGltZyBzcmM9XCJpbWFn ZS5waHA/c2l6ZT1bc2l6ZV0mYW1wO2ZpbGU9W2ltYWdlXVwiIGFsdD1cIlwiIC8+IjsKCXZh ciAkX3BhZGRpbmcgPSAzOwoKCWZ1bmN0aW9uIG1hZ2F6aW5lbGF5b3V0KCRtYXh3aWR0aD02 MDAsJHBhZGRpbmc9MywkaW1hZ2V0ZW1wbGF0ZT0nJykKCXsKCQkkdGhpcy0+X2Z1bGx3aWR0 aCA9ICRtYXh3aWR0aDsKCQkkdGhpcy0+X3BhZGRpbmcgPSAkcGFkZGluZzsKCQlpZiAoJGlt YWdldGVtcGxhdGUgIT0gJycpICR0aGlzLT5faW1hZ2V0ZW1wbGF0ZSA9ICRpbWFnZXRlbXBs YXRlOwoJfQoKCWZ1bmN0aW9uIF9nZXRGaWxlRXh0KCRmaWxlKQoJewoJCSRleHQgPSBleHBs b2RlKCIuIiwgJGZpbGUpOwoJCWlmIChjb3VudCgkZXh0KSA9PSAwKSByZXR1cm4gJyc7CgkJ cmV0dXJuICRleHRbY291bnQoJGV4dCktMV07Cgl9CgoJZnVuY3Rpb24gX3RyYW5zcG9zZSgk YXJyKQoJewoJCSRuZXdhcnIgPSBhcnJheSgpOwoJCWZvcmVhY2goJGFyciBhcyAka2V5eCA9 PiAkdmFseCkgewoJCQlmb3JlYWNoKCR2YWx4IGFzICRrZXl5ID0+ICR2YWx5KSB7CgkJCQkk bmV3YXJyWyRrZXl5XVska2V5eF0gPSAkdmFseTsKCQkJfQoJCX0KCQlyZXR1cm4gJG5ld2Fy cjsKCX0KCglmdW5jdGlvbiBhZGRJbWFnZSgkZmlsZW5hbWUsJHVybD0nJykKCXsKCQlpZiAo JHVybCA9PSAnJykgJHVybCA9ICRmaWxlbmFtZTsKCQlpZiAoCgkJCShzdHJ0b2xvd2VyKCR0 aGlzLT5fZ2V0RmlsZUV4dCgkZmlsZW5hbWUpKSAhPSAianBnIikgJiYKCQkJKHN0cnRvbG93 ZXIoJHRoaXMtPl9nZXRGaWxlRXh0KCRmaWxlbmFtZSkpICE9ICJqcGVnIikgJiYKCQkJKHN0 cnRvbG93ZXIoJHRoaXMtPl9nZXRGaWxlRXh0KCRmaWxlbmFtZSkpICE9ICJnaWYiKSAmJgoJ CQkoc3RydG9sb3dlcigkdGhpcy0+X2dldEZpbGVFeHQoJGZpbGVuYW1lKSkgIT0gInBuZyIp CgkJCSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJGltYWdlc2l6ZSA9IGdldGltYWdl c2l6ZSgkdXJsKTsKCQkkdyA9ICRpbWFnZXNpemVbMF07CgkJJGggPSAkaW1hZ2VzaXplWzFd OwoKCQlpZiAoKCRoID09IDApIHx8ICgkdyA9PSAwKSkgcmV0dXJuIGZhbHNlOwoKCQkkcmF0 aW8gPSAkdyAvICRoOwoKCQkkZm9ybWF0ID0gKCR3ID4gJGgpID8gJ2xhbmRzY2FwZScgOiAn cG9ydHJhaXQnOwoKCQkkdGhpcy0+X251bWltYWdlcysrOwoKCQkkaSA9ICR0aGlzLT5fbnVt aW1hZ2VzIC0gMTsKCQkkdGhpcy0+aW1hZ2VzWyRpXSA9IGFycmF5KCk7CgkJJHRoaXMtPmlt YWdlc1skaV1bJ2ZpbGVuYW1lJ10gPSAkZmlsZW5hbWU7CgkJJHRoaXMtPmltYWdlc1skaV1b J3VybCddID0gJHVybDsKCQkkdGhpcy0+aW1hZ2VzWyRpXVsnZm9ybWF0J10gPSAkZm9ybWF0 OwoJCSR0aGlzLT5pbWFnZXNbJGldWydyYXRpbyddID0gJHJhdGlvOwoJCSR0aGlzLT5pbWFn ZXNbJGldWyd3J10gPSAkdzsgLy9Ob3QgY3VycmVudGx5IHVzZWQKCQkkdGhpcy0+aW1hZ2Vz WyRpXVsnaCddID0gJGg7IC8vTm90IGN1cnJlbnRseSB1c2VkCgoJCXJldHVybiB0cnVlOwoJ fQoKCWZ1bmN0aW9uIGluc2VydEltYWdlKCRzaXplLCRuYW1lKQoJewoJCXJldHVybiBzdHJf cmVwbGFjZSgnW2ltYWdlXScsJG5hbWUsc3RyX3JlcGxhY2UoJ1tzaXplXScsJHNpemUsJHRo aXMtPl9pbWFnZXRlbXBsYXRlKSk7Cgl9CgoJZnVuY3Rpb24gZ2V0MWEoJGkxKSB7CgkJJHMg PSBmbG9vcigkdGhpcy0+X2Z1bGx3aWR0aCAtICgkdGhpcy0+X3BhZGRpbmcgKiAyKSk7CgkJ JGh0bWwgPSAnJzsKCQkkaHRtbCAuPSAiPGRpdiBzdHlsZT1cImZsb2F0OiBsZWZ0OyBjbGVh cjogYm90aDtcIj4iLiR0aGlzLT5pbnNlcnRJbWFnZSgnJy4kcywkdGhpcy0+aW1hZ2VzWyRp MV1bJ2ZpbGVuYW1lJ10pLiI8L2Rpdj5cbiI7CgkJcmV0dXJuICRodG1sOwoJfQoKCWZ1bmN0 aW9uIGdldDJhKCRpMSwkaTIpIHsKCQkkYSA9ICR0aGlzLT5pbWFnZXNbJGkxXVsncmF0aW8n XTsKCQkkYiA9ICR0aGlzLT5pbWFnZXNbJGkyXVsncmF0aW8nXTsKCQkkdCA9ICR0aGlzLT5f ZnVsbHdpZHRoOwoJCSRwID0gJHRoaXMtPl9wYWRkaW5nOwoKCQkkaDEgPSBmbG9vciggKDQq JHAgLSAkdCkgLyAoLSRhIC0gJGIpICk7CgoJCSRodG1sID0gJyc7CgkJJGh0bWwgLj0gIjxk aXYgc3R5bGU9XCJmbG9hdDogbGVmdDsgY2xlYXI6IGJvdGg7XCI+Ii4kdGhpcy0+aW5zZXJ0 SW1hZ2UoJ2gnLiRoMSwkdGhpcy0+aW1hZ2VzWyRpMV1bJ2ZpbGVuYW1lJ10pLiI8L2Rpdj5c biI7CgkJJGh0bWwgLj0gIjxkaXYgc3R5bGU9XCJmbG9hdDogbGVmdDtcIj4iLiR0aGlzLT5p bnNlcnRJbWFnZSgnaCcuJGgxLCR0aGlzLT5pbWFnZXNbJGkyXVsnZmlsZW5hbWUnXSkuIjwv ZGl2PlxuIjsKCQlyZXR1cm4gJGh0bWw7Cgl9CgoJZnVuY3Rpb24gZ2V0M2EoJGkxLCRpMiwk aTMpIHsKCQkkYSA9ICR0aGlzLT5pbWFnZXNbJGkzXVsncmF0aW8nXTsKCQkkYiA9ICR0aGlz LT5pbWFnZXNbJGkxXVsncmF0aW8nXTsKCQkkYyA9ICR0aGlzLT5pbWFnZXNbJGkyXVsncmF0 aW8nXTsKCQkkdCA9ICR0aGlzLT5fZnVsbHdpZHRoOwoJCSRwID0gJHRoaXMtPl9wYWRkaW5n OwoKCQkkaDEgPSBmbG9vcigKCQkoNiAqICRwIC0gJHQpCgkJLwoJCSgtJGEgLSRiIC0kYykK CQkpOwoKCQkkaHRtbCA9ICcnOwoJCSRodG1sIC49ICI8ZGl2IHN0eWxlPVwiZmxvYXQ6IGxl ZnQ7IGNsZWFyOiBib3RoO1wiPiIuJHRoaXMtPmluc2VydEltYWdlKCdoJy4kaDEsJHRoaXMt PmltYWdlc1skaTFdWydmaWxlbmFtZSddKS4iPC9kaXY+XG4iOwoJCSRodG1sIC49ICI8ZGl2 IHN0eWxlPVwiZmxvYXQ6IGxlZnQ7XCI+Ii4kdGhpcy0+aW5zZXJ0SW1hZ2UoJ2gnLiRoMSwk dGhpcy0+aW1hZ2VzWyRpM11bJ2ZpbGVuYW1lJ10pLiI8L2Rpdj5cbiI7CgkJJGh0bWwgLj0g IjxkaXYgc3R5bGU9XCJmbG9hdDogbGVmdDtcIj4iLiR0aGlzLT5pbnNlcnRJbWFnZSgnaCcu JGgxLCR0aGlzLT5pbWFnZXNbJGkyXVsnZmlsZW5hbWUnXSkuIjwvZGl2PlxuIjsKCQlyZXR1 cm4gJGh0bWw7Cgl9CgoKCWZ1bmN0aW9uIGdldDNiKCRpMSwkaTIsJGkzKSB7CgkJJGEgPSAk dGhpcy0+aW1hZ2VzWyRpM11bJ3JhdGlvJ107CgkJJGIgPSAkdGhpcy0+aW1hZ2VzWyRpMV1b J3JhdGlvJ107CgkJJGMgPSAkdGhpcy0+aW1hZ2VzWyRpMl1bJ3JhdGlvJ107CgkJJHQgPSAk dGhpcy0+X2Z1bGx3aWR0aDsKCQkkcCA9ICR0aGlzLT5fcGFkZGluZzsKCgkJJHcxID0gZmxv b3IoCgkJLSgKCQkoMiAqICRhICogJGIgKiAkYyAqICRwICsgNCAqICRiICogJGMgKiAkcCAt ICRiICogJGMgKiAkdCkKCQkvCgkJKCRhICogJGIgKyAkYyAqICRiICsgJGEgKiAkYykKCQkp CgkJKTsKCgkJJHcyID0gZmxvb3IoCgkJKCRhICogKC00ICogJGIgKiAkcCArIDIgKiAkYiAq ICRjICogJHAgLSA0ICogJGMgKiAkcCArICRiICogJHQgKyAkYyAqICR0KSkKCQkvCgkJKCRh ICogJGIgKyAkYyAqICRiICsgJGEgKiAkYykKCQkpOwoKCQkkaHRtbCA9ICcnOwoJCSRodG1s IC49ICI8ZGl2IHN0eWxlPVwiZmxvYXQ6IHJpZ2h0OyBjbGVhcjogYm90aDtcIj4iLiR0aGlz LT5pbnNlcnRJbWFnZSgndycuJHcyLCR0aGlzLT5pbWFnZXNbJGkzXVsnZmlsZW5hbWUnXSku IjwvZGl2PlxuIjsKCQkkaHRtbCAuPSAiPGRpdiBzdHlsZT1cImZsb2F0OiBsZWZ0O1wiPiIu JHRoaXMtPmluc2VydEltYWdlKCd3Jy4kdzEsJHRoaXMtPmltYWdlc1skaTFdWydmaWxlbmFt ZSddKS4iPC9kaXY+XG4iOwoJCSRodG1sIC49ICI8ZGl2IHN0eWxlPVwiZmxvYXQ6IGxlZnQ7 XCI+Ii4kdGhpcy0+aW5zZXJ0SW1hZ2UoJ3cnLiR3MSwkdGhpcy0+aW1hZ2VzWyRpMl1bJ2Zp bGVuYW1lJ10pLiI8L2Rpdj5cbiI7CgoJCXJldHVybiAkaHRtbDsKCX0KCglmdW5jdGlvbiBn ZXQ0YSgkaTEsJGkyLCRpMywkaTQpIHsKCQkkYSA9ICR0aGlzLT5pbWFnZXNbJGkxXVsncmF0 aW8nXTsKCQkkYiA9ICR0aGlzLT5pbWFnZXNbJGkyXVsncmF0aW8nXTsKCQkkYyA9ICR0aGlz LT5pbWFnZXNbJGkzXVsncmF0aW8nXTsKCQkkZCA9ICR0aGlzLT5pbWFnZXNbJGk0XVsncmF0 aW8nXTsKCQkkdCA9ICR0aGlzLT5fZnVsbHdpZHRoOwoJCSRwID0gJHRoaXMtPl9wYWRkaW5n OwoKCQkkaDEgPSBmbG9vcigKCQkoOCAqICRwIC0gJHQpCgkJLwoJCSgtJGEgLSRiIC0kYyAt JGQpCgkJKTsKCgkJLy8kaDEgPSBmbG9vcigkdGhpcy0+X2Z1bGx3aWR0aCAvICgkdGhpcy0+ aW1hZ2VzWyRwMV1bJ3JhdGlvJ10gKyAkdGhpcy0+aW1hZ2VzWyRwMl1bJ3JhdGlvJ10gKyAk dGhpcy0+aW1hZ2VzWyRwM11bJ3JhdGlvJ10gKyAkdGhpcy0+aW1hZ2VzWyRwNF1bJ3JhdGlv J10pKTsKCQkkaHRtbCA9ICcnOwoJCSRodG1sIC49ICI8ZGl2IHN0eWxlPVwiZmxvYXQ6IGxl ZnQ7IGNsZWFyOiBib3RoO1wiPiIuJHRoaXMtPmluc2VydEltYWdlKCdoJy4kaDEsJHRoaXMt PmltYWdlc1skaTFdWydmaWxlbmFtZSddKS4iPC9kaXY+XG4iOwoJCSRodG1sIC49ICI8ZGl2 IHN0eWxlPVwiZmxvYXQ6IGxlZnQ7XCI+Ii4kdGhpcy0+aW5zZXJ0SW1hZ2UoJ2gnLiRoMSwk dGhpcy0+aW1hZ2VzWyRpMl1bJ2ZpbGVuYW1lJ10pLiI8L2Rpdj5cbiI7CgkJJGh0bWwgLj0g IjxkaXYgc3R5bGU9XCJmbG9hdDogbGVmdDtcIj4iLiR0aGlzLT5pbnNlcnRJbWFnZSgnaCcu JGgxLCR0aGlzLT5pbWFnZXNbJGkzXVsnZmlsZW5hbWUnXSkuIjwvZGl2PlxuIjsKCQkkaHRt bCAuPSAiPGRpdiBzdHlsZT1cImZsb2F0OiBsZWZ0O1wiPiIuJHRoaXMtPmluc2VydEltYWdl KCdoJy4kaDEsJHRoaXMtPmltYWdlc1skaTRdWydmaWxlbmFtZSddKS4iPC9kaXY+XG4iOwoK CQlyZXR1cm4gJGh0bWw7Cgl9CgoKCglmdW5jdGlvbiBnZXQ0YigkaTEsJGkyLCRpMywkaTQp IHsKCQkkYSA9ICR0aGlzLT5pbWFnZXNbJGk0XVsncmF0aW8nXTsKCQkkYiA9ICR0aGlzLT5p bWFnZXNbJGkxXVsncmF0aW8nXTsKCQkkYyA9ICR0aGlzLT5pbWFnZXNbJGkyXVsncmF0aW8n XTsKCQkkZCA9ICR0aGlzLT5pbWFnZXNbJGkzXVsncmF0aW8nXTsKCQkkdCA9ICR0aGlzLT5f ZnVsbHdpZHRoOwoJCSRwID0gJHRoaXMtPl9wYWRkaW5nOwoKCQkkdzEgPSBmbG9vcigKCQkt KAoJCSg0ICogJGEgKiAkYiAqICRjICogJGQgKiAkcCArIDQgKiAkYiAqICRjICogJGQgKiAk cCAtICRiICogJGMgKiAkZCAqICR0KQoJCS8KCQkoJGEgKiAkYiAqICRjICsgJGEgKiAkZCAq ICRjICsgJGIgKiAkZCAqICRjICsgJGEgKiAkYiAqICRkKQoJCSkKCQkpOwoKCQkkdzIgPSBm bG9vcigKCQktKAoJCSgtNCAqICRwIC0gKC0oMS8kYykgLSgxLyRkKSAtKDEvJGIpKSAqICg0 ICogJHAgLSAkdCkgKQoJCS8KCQkoICgxLyRiKSArICgxLyRjKSArICgxLyRkKSArICgxLyRh KSApCgkJKQoJCSk7CgoJCSRodG1sID0gJyc7CgkJJGh0bWwgLj0gIjxkaXYgc3R5bGU9XCJm bG9hdDogcmlnaHQ7IGNsZWFyOiBib3RoO1wiPiIuJHRoaXMtPmluc2VydEltYWdlKCd3Jy4k dzIsJHRoaXMtPmltYWdlc1skaTRdWydmaWxlbmFtZSddKS4iPC9kaXY+XG4iOwoJCSRodG1s IC49ICI8ZGl2IHN0eWxlPVwiZmxvYXQ6IGxlZnQ7XCI+Ii4kdGhpcy0+aW5zZXJ0SW1hZ2Uo J3cnLiR3MSwkdGhpcy0+aW1hZ2VzWyRpMV1bJ2ZpbGVuYW1lJ10pLiI8L2Rpdj5cbiI7CgkJ JGh0bWwgLj0gIjxkaXYgc3R5bGU9XCJmbG9hdDogbGVmdDtcIj4iLiR0aGlzLT5pbnNlcnRJ bWFnZSgndycuJHcxLCR0aGlzLT5pbWFnZXNbJGkyXVsnZmlsZW5hbWUnXSkuIjwvZGl2Plxu IjsKCQkkaHRtbCAuPSAiPGRpdiBzdHlsZT1cImZsb2F0OiBsZWZ0O1wiPiIuJHRoaXMtPmlu c2VydEltYWdlKCd3Jy4kdzEsJHRoaXMtPmltYWdlc1skaTNdWydmaWxlbmFtZSddKS4iPC9k aXY+XG4iOwoKCQlyZXR1cm4gJGh0bWw7Cgl9CgoKCWZ1bmN0aW9uIGdldEh0bWwoKSB7CgkJ JHRoaXMtPmltYWdlcyA9ICR0aGlzLT5fdHJhbnNwb3NlKCR0aGlzLT5pbWFnZXMpOwoJCWFy cmF5X211bHRpc29ydCgkdGhpcy0+aW1hZ2VzWydmb3JtYXQnXSwgU09SVF9TVFJJTkcsIFNP UlRfQVNDLCAkdGhpcy0+aW1hZ2VzWyd1cmwnXSwgJHRoaXMtPmltYWdlc1sncmF0aW8nXSk7 CgkJJHRoaXMtPmltYWdlcyA9ICR0aGlzLT5fdHJhbnNwb3NlKCR0aGlzLT5pbWFnZXMpOwoK CQkkcHJvZmlsZSA9ICcnOwoJCWZvcmVhY2ggKCR0aGlzLT5pbWFnZXMgYXMgJGkpIHsKCQkJ JHByb2ZpbGUgLj0gJGlbJ2Zvcm1hdCddID09ICdsYW5kc2NhcGUnID8gJ0wnIDogJ1AnOwoJ CX0KCgkJJGh0bWwgPSAnJzsKCQkkaHRtbCAuPSAiPGRpdiBjbGFzcz1cIm1hZ2F6aW5lLWlt YWdlXCIgc3R5bGU9XCJ3aWR0aDogIi4kdGhpcy0+X2Z1bGx3aWR0aC4icHg7XCI+XG4iOwoK CQlpZiAoJHRoaXMtPl9udW1pbWFnZXMgPT0gMSkgewoJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0 MWEoMCk7CgkJfQoKCQlpZiAoJHRoaXMtPl9udW1pbWFnZXMgPT0gMikgewoJCQkkaHRtbCAu PSAkdGhpcy0+Z2V0MmEoMCwxKTsKCQl9CgoJCWlmICgkdGhpcy0+X251bWltYWdlcyA9PSAz KSB7CgkJCWlmICgkcHJvZmlsZSA9PSAnTExMJykgewoJCQkgICRodG1sIC49ICR0aGlzLT5n ZXQzYigwLDEsMik7CgkJCQkvLyRodG1sIC49ICR0aGlzLT5nZXQyYSgxLDIpOwoJCQkJLy8k aHRtbCAuPSAkdGhpcy0+Z2V0MWEoMCk7CgkJCX0gZWxzZSB7CgkJCQkkaHRtbCAuPSAkdGhp cy0+Z2V0M2IoMCwxLDIpOwoJCQl9CgkJfQoKCQlpZiAoJHRoaXMtPl9udW1pbWFnZXMgPT0g NCkgewoKCQkJaWYgKCRwcm9maWxlID09ICdMTExQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMt PmdldDRiKDAsMSwyLDMpOwoJCQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0gJ0xQUFAnKSB7CgkJ CQkkaHRtbCAuPSAkdGhpcy0+Z2V0M2EoMSwyLDMpOwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdl dDFhKDApOwoJCQl9IGVsc2UgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDJhKDIsMCk7CgkJ CQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMSwzKTsKCQkJfQoJCX0KCgkJaWYgKCR0aGlzLT5f bnVtaW1hZ2VzID09IDUpIHsKCQkJaWYgKCRwcm9maWxlID09ICdMTExMTCcpIHsKCQkJCSRo dG1sIC49ICR0aGlzLT5nZXQzYSgwLDEsMik7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEo Myw0KTsKCQkJfSBlbHNlaWYgKCRwcm9maWxlID09ICdMTExMUCcpIHsKCQkJCSRodG1sIC49 ICR0aGlzLT5nZXQzYigwLDEsNCk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMiwzKTsK CQkJfSBlbHNlaWYgKCRwcm9maWxlID09ICdMTExQUCcpIHsKCQkJCSRodG1sIC49ICR0aGlz LT5nZXQzYigwLDEsNCk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMiwzKTsKCQkJfSBl bHNlaWYgKCRwcm9maWxlID09ICdMTFBQUCcpIHsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQz YigyLDMsNCk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMCwxKTsKCQkJfSBlbHNlaWYg KCRwcm9maWxlID09ICdMUFBQUCcpIHsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQzYigyLDMs NCk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMCwxKTsKCQkJfSBlbHNlaWYgKCRwcm9m aWxlID09ICdQUFBQUCcpIHsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQyYSg0LDApOwoJCQkJ JGh0bWwgLj0gJHRoaXMtPmdldDNhKDEsMiwzKTsKCQkJfQoJCX0KCgkJaWYgKCR0aGlzLT5f bnVtaW1hZ2VzID09IDYpIHsKCQkJaWYgKCRwcm9maWxlID09ICdMTExMTEwnKSB7CgkJCQkk aHRtbCAuPSAkdGhpcy0+Z2V0MmEoMCwxKTsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQyYSgy LDMpOwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDJhKDQsNSk7CgkJCX0gZWxzZWlmICgkcHJv ZmlsZSA9PSAnTExMTExQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDRiKDAsMSwyLDUp OwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDJhKDMsNCk7CgkJCX0gZWxzZWlmICgkcHJvZmls ZSA9PSAnTExMTFBQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDNiKDAsMSw0KTsKCQkJ CSRodG1sIC49ICR0aGlzLT5nZXQzYigyLDMsNSk7CgkJCX0gZWxzZWlmICgkcHJvZmlsZSA9 PSAnTExMUFBQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDNiKDAsMSw1KTsKCQkJCSRo dG1sIC49ICR0aGlzLT5nZXQzYigyLDMsNCk7CgkJCX0gZWxzZWlmICgkcHJvZmlsZSA9PSAn TExQUFBQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDNiKDAsMiw0KTsKCQkJCSRodG1s IC49ICR0aGlzLT5nZXQzYigxLDMsNSk7CgkJCX0gZWxzZWlmICgkcHJvZmlsZSA9PSAnTFBQ UFBQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDNiKDAsMSw1KTsKCQkJCSRodG1sIC49 ICR0aGlzLT5nZXQzYSgyLDMsNCk7CgkJCX0gZWxzZWlmICgkcHJvZmlsZSA9PSAnUFBQUFBQ JykgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDNhKDMsNCw1KTsKCQkJCSRodG1sIC49ICR0 aGlzLT5nZXQzYSgwLDEsMik7CgkJCX0KCQl9CgoJCWlmICgkdGhpcy0+X251bWltYWdlcyA9 PSA3KSB7CgkJCWlmICgkcHJvZmlsZSA9PSAnTExMTExMTCcpIHsKCQkJCSRodG1sIC49ICR0 aGlzLT5nZXQzYSgwLDEsMik7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMyw0KTsKCQkJ CSRodG1sIC49ICR0aGlzLT5nZXQyYSg1LDYpOwoJCQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0g J0xMTExMTFAnKSB7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0NGIoMCwxLDIsNik7CgkJCQkk aHRtbCAuPSAkdGhpcy0+Z2V0M2EoMyw0LDUpOwoJCQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0g J0xMTExMUFAnKSB7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0NGIoMCwxLDIsNSk7CgkJCQkk aHRtbCAuPSAkdGhpcy0+Z2V0M2IoMyw0LDYpOwoJCQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0g J0xMTExQUFAnKSB7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0M2IoMCwxLDUpOwoJCQkJJGh0 bWwgLj0gJHRoaXMtPmdldDRiKDIsMyw0LDYpOwoJCQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0g J0xMTFBQUFAnKSB7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0M2IoMCwxLDUpOwoJCQkJJGh0 bWwgLj0gJHRoaXMtPmdldDRiKDIsMyw0LDYpOwoJCQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0g J0xMUFBQUFAnKSB7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0M2EoNCw1LDYpOwoJCQkJJGh0 bWwgLj0gJHRoaXMtPmdldDJhKDAsMSk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMiwz KTsKCQkJfSBlbHNlaWYgKCRwcm9maWxlID09ICdMUFBQUFBQJykgewoJCQkJJGh0bWwgLj0g JHRoaXMtPmdldDNhKDAsMSwyKTsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQ0YigzLDQsNSw2 KTsKCQkJfSBlbHNlaWYgKCRwcm9maWxlID09ICdQUFBQUFBQJykgewoJCQkJJGh0bWwgLj0g JHRoaXMtPmdldDRhKDAsMSwyLDMpOwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDNiKDQsNSw2 KTsKCQkJfQoJCX0KCgkJaWYgKCR0aGlzLT5fbnVtaW1hZ2VzID49IDgpIHsKCQkJaWYgKCRw cm9maWxlID09ICdMTExMTExMTCcpIHsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQzYSgwLDEs Mik7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMyw0KTsKCQkJCSRodG1sIC49ICR0aGlz LT5nZXQzYSg1LDYsNyk7CgkJCX0gZWxzZWlmICgkcHJvZmlsZSA9PSAnTExMTExMTFAnKSB7 CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0NGIoMCwxLDIsNyk7CgkJCQkkaHRtbCAuPSAkdGhp cy0+Z2V0MmEoMyw0KTsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQyYSg1LDYpOwoJCQl9IGVs c2VpZiAoJHByb2ZpbGUgPT0gJ0xMTExMTFBQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMtPmdl dDRiKDAsMSwyLDYpOwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDRiKDMsNCw1LDcpOwoJCQl9 IGVsc2VpZiAoJHByb2ZpbGUgPT0gJ0xMTExMUFBQJykgewoJCQkJJGh0bWwgLj0gJHRoaXMt PmdldDRiKDAsMSwyLDYpOwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDRiKDMsNCw1LDcpOwoJ CQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0gJ0xMTExQUFBQJykgewoJCQkJJGh0bWwgLj0gJHRo aXMtPmdldDRiKDAsMSwyLDYpOwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDRiKDMsNCw1LDcp OwoJCQl9IGVsc2VpZiAoJHByb2ZpbGUgPT0gJ0xMTFBQUFBQJykgewoJCQkJJGh0bWwgLj0g JHRoaXMtPmdldDNhKDQsNSw2KTsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQyYSgwLDEpOwoJ CQkJJGh0bWwgLj0gJHRoaXMtPmdldDNhKDIsMyw3KTsKCQkJfSBlbHNlaWYgKCRwcm9maWxl ID09ICdMTFBQUFBQUCcpIHsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQzYig1LDYsNyk7CgkJ CQkkaHRtbCAuPSAkdGhpcy0+Z2V0MmEoMCwxKTsKCQkJCSRodG1sIC49ICR0aGlzLT5nZXQz YigyLDMsNCk7CgkJCX0gZWxzZWlmICgkcHJvZmlsZSA9PSAnTFBQUFBQUFAnKSB7CgkJCQkk aHRtbCAuPSAkdGhpcy0+Z2V0M2IoNSw2LDcpOwoJCQkJJGh0bWwgLj0gJHRoaXMtPmdldDJh KDAsMSk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0M2IoMiwzLDQpOwoJCQl9IGVsc2VpZiAo JHByb2ZpbGUgPT0gJ1BQUFBQUFAnKSB7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0NGEoMCwx LDIsMyk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0NGEoNCw1LDYsNyk7CgkJCX0gZWxzZSB7 CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0M2IoNSw0LDcpOwoJCQkJJGh0bWwgLj0gJHRoaXMt PmdldDJhKDEsMCk7CgkJCQkkaHRtbCAuPSAkdGhpcy0+Z2V0M2IoMiwzLDYpOwoJCQl9CgkJ fQoKCQkkaHRtbCAuPSAiPGRpdiBzdHlsZT1cImNsZWFyOiBib3RoO1wiPjwvZGl2PlxuPC9k aXY+XG4iOwoKCQlyZXR1cm4gJGh0bWw7Cgl9Cn0KCmZ1bmN0aW9uIHdsa19tcCgkYXR0cykg ewoJZ2xvYmFsICRwcmVmczsKCWdsb2JhbCAkcGVybWxpbmtfbW9kZTsKCWdsb2JhbCAkdGhp c2FydGljbGU7CglnbG9iYWwgJGltZ19kaXI7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkn d2lkdGgnPT4gKCFlbXB0eSgkcHJlZnNbJ3dsa19tcF93aWR0aCddKSk/JHByZWZzWyd3bGtf bXBfd2lkdGgnXTonNDAwJywKCQkncGFkZGluZyc9PiAoIWVtcHR5KCRwcmVmc1snd2xrX21w X3BhZGRpbmcnXSkpPyRwcmVmc1snd2xrX21wX3BhZGRpbmcnXTonMCcsCgkJJ2FsdCc9PiAi QXJ0aWNsZSBJbWFnZSIsCgkJJ2ltYWdlcyc9PiAoIWVtcHR5KCRwcmVmc1snd2xrX21wX2lt YWdlcyddKSk/JHByZWZzWyd3bGtfbXBfaW1hZ2VzJ106JycsCgkJJ2NhdGVnb3J5Jz0+ICgh ZW1wdHkoJHByZWZzWyd3bGtfbXBfY2F0ZWdvcnknXSkpPyRwcmVmc1snd2xrX21wX2ltYWdl cyddOicnLAoJCSdudW1iZXInPT4gKCFlbXB0eSgkcHJlZnNbJ3dsa19tcF9udW1iZXInXSkp PyRwcmVmc1snd2xrX21wX251bWJlciddOiczJywKCQknc29ydCc9PiAoIWVtcHR5KCRwcmVm c1snd2xrX21wX3NvcnQnXSkpPyRwcmVmc1snd2xrX21wX3NvcnQnXTonUkFORCgpJywKCQkn ZGVidWcnPT4gJ2ZhbHNlJwoJKSwkYXR0cykpOwoKCWlmKCFlbXB0eSgkdGhpc2FydGljbGVb J21hZ251bSddKSkKCXsKCQkkdGhlbnVtYmVyID0gJHRoaXNhcnRpY2xlWydtYWdudW0nXTsK CX0gZWxzZSB7CgkJJHRoZW51bWJlciA9ICRudW1iZXI7Cgl9CgoJJHRlbXBsYXRlID0gIjxp bWcgc3JjPVwiaHR0cDovLyIuJHByZWZzWydzaXRldXJsJ10uIi9maWxlcy9pbWFnZS5waHA/ c2l6ZT1bc2l6ZV0mYW1wO2ZpbGU9W2ltYWdlXVwiIGFsdD1cIiIuJGFsdC4iXCIgLz4iOwoJ JG1hZyA9IG5ldyBtYWdhemluZWxheW91dCgkd2lkdGgsJHBhZGRpbmcsJHRlbXBsYXRlKTsK CSRpbWdjb3VudD0wOwoKCWlmKCRjYXRlZ29yeSE9JycpCgl7CgkJJGltYWdlc2FyciA9IHds a19tcF9nZXRfaW1hZ2VzX2Zyb21fY2F0ZWdvcnkoJGNhdGVnb3J5LCAkdGhlbnVtYmVyLCAk c29ydCk7CgkJaWYoY291bnQoJGltYWdlc2Fycik+MCkKCQl7CgkJCWZvcmVhY2goJGltYWdl c2FyciBBUyAkaW1nKQoJCQl7CgkJCQkkd2Fsa2ltZ2ZuID0gJGltZ1snaWQnXS4kaW1nWydl eHQnXTsKCQkJCSR3YWxraW1ncGF0aCA9IGh1LiRwcmVmc1snaW1nX2RpciddLicvJy4kaW1n WydpZCddLiRpbWdbJ2V4dCddOwoJCQkJJG1hZy0+YWRkSW1hZ2UoJHdhbGtpbWdmbiwgJHdh bGtpbWdwYXRoKTsKCQkJCSRpbWdjb3VudCsrOwoJCQl9CgkJfQoJfQoJZWxzZSBpZighZW1w dHkoJHRoaXNhcnRpY2xlWydtYWdjYXRlZ29yeSddKSkKCXsKCQkkaW1hZ2VzYXJyID0gd2xr X21wX2dldF9pbWFnZXNfZnJvbV9jYXRlZ29yeSgkdGhpc2FydGljbGVbJ21hZ2NhdGVnb3J5 J10sICR0aGVudW1iZXIsICRzb3J0KTsKCQlpZihjb3VudCgkaW1hZ2VzYXJyKT4wKQoJCXsK CQkJZm9yZWFjaCgkaW1hZ2VzYXJyIEFTICRpbWcpCgkJCXsKCQkJCSR3YWxraW1nZm4gPSAk aW1nWydpZCddLiRpbWdbJ2V4dCddOwoJCQkJJHdhbGtpbWdwYXRoID0gaHUuJHByZWZzWydp bWdfZGlyJ10uJy8nLiRpbWdbJ2lkJ10uJGltZ1snZXh0J107CgkJCQkkbWFnLT5hZGRJbWFn ZSgkd2Fsa2ltZ2ZuLCAkd2Fsa2ltZ3BhdGgpOwoJCQkJJGltZ2NvdW50Kys7CgkJCX0KCQl9 Cgl9CgllbHNlIGlmKCFlbXB0eSgkaW1hZ2VzKSkKCXsKCQkkaW1hZ2VzYXJyID0gZXhwbG9k ZSgifCIsICRpbWFnZXMpOwoJCWlmKGNvdW50KCRpbWFnZXNhcnIpPjApCgkJewoJCQlmb3Jl YWNoKCRpbWFnZXNhcnIgQVMgJGltZykKCQkJewoJCQkJJHdhbGtpbWdmbiA9IHdsa19tcF9n ZXRfaW1hZ2UoJGltZyk7CgkJCQlpZihjb3VudCgkd2Fsa2ltZ2ZuKT4wKQoJCQkJewoJCQkJ CSR3YWxraW1ncGF0aCA9IGh1LiRwcmVmc1snaW1nX2RpciddLicvJy4kd2Fsa2ltZ2ZuOwoJ CQkJCSRtYWctPmFkZEltYWdlKCR3YWxraW1nZm4sICR3YWxraW1ncGF0aCk7CgkJCQkJJGlt Z2NvdW50Kys7CgkJCQl9CgkJCX0KCQl9Cgl9CgllbHNlCgl7CgkJaWYoIWVtcHR5KCR0aGlz YXJ0aWNsZVsnbWFnaW1hZ2VzJ10pKQoJCXsKCQkJJGltYWdlc2FyciA9IGV4cGxvZGUoInwi LCAkdGhpc2FydGljbGVbJ21hZ2ltYWdlcyddKTsKCQkJaWYoY291bnQoJGltYWdlc2Fycik+ MCkKCQkJewoJCQkJZm9yZWFjaCgkaW1hZ2VzYXJyIEFTICRpbWcpCgkJCQl7CgkJCQkJJHdh bGtpbWdmbiA9IHdsa19tcF9nZXRfaW1hZ2UoJGltZyk7CgkJCQkJaWYoY291bnQoJHdhbGtp bWdmbik+MCkKCQkJCQl7CgkJCQkJCSR3YWxraW1ncGF0aCA9IGh1LiRwcmVmc1snaW1nX2Rp ciddLicvJy4kd2Fsa2ltZ2ZuOwoJCQkJCQkkbWFnLT5hZGRJbWFnZSgkd2Fsa2ltZ2ZuLCAk d2Fsa2ltZ3BhdGgpOwoJCQkJCQkkaW1nY291bnQrKzsKCQkJCQl9CgkJCQl9CgkJCX0gZWxz ZSB7CgkJCQkkbXNnW10gPSAndHhwOndsa19tcCBFcnJvcjogTm8gaW1hZ2VzIGRlZmluZWQu IFVzZSB0aGUgYXR0cmlidXQgaW1hZ2VzIG9yIGEgY3VzdG9tLWZpZWxkIG5hbWVkIG1hZ2lt YWdlcyB0byBkZWZpbmUgaW1hZ2UgaWRzJzsKCQkJfQoJCX0KCQllbHNlCgkJewoJCQkkbXNn W10gPSAndHhwOndsa19tcCBFcnJvcjogTm8gaW1hZ2VzIGRlZmluZWQuIFVzZSB0aGUgYXR0 cmlidXQgaW1hZ2VzIG9yIGEgY3VzdG9tLWZpZWxkIG5hbWVkIG1hZ2ltYWdlcyB0byBkZWZp bmUgaW1hZ2UgaWRzJzsKCQl9Cgl9CgoJaWYoJGltZ2NvdW50IT0wKQoJewoJCSRjb21wbGV0 ZWQgPSAkbWFnLT5nZXRIdG1sKCk7CgkJcmV0dXJuICRjb21wbGV0ZWQ7Cgl9IGVsc2UgewoJ CXJldHVybiAnTm8gaW1hZ2VzIHJldHVybmVkLic7Cgl9Cn0KCi8vLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8JCQkJR2V0IEltYWdlCi8vLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgZnVuY3Rpb24gd2xrX21wX2dldF9pbWFnZSgk aWQpCiAgICB7CiAgICAJZ2xvYmFsICRpbWdfZGlyOwogICAgCSRycyA9IHNhZmVfcm93KCIq IiwgInR4cF9pbWFnZSIsICJpZD0nJGlkJyBsaW1pdCAxIik7CiAgICAJaWYoJHJzKQogICAg CXsKICAgIAkJZXh0cmFjdCgkcnMpOwogICAgCQkkb3V0ID0gJGlkLiRleHQ7CiAgICAJCXJl dHVybiAkb3V0OwogICAgCX0KICAgIH0KCiAgICBmdW5jdGlvbiB3bGtfbXBfZ2V0X2ltYWdl c19mcm9tX2NhdGVnb3J5KCRjYXRuYW1lLCAkdGhlbnVtLCAkYXNzb3J0KQogICAgewogICAg CWdsb2JhbCAkaW1nX2RpcjsKICAgIAkkcSA9ICJjYXRlZ29yeT0nJGNhdG5hbWUnIE9SREVS IEJZIGBkYXRlYCAkYXNzb3J0IGxpbWl0ICR0aGVudW0iOwogICAgCSRycyA9IHNhZmVfcm93 cygiaWQsIGV4dCIsICJ0eHBfaW1hZ2UiLCAkcSk7CiAgICAJaWYoJHJzKQogICAgCXsKICAg IAkJcmV0dXJuICRyczsKICAgIAl9CiAgICB9CgoiO3M6ODoiaGVscF9yYXciO3M6MzAwNToi aDEuIHdsa19tcAoKKiB2IDAuNSAtIFRoaXMgZml4ZXMgYSBidWcgaW4gc3BlY2lmeWluZyB0 aGUgaW1hZ2UgY2F0ZWdvcnkgdmlhIHRoZSB0YWcgcmF0aGVyIHRoYW4gdGhlIGN1c3RvbV9m aWVsZCAoYm90aCB3b3JrIG5vdykuIEFsc28gZGlkIGdlbmVyYWwgaG91c2VrZWVwaW5nIGFu ZCBjbGVhbnVwLiBZb3UgY2FuIG5vdyBzcGVjaWZ5IHRoZSBudW1iZXIgb2YgaW1hZ2VzIHRv IGFwcGVhciAod2hlbiB1c2luZyBjYXRlZ29yeSkgYnkgY3JlYXRpbmcgYSBjdXN0b20gZmll bGQgY2FsbCAibWFnbnVtIiBvciB1c2luZyB0aGUgYXR0cmlidXRlICJudW1iZXIiIHdpdGhp biB0aGUgdGFnLgoqIHYgMC40IC0gVGhpcyBhZGRzIGNhdGVnb3J5IHNlbGVjdGlvbiB0byB0 aGUgcGx1Z2luLgoqIHYgMC4zIC0gVGhpcyB2ZXJzaW9uIGlzIGEgbmFtZS1jaGFuZ2UgdmVy c2lvbiBvbmx5LgoKVGhpcyBwbHVnaW4gaXMgYW4gaW50ZWdyYXRpb24gb2YgdGhlIE1hZ2F6 aW5lIEZvcm1hdHRlZCBJbWFnZXMgYXMgc2VlbiBvbiBBTEEuCgpZb3UncmUgZ29pbmcgdG8g bmVlZCB0byBkb3dubG9hZCAidGhpcyB6aXAiOmh0dHA6Ly9kZXYuc2lnbmFsZmFkZS5jb20v dHhwL3dsa19tcF9pbWFnZWRvdHBocC56aXAgYW5kIHRoZW4gdXBsb2FkIGl0IHRvIHlvdXIg ImZpbGVzIiBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgcGx1Z2luLgoKaDIuIEluc3RhbGxhdGlv bgoKU2luY2UgeW91IGNhbiByZWFkIHRoaXMgaGVscCwgeW91IGhhdmUgaW5zdGFsbGVkIHRo ZSBwbHVnaW4gdG8gdHhwLgoKRGlkIHlvdSBhY3RpdmF0ZSBpdD8KCmgyLiBVc2FnZQoKUGxh Y2UgdGhlIEA8dHhwOndsa19tcCAvPkAgdGFnIGluIGFuIGFydGljbGUsIGZvcm0gb3IgcGFn ZS4KCmgyLiBBdHRyaWJ1dGVzCgoqICp3aWR0aCo6IHNwZWNpZnkgZW50aXJlIHdpZHRoIG9m IG1hZ2F6aW5lIGJveC4KKiAqcGFkZGluZyo6IHNwZWNpZnkgcGFkZGluZyBiZXR3ZWVuIGlt YWdlcwoqICphbHQqOiBzcGVjaWZ5IHllciBhbHQgdGFnIChJJ20ganVzdCBwdXR0aW5nIHRo aXMgaW4gdGhlcmUpCiogKm51bWJlcio6IHVzZSBvbmx5IGlmIHNwZWNpZnlpbmcgY2F0ZWdv cnksIGlzIHRoZSBudW1iZXIgb2YgaW1hZ2VzIHlvdSB3YW50IHJldHVybmVkLjxiciAvPihE ZWZhdWx0cyB0byAzKQoqICpzb3J0KjogdXNlIG9ubHkgaWYgc3BlY2lmeWluZyBjYXRlZ29y eSwgY2FuIGJlICdBU0MnLCAnREVTQycsIG9yICdSQU5EKCknLiAoRGVmYXVsdHMgdG8gJ1JB TkQoKScgLSBTb3J0IGlzIGJ5IGRhdGUgY29sIFtkYXRlIHVwbGFvZGVkXSkKCippbWFnZXMq OiBzcGVjaWZ5IHlvdXIgaW1hZ2VzIGJ5IGlkIGZyb20gdGhlIGltYWdlcyBsaXN0LiBzaG91 bGQgYmUgYSBsaXN0IG9mIG51bWJlcnMsIHBpcGUtZGVsaW1pdGVkIChFeC4gaW1hZ2VzID0g IjF8NXw4fDEyfDE2IiApCgpvci4uLi4uCgoqY2F0ZWdvcnkqIC0gc3BlY2lmeSBhIGNhdGVn b3J5IGZyb20gd2hpY2ggdG8gZHJhdyBpbWFnZXMgKGRyYXdzIHJhbmRvbWx5IGlzIHNvcnQg aXMgbm90IHNwZWNpZmllZCkuCgpUaGUgc2VsZWN0aW9uIHRpZXJzIGl0c2VsZiBsaWtlIHNv OgoKIyBDaGVja3MgdG8gc2VlIGlmIGEgY2F0ZWdvcnkgaXMgc3BlY2lmaWVkIGluIHRoZSB0 YWcgaXRzZWxmLCBpZiBub3QgZ29lcyBvbiB0by4uLgojIENoZWNrcyB0byBzZWUgaWYgYSBj YXRlZ29yeSB3YXMgc3BlY2lmaWVkIGluIGEgY3VzdG9tX2ZpZWxkIGNhbGxlZCAnbWFnY2F0 ZWdvcnknLCBpZiBub3QgZ29lcyBvbiB0by4uLi4KIyBDaGVja3MgdG8gc2VlIGlmIHRhZyBo YWQgYW4gYXR0cmlidXRlIGNhbGxlZCBpbWFnZXMgYW5kIGhhZCBpbWFnZSBpZHMgb3IgdXJp cyBzcGVjaWZpZWQsIGlmIG5vdCBnb2VzIG9uIHRvLi4uLgojIENoZWNrcyB0byBzZWUgaWYg dGhlIGN1c3RvbV9maWVsZCwgbWFnaW1hZ2VzIGhhZCBjb250ZW50IGFuZCBpZiB0aG9zZSB3 ZXJlIGltYWdlIHVyaXMgb3IgbnVtYmVycy4KIyBUaGVuLCBpZiB0aGUgY2F0ZWdvcnkgd2Fz IHNldCBjaGVja3MgdG8gc2VlIGlmIGEgbnVtYmVyIG9mIGltYWdlcyBpcyBzZXQgaW4gYSBj dXN0b21fZmllbGQgY2FsbGVkICdtYWdudW0nLi4uaWYgdGhhdCdzIG5vdCBmb3VuZC4uLi4K IyBUaGVuLCBjaGVja3MgdG8gc2VlIGlmIGEgbnVtYmVyIG9mIGltYWdlcyBpcyBzZXQgaW4g YSBwcm9wZXJ0eSBjYWxsZWQgJ251bWJlcicgaW4gdGhlIHRhZyBpdHNlbGYuLi4uLmlmIHRo YXQncyBub3QgZm91bmQuLi4uCiMgZGVmYXVsdHMgdG8gMyBpbWFnZXMgZnJvbSB0aGF0IGNh dGVnb3J5LgoKQ29tcGxldGUgRXhhbXBsZTogQDx0eHA6d2xrX21wIHdpZHRoPSI2MDAiIHBh ZGRpbmc9IjMiIGFsdD0ibWFnYXppbmUgaW1hZ2VzIiBpbWFnZXM9IjF8NXw2fDciIC8+QAoK aDIuIFB1dHRpbmcgdGhlIHRhZyBpbiBhIGZvcm0gbWVhbnMgdGhhdCBldmVyeSBhcnRpY2xl IHRyaWVzIHRvIGxvYWQgdGhpcyB1cC4gSG93IGRvIHlvdSBzcGVjaWZ5IGltYWdlcywgdGhl bj8KCkVhc3kgZW5vdWdoLiBHbyB0byAiQWRtaW4iIC0+ICJBZHZhbmNlZCBQcmVmZXJlbmNl cyIgYW5kIGNyZWF0ZSBhIGN1c3RvbSBmaWVsZCBjYWxsZWQgIm1hZ2ltYWdlcyIuIFRoZW4g d2hlbmV2ZXIgeW91IHdhbnQgdG8gc3BlY2lmeSBpbWFnZXMgZm9yIHlvdXIgYXJ0aWNsZSwg Y2xpY2sgdGhlICJBZHZhbmNlZCBPcHRpb25zIiBvbiB0aGUgbGVmdCBoYW5kIHNpZGUgb2Yg eW91ciBhcnRpY2xlIGNyZWF0aW9uIHBhZ2UgYW5kIGVudGVyIHRoZSBpbWFnZSBudW1iZXJz IHdpdGggdGhlIHBpcGUgY2hhcmFjdGVyIGJldHdlZW4gdGhlbS4gKEV4LiBpbWFnZXMgPSAx fDV8OHwxMnwxNiApCgpBbmQgZG9uJ3Qgd29ycnkgYWJvdXQgdXNpbmcgdXAgdG9vIG1hbnkg cmVzb3VyY2VzLCBpZiBubyBpbWFnZXMgYXJlIHNwZWNpZmllZCwgdGhpcyBwbHVnaW4gZG9l c24ndCB0cnkgYW5kIG91dHB1dCBhbnl0aGluZyEgU28geW91IGNhbiBoYXZlIHNvbWUgYXJ0 aWNsZXMgd2l0aCBpbWFnZXMgYW5kIHNvbWUgd2l0aG91dC4iO3M6MzoibWQ1IjtzOjMyOiJi MGExOWRiYTFjMmU1MjlhZGM4N2EzMzM1MDhjMTQ2YSI7czo4OiJjb21wcmVzcyI7YjowO30=