IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwojICBfICAgICBfX18gIF8gICBfICBfX19fICBfX19fICAgIF8gIF9fX19f CiMgIHwgfCAgIC8gXyBcfCBcIHwgfC8gX19ffC8gX19ffCAgLyBcfF8gICBffAojICB8IHwgIHwg fCB8IHwgIFx8IHwgfCAgX3wgfCAgICAgLyBfIFwgfCB8CiMgIHwgfF9ffCB8X3wgfCB8XCAgfCB8 X3wgfCB8X19fIC8gX19fIFx8IHwKIyAgfF9fX19fXF9fXy98X3wgXF98XF9fX198XF9fX18vXy8g ICBcX1xffAojCiMgcGhwU0ZQIC0gU2NoZWR1bGUgRmFjZWJvb2sgUG9zdHMgMS41LjYgUHJlLWF1 dGggU1FMIEluamVjdGlvbiAoMC1kYXkpCiMgV2Vic2l0ZSA6Cmh0dHA6Ly9jb2RlY2FueW9uLm5l dC9pdGVtL3BocHNmcC1zY2hlZHVsZS1mYWNlYm9vay1wb3N0cy81MTc3MzkzCiMgRXhwbG9pdCBB dXRob3IgOiBAdTB4IChQaWNoYXlhIE1vcmltb3RvKQojIFJlbGVhc2UgZGF0ZXMgOiBBcHJpbCAy LCAyMDE1CiMKIyBTcGVjaWFsIFRoYW5rcyB0byAyNjAwIFRoYWlsYW5kIGdyb3VwOgojIHhlbGVu b256LCBwZTN6LCBhbmlkZWFyLCB3aW5kb3dzOThzZSwgaWNoZWVybm9vbSwgcGVuZ3VpbmFybXkK IyBodHRwczovL3d3dy5mYWNlYm9vay5jb20vZ3JvdXBzLzI2MDBUaGFpbGFuZC8gLCBodHRwOi8v MjYwMC5pbi50aC8KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKClsrXSBEZXNjcmlwdGlvbgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KcGhwU0ZQ IOKAkyBpcyBhIFBsYXRmb3JtIHdoZXJlIHlvdSBjYW4gZWFzaWx5IG1hbmFnZSB5b3VyIHNjaGVk dWxpbmcgZm9yIGFsbAp5b3VyIChGYWNlYm9vaykgcGFnZXMgJiBncm91cHMgaW4gb25lIHBsYWNl LgpJdCBoZWxwcyB0byBzZW5kIG1lc3NhZ2VzLCBhZHMsIGV2ZW50cywgbmV3cyBhbmQgc28gb24u IHBocFNGUCBpcyBwcmV0dHkKcG9wdWxhciBtb3JlIHRoYW4gaXRzIHNhbGUgcmVjb3JkIHRoYW5r cyB0byBudWxsZWQgZ3JvdXAgKHVuZGVyZ3JvdW5kCldlYkFwcCBsaWNlbnNlIGNyYWNrZXJzKS4K ClsrXSBCYWNrZ3JvdW5kIDwzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpJIG1hbmFnZWQgdG8gdHJhY2sgZG93biBhIGdyb3VwIG9m IFZpZXRuYW0tYmFzZWQgRmFjZWJvb2sgc3BhbW1lciB3aGljaApwb3N0ZWQgYWRzIG9uIG1hbnkg RkIgZ3JvdXBzIEknbSBqb2luZWQuCkFuZCBlbmRlZCB1cCB3aXRoIGEgd2Vic2l0ZSB0aGF0IGlz IG1vZGlmaWVkIHZlcnNpb24gKGFsbCBwaHBTRlAgY3JlZGl0cwphcmUgcmVtb3ZlZCkgb2YgcGhw U0ZQIDEuNC4xLgpzbyBJIGRpZCBzb21lIG1hdGNoaW5nIGFuZCBmb3VuZCB0aGUgb3JpZ2luYWwg YXBwbGljYXRpb24gaXMgcGhwU0ZQLgoKR3Vlc3Mgd2hhdCBoYXBwZW5zIHdoZW4gc3BhbW1lciBt ZXNzIHVwIHdpdGggb2Zmc2VjIGd1eSA7KQoKWytdIEV4cGxvaXQKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZXJlIGFyZSBtYW55 IHBvc3NpYmxlIHdheXMgdG8gZG8gU1FMaSwgSSB3aWxsIGdvIHdpdGggZXJyb3ItYmFzZWQgd2hp Y2gKZW5hYmxlZCBieSBkZWZhdWx0IG9uIHBocFNGUCB4RAoKJCBjdXJsIGh0dHA6Ly9wYXRoLnRv LnBocHNmcC9pbmRleC5waHAvbG9naW4gLWIgImxvZ2luPTF8fHwxJyBvcgpleHRyYWN0dmFsdWUo cmFuZCgpLGNvbmNhdCgweDJlLHVzZXIoKSkpIG9yICcxfHx8MSIKCmluIGNhc2UgeW91IGRvbid0 IGtub3csIGZvciBmdXJ0aGVyIHF1ZXJpZXMgeW91IGhhdmUgdG8gY2hhbmdlICd1c2VyKCknIHRv CnNvbWV0aGluZyBlbHNlLCBlLmcuCgokIGN1cmwgaHR0cDovL3BhdGgudG8ucGhwc2ZwL2luZGV4 LnBocC9sb2dpbiAgLWIgImxvZ2luPTF8fHwxJyBvcgpleHRyYWN0dmFsdWUocmFuZCgpLGNvbmNh dCgweDJlLChzZWxlY3QgY29uY2F0X3dzKDB4M2EsdXNlcm5hbWUscGFzc3dvcmQpCmZyb20gdXNl cnMgbGltaXQgMSkpKSBvciAnMXx8fDIiCgpkb24ndCBmb3Jnb3QgdG8gZG8gbGVuZ3RoKCkvc3Vi c3RyKCkgc3R1ZmZzIGR1ZSB0byBsaW1pdGF0aW9uIG9mIDMyCmNoYXJhY3RlcnMgaW4gZXJyb3Ig bWVzc2FnZQoKClsrXSBQcm9vZi1vZi1Db25jZXB0Cj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQb0MgRW52aXJvbm1lbnQ6IFVidW50 dSAxNC4wNCwgUEhQIDUuNS45LCBBcGFjaGUgMi40LjcKCkdFVCAvaW5kZXgucGhwL2xvZ2luIEhU VFAvMS4xCkhvc3Q6IDE5Mi4xNjguMzMuMTAzClByb3h5LUNvbm5lY3Rpb246IGtlZXAtYWxpdmUK QWNjZXB0Ogp0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtx PTAuOSxpbWFnZS93ZWJwLCovKjtxPTAuOApBY2NlcHQtRW5jb2Rpbmc6IGd6aXAsIGRlZmxhdGUs IHNkY2gKQWNjZXB0LUxhbmd1YWdlOiBlbi1VUyxlbjtxPTAuOApDb29raWU6IGxvZ2luPTF8fHwx JyBvciBleHRyYWN0dmFsdWUocmFuZCgpLGNvbmNhdCgweDJlLChzZWxlY3QKY29uY2F0X3dzKDB4 M2EsdXNlcm5hbWUscGFzc3dvcmQpIGZyb20gdXNlcnMgbGltaXQgMSkpKSBvciAnMXx8fDIKCkhU VFAvMS4xIDUwMCBJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IKU2VydmVyOiBBcGFjaGUvMi40LjcgKFVi dW50dSkKRGF0ZTogVGh1LCAwMiBBcHIgMjAxNSAxMzoxNTowOCBHTVQKQ29udGVudC1UeXBlOiB0 ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgKQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQpTZXQtQ29va2ll OiBjaV9zZXNzaW9uPTxkZWR1Y3RlZD47IGV4cGlyZXM9U2F0LCAwMS1BcHItMjAxNyAxMzoxNTow OCBHTVQ7Ck1heC1BZ2U9NjMwNzIwMDA7IHBhdGg9LwpDb250ZW50LUxlbmd0aDogODM4Cgo8aHRt bD4KPGhlYWQ+Cjx0aXRsZT5EYXRhYmFzZSBFcnJvcjwvdGl0bGU+CjxzdHlsZSB0eXBlPSJ0ZXh0 L2NzcyI+Ci4uLi4KPGgxPkEgRGF0YWJhc2UgRXJyb3IgT2NjdXJyZWQ8L2gxPgogICAgICAgIDxw PkVycm9yIE51bWJlcjogMTEwNTwvcD48cD5YUEFUSCBzeW50YXggZXJyb3I6CidhZG1pbjpmMDI1 MGQ5YjM4Yzk3NDEyMjExOWFiZjgyNic8L3A+PHA+Ci4uLi4KCgpbK10gVnVsbmVyYWJpbGl0eSBB bmFseXNpcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KSSBoYXZlIGFuYWx5emVkIG9uIDEuNS42IChsYXRlc3QgdmVyc2lvbikgYW5k IDEuNC4xIChhIHBvcHVsYXIgZWRpdGlvbgpyZWxlYXNlZCBieSBudWxsZWQgZ3JvdXApClRoZSBi dWcgaXRzZWxmIGlzIHF1aXRlIGludGVyZXN0aW5nLi4gdGhlIGF1dGhvciBkaWQgd2VsbCBpbiBs b2dpbiBmdW5jdGlvbgpidXQgZmFpbGVkCnRvIHBhcmFtZXRlcml6ZWQvZXNjYXBlIFNRTCBxdWVy eSBpbiAncmVtZW1iZXIgbWUnIGZ1bmN0aW9uIGluCmF1dGhlbnRpY2F0aW9uIHBocmFzZS4KCjsg cGhwU0ZQIDEuNS42CkZpbGU6IGFwcGxpY2F0aW9uL21vZGVscy9hdXRoLnBocAogICAgZnVuY3Rp b24gY29va2llKCkKICAgIHsKICAgICAgICBpZihnZXRfY29va2llKCdsb2dpbicpKSA8LS0gaWYg J2xvZ2luJyBjb29raWUgaXMgc2V0dGVkCiAgICAgICAgewogICAgICAgICAgICBsaXN0KCRpZF91 c2VyLCAkcGFzc3dvcmQsICRhY2Nlc3MpID0gZXhwbG9kZSgifHx8IiwKZ2V0X2Nvb2tpZSgnbG9n aW4nKSk7IDwtLSBzcGxpdCBieSB8fHwKICAgICAgICAgICAgLy8gdGhlIG1hZ2ljIGhhcHBlbnMg aGVyZQogICAgICAgICAgICAkcXVzZXJzID0gJHRoaXMtPmRiLT5xdWVyeSgiU0VMRUNUIGlkIEZS T00gdXNlcnMgV0hFUkUKaWQ9JyIuJGlkX3VzZXIuIicgQU5EIHBhc3N3b3JkPSciLiRwYXNzd29y ZC4iJyIpOwoKOyBwaHBTRlAgMS40LjEsIHNhbWUgdGhpbmcgYnV0IGluIGRpZmZlcmVudCBmaWxl CkZpbGU6IGFwcGxpY2F0aW9uL2NvbnRyb2xsZXJzL2xvZ2luLnBocAogICAgcHVibGljIGZ1bmN0 aW9uIGluZGV4KCkKICAgIHsKICAgICAgICBpZihnZXRfY29va2llKCdsb2dpbicpKSA8LS0gaWYg J2xvZ2luJyBjb29raWUgaXMgc2V0dGVkCiAgICAgICAgewogICAgICAgICAgICBsaXN0KCRpZF91 c2VyLCAkcGFzc3dvcmQsICRhY2Nlc3MpID0gZXhwbG9kZSgifHx8IiwKZ2V0X2Nvb2tpZSgnbG9n aW4nKSk7IDwtLSBzcGxpdCBieSB8fHwKICAgICAgICAgICAgLy8gdGhlIG1hZ2ljIGhhcHBlbnMg aGVyZQogICAgICAgICAgICAkcXVzZXJzID0gJHRoaXMtPmRiLT5xdWVyeSgiU0VMRUNUIGlkIEZS T00gdXNlcnMgV0hFUkUKaWQ9JyIuJGlkX3VzZXIuIicgQU5EIHBhc3N3b3JkPSciLiRwYXNzd29y ZC4iJyIpOwoKWytdIFdhcm5pbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClBsZWFzZSBETyBOT1QgR29vZ2xlIGRvcmsgd2l0aCBp bnRpdGxlOiJwaHBTRlAgLSBTY2hlZHVsZSBmYWNlYm9vayBwb3N0cyB2LiIKYmVjYXVzZSB0aGVy ZSBhcmUgdG9uIG9mIEZhY2Vib29rIGFjY2Vzc190b2tlbiBpbiBwaHBTRlAgZGF0YWJhc2Ugd2hp Y2ggY2FuCmJlIHVzZWQgZm9yIGhpamFjayBtYW55IEZhY2Vib29rIGFjY291bnRzID18CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpTZW50IHRocm91Z2gg dGhlIEZ1bGwgRGlzY2xvc3VyZSBtYWlsaW5nIGxpc3QKaHR0cHM6Ly9ubWFwLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2Z1bGxkaXNjbG9zdXJlCldlYiBBcmNoaXZlcyAmIFJTUzogaHR0cDovL3NlY2xp c3RzLm9yZy9mdWxsZGlzY2xvc3VyZS8=