Lyogdmk6c2V0IHRzPTggc3RzPTQgc3c9NCBub2V0OgogKgogKiBWSU0gLSBWaSBJTXByb3ZlZAlieSBCcmFtIE1vb2xlbmFhcgogKgogKiBEbyAiOmhlbHAgdWdhbmRhIiAgaW4gVmltIHRvIHJlYWQgY29weWluZyBhbmQgdXNhZ2UgY29uZGl0aW9ucy4KICogRG8gIjpoZWxwIGNyZWRpdHMiIGluIFZpbSB0byBzZWUgYSBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQuCiAqIFNlZSBSRUFETUUudHh0IGZvciBhbiBvdmVydmlldyBvZiB0aGUgVmltIHNvdXJjZSBjb2RlLgogKi8KCi8qCiAqIGRpZ3JhcGguYzogY29kZSBmb3IgZGlncmFwaHMKICovCgojaW5jbHVkZSAidmltLmgiCgojaWYgZGVmaW5lZChGRUFUX0RJR1JBUEhTKSB8fCBkZWZpbmVkKFBST1RPKQoKI2lmZGVmIEZFQVRfTUJZVEUKdHlwZWRlZiBpbnQgcmVzdWx0X1Q7CiNlbHNlCnR5cGVkZWYgY2hhcl91IHJlc3VsdF9UOwojZW5kaWYKCnR5cGVkZWYgc3RydWN0IGRpZ3JhcGgKewogICAgY2hhcl91CWNoYXIxOwogICAgY2hhcl91CWNoYXIyOwogICAgcmVzdWx0X1QJcmVzdWx0Owp9IGRpZ3JfVDsKCnN0YXRpYyB2b2lkIHByaW50ZGlncmFwaChkaWdyX1QgKmRwLCByZXN1bHRfVCAqcHJldmlvdXMpOwoKLyogZGlncmFwaHMgYWRkZWQgYnkgdGhlIHVzZXIgKi8Kc3RhdGljIGdhcnJheV9UCXVzZXJfZGlncmFwaHMgPSB7MCwgMCwgKGludClzaXplb2YoZGlncl9UKSwgMTAsIE5VTEx9OwoKLyoKICogTm90ZTogQ2hhcmFjdGVycyBtYXJrZWQgd2l0aCBYWCBhcmUgbm90IGluY2x1ZGVkIGxpdGVyYWxseSwgYmVjYXVzZSBzb21lCiAqIGNvbXBpbGVycyBjYW5ub3QgaGFuZGxlIHRoZW0gKEFtaWdhIFNBUy9DIGlzIHRoZSBtb3N0IHBpY2t5IG9uZSkuCiAqLwpzdGF0aWMgZGlncl9UIGRpZ3JhcGhkZWZhdWx0W10gPQojaWZkZWYgX19NSU5UX18KCgkvKgoJICogQVRBUkkgZGlncmFwaHMKCSAqLwogICAgICAge3snQycsICcsJywgMTI4fSwJLyogfkAgWFggKi8KCXsndScsICciJywgMTI5fSwJLyoggSAqLwoJeydlJywgJ1wnJywgMTMwfSwJLyoggiAqLwoJeydhJywgJ14nLCAxMzF9LAkvKiCDICovCgl7J2EnLCAnIicsIDEzMn0sCS8qIIQgKi8KCXsnYScsICdgJywgMTMzfSwJLyoghSAqLwoJeydhJywgJ0AnLCAxMzR9LAkvKiCGICovCgl7J2MnLCAnLCcsIDEzNX0sCS8qIH5HIFhYICovCgl7J2UnLCAnXicsIDEzNn0sCS8qIH5IIFhYICovCgl7J2UnLCAnIicsIDEzN30sCS8qIIkgKi8KCXsnZScsICdgJywgMTM4fSwJLyogiiAqLwoJeydpJywgJyInLCAxMzl9LAkvKiCLICovCgl7J2knLCAnXicsIDE0MH0sCS8qIIwgKi8KCXsnaScsICdgJywgMTQxfSwJLyogjSAqLwoJeydBJywgJyInLCAxNDJ9LAkvKiCOICovCgl7J0EnLCAnQCcsIDE0M30sCS8qII8gKi8KCXsnRScsICdcJycsIDE0NH0sCS8qIJAgKi8KCXsnYScsICdlJywgMTQ1fSwJLyogkSAqLwoJeydBJywgJ0UnLCAxNDZ9LAkvKiCSICovCgl7J28nLCAnXicsIDE0N30sCS8qIJMgKi8KCXsnbycsICciJywgMTQ4fSwJLyoglCAqLwoJeydvJywgJ2AnLCAxNDl9LAkvKiCVICovCgl7J3UnLCAnXicsIDE1MH0sCS8qIJYgKi8KCXsndScsICdgJywgMTUxfSwJLyoglyAqLwoJeyd5JywgJyInLCAxNTJ9LAkvKiCYICovCgl7J08nLCAnIicsIDE1M30sCS8qIJkgKi8KCXsnVScsICciJywgMTU0fSwJLyogmiAqLwoJeydjJywgJ3wnLCAxNTV9LAkvKiCbICovCgl7JyQnLCAnJCcsIDE1Nn0sCS8qIJwgKi8KCXsnWScsICctJywgMTU3fSwJLyogfl0gWFggKi8KCXsncycsICdzJywgMTU4fSwJLyogniAqLwoJeydmJywgJ2YnLCAxNTl9LAkvKiCfICovCgl7J2EnLCAnXCcnLCAxNjB9LAkvKiCgICovCgl7J2knLCAnXCcnLCAxNjF9LAkvKiChICovCgl7J28nLCAnXCcnLCAxNjJ9LAkvKiCiICovCgl7J3UnLCAnXCcnLCAxNjN9LAkvKiCjICovCgl7J24nLCAnficsIDE2NH0sCS8qIKQgKi8KCXsnTicsICd+JywgMTY1fSwJLyogpSAqLwoJeydhJywgJ2EnLCAxNjZ9LAkvKiCmICovCgl7J28nLCAnbycsIDE2N30sCS8qIKcgKi8KCXsnficsICc/JywgMTY4fSwJLyogqCAqLwoJeyctJywgJ2EnLCAxNjl9LAkvKiCpICovCgl7J2EnLCAnLScsIDE3MH0sCS8qIKogKi8KCXsnMScsICcyJywgMTcxfSwJLyogqyAqLwoJeycxJywgJzQnLCAxNzJ9LAkvKiCsICovCgl7J34nLCAnIScsIDE3M30sCS8qIK0gKi8KCXsnPCcsICc8JywgMTc0fSwJLyogriAqLwoJeyc+JywgJz4nLCAxNzV9LAkvKiCvICovCgl7J2onLCAndScsIDIzMH0sCS8qIOYgKi8KCXsnbycsICcvJywgMjM3fSwJLyog7SAqLwoJeycrJywgJy0nLCAyNDF9LAkvKiDxICovCgl7Jz4nLCAnPScsIDI0Mn0sCS8qIPIgKi8KCXsnPCcsICc9JywgMjQzfSwJLyog8yAqLwoJeyc6JywgJy0nLCAyNDZ9LAkvKiD2ICovCgl7J34nLCAnficsIDI0N30sCS8qIPcgKi8KCXsnficsICdvJywgMjQ4fSwJLyog+CAqLwoJeycyJywgJzInLCAyNTN9LAkvKiD9ICovCgl7TlVMLCBOVUwsIE5VTH0KCX07CgojZWxzZQkvKiAhX19NSU5UX18gKi8KIyBpZmRlZiBIUFVYX0RJR1JBUEhTCgoJLyoKCSAqIGRpZmZlcmVudCBIUFVYIGRpZ3JhcGhzCgkgKi8KICAgICAgIHt7J0EnLCAnYCcsIDE2MX0sCS8qIKEgKi8KCXsnQScsICdeJywgMTYyfSwJLyogoiAqLwoJeydFJywgJ2AnLCAxNjN9LAkvKiCjICovCgl7J0UnLCAnXicsIDE2NH0sCS8qIKQgKi8KCXsnRScsICciJywgMTY1fSwJLyogpSAqLwoJeydJJywgJ14nLCAxNjZ9LAkvKiCmICovCgl7J0knLCAnIicsIDE2N30sCS8qIKcgKi8KCXsnXCcnLCAnXCcnLCAxNjh9LAkvKiCoICovCgl7J2AnLCAnYCcsIDE2OX0sCS8qIKkgKi8KCXsnXicsICdeJywgMTcwfSwJLyogqiAqLwoJeyciJywgJyInLCAxNzF9LAkvKiCrICovCgl7J34nLCAnficsIDE3Mn0sCS8qIKwgKi8KCXsnVScsICdgJywgMTczfSwJLyogrSAqLwoJeydVJywgJ14nLCAxNzR9LAkvKiCuICovCgl7J0wnLCAnPScsIDE3NX0sCS8qIK8gKi8KCXsnficsICdfJywgMTc2fSwJLyogsCAqLwoJeydZJywgJ1wnJywgMTc3fSwJLyogsSAqLwoJeyd5JywgJ1wnJywgMTc4fSwJLyogsiAqLwoJeyd+JywgJ28nLCAxNzl9LAkvKiCzICovCgl7J0MnLCAnLCcsIDE4MH0sCS8qILQgKi8KCXsnYycsICcsJywgMTgxfSwJLyogtSAqLwoJeydOJywgJ34nLCAxODJ9LAkvKiC2ICovCgl7J24nLCAnficsIDE4M30sCS8qILcgKi8KCXsnficsICchJywgMTg0fSwJLyoguCAqLwoJeyd+JywgJz8nLCAxODV9LAkvKiC5ICovCgl7J28nLCAneCcsIDE4Nn0sCS8qILogKi8KCXsnTCcsICctJywgMTg3fSwJLyoguyAqLwoJeydZJywgJz0nLCAxODh9LAkvKiC8ICovCgl7J3AnLCAncCcsIDE4OX0sCS8qIL0gKi8KCXsnZicsICdsJywgMTkwfSwJLyogviAqLwoJeydjJywgJ3wnLCAxOTF9LAkvKiC/ICovCgl7J2EnLCAnXicsIDE5Mn0sCS8qIMAgKi8KCXsnZScsICdeJywgMTkzfSwJLyogwSAqLwoJeydvJywgJ14nLCAxOTR9LAkvKiDCICovCgl7J3UnLCAnXicsIDE5NX0sCS8qIMMgKi8KCXsnYScsICdcJycsIDE5Nn0sCS8qIMQgKi8KCXsnZScsICdcJycsIDE5N30sCS8qIMUgKi8KCXsnbycsICdcJycsIDE5OH0sCS8qIMYgKi8KCXsndScsICdcJycsIDE5OX0sCS8qIMcgKi8KCXsnYScsICdgJywgMjAwfSwJLyogyCAqLwoJeydlJywgJ2AnLCAyMDF9LAkvKiDJICovCgl7J28nLCAnYCcsIDIwMn0sCS8qIMogKi8KCXsndScsICdgJywgMjAzfSwJLyogyyAqLwoJeydhJywgJyInLCAyMDR9LAkvKiDMICovCgl7J2UnLCAnIicsIDIwNX0sCS8qIM0gKi8KCXsnbycsICciJywgMjA2fSwJLyogziAqLwoJeyd1JywgJyInLCAyMDd9LAkvKiDPICovCgl7J0EnLCAnbycsIDIwOH0sCS8qINAgKi8KCXsnaScsICdeJywgMjA5fSwJLyog0SAqLwoJeydPJywgJy8nLCAyMTB9LAkvKiDSICovCgl7J0EnLCAnRScsIDIxMX0sCS8qINMgKi8KCXsnYScsICdvJywgMjEyfSwJLyog1CAqLwoJeydpJywgJ1wnJywgMjEzfSwJLyog1SAqLwoJeydvJywgJy8nLCAyMTR9LAkvKiDWICovCgl7J2EnLCAnZScsIDIxNX0sCS8qINcgKi8KCXsnQScsICciJywgMjE2fSwJLyog2CAqLwoJeydpJywgJ2AnLCAyMTd9LAkvKiDZICovCgl7J08nLCAnIicsIDIxOH0sCS8qINogKi8KCXsnVScsICciJywgMjE5fSwJLyog2yAqLwoJeydFJywgJ1wnJywgMjIwfSwJLyog3CAqLwoJeydpJywgJyInLCAyMjF9LAkvKiDdICovCgl7J3MnLCAncycsIDIyMn0sCS8qIN4gKi8KCXsnTycsICdeJywgMjIzfSwJLyog3yAqLwoJeydBJywgJ1wnJywgMjI0fSwJLyog4CAqLwoJeydBJywgJ34nLCAyMjV9LAkvKiDhICovCgl7J2EnLCAnficsIDIyNn0sCS8qIOIgKi8KCXsnRCcsICctJywgMjI3fSwJLyog4yAqLwoJeydkJywgJy0nLCAyMjh9LAkvKiDkICovCgl7J0knLCAnXCcnLCAyMjl9LAkvKiDlICovCgl7J0knLCAnYCcsIDIzMH0sCS8qIOYgKi8KCXsnTycsICdcJycsIDIzMX0sCS8qIOcgKi8KCXsnTycsICdgJywgMjMyfSwJLyog6CAqLwoJeydPJywgJ34nLCAyMzN9LAkvKiDpICovCgl7J28nLCAnficsIDIzNH0sCS8qIOogKi8KCXsnUycsICd+JywgMjM1fSwJLyog6yAqLwoJeydzJywgJ34nLCAyMzZ9LAkvKiDsICovCgl7J1UnLCAnXCcnLCAyMzd9LAkvKiDtICovCgl7J1knLCAnIicsIDIzOH0sCS8qIO4gKi8KCXsneScsICciJywgMjM5fSwJLyog7yAqLwoJeydwJywgJy0nLCAyNDB9LAkvKiDwICovCgl7J3AnLCAnficsIDI0MX0sCS8qIPEgKi8KCXsnficsICcuJywgMjQyfSwJLyog8iAqLwoJeydqJywgJ3UnLCAyNDN9LAkvKiDzICovCgl7J1AnLCAncCcsIDI0NH0sCS8qIPQgKi8KCXsnMycsICc0JywgMjQ1fSwJLyog9SAqLwoJeyctJywgJy0nLCAyNDZ9LAkvKiD2ICovCgl7JzEnLCAnNCcsIDI0N30sCS8qIPcgKi8KCXsnMScsICcyJywgMjQ4fSwJLyog+CAqLwoJeydhJywgJ18nLCAyNDl9LAkvKiD5ICovCgl7J28nLCAnXycsIDI1MH0sCS8qIPogKi8KCXsnPCcsICc8JywgMjUxfSwJLyog+yAqLwoJeyd4JywgJ3gnLCAyNTJ9LAkvKiD8ICovCgl7Jz4nLCAnPicsIDI1M30sCS8qIP0gKi8KCXsnKycsICctJywgMjU0fSwJLyog/iAqLwoJeyduJywgJ3UnLCAyNTV9LAkvKiB4IFhYICovCgl7TlVMLCBOVUwsIE5VTH0KCX07CgojIGVsc2UJLyogIUhQVVhfRElHUkFQSFMgKi8KCiMgIGlmZGVmIEVCQ0RJQwoKCS8qCgkgKiBFQkNESUMgLSBJU08gZGlncmFwaHMKCSAqIFRPRE86IEVCQ0RJQyBUYWJsZSBpcyBDb2RlLVBhZ2UgMTA0NwoJICovCiAgICAgICB7eydhJywgJ14nLCAgICA2Nn0sCS8qIOIgKi8KCXsnYScsICciJywgICAgNjd9LAkvKiDkICovCgl7J2EnLCAnYCcsICAgIDY4fSwJLyog4CAqLwoJeydhJywgJ1wnJywgICA2OX0sCS8qIOEgKi8KCXsnYScsICd+JywgICAgNzB9LAkvKiDjICovCgl7J2EnLCAnQCcsICAgIDcxfSwJLyog5SAqLwoJeydhJywgJ2EnLCAgICA3MX0sCS8qIOUgKi8KCXsnYycsICcsJywgICAgNzJ9LAkvKiDnICovCgl7J24nLCAnficsICAgIDczfSwJLyog8SAqLwoJeydjJywgJ3wnLCAgICA3NH0sCS8qIKIgKi8KCXsnZScsICdcJycsICAgODF9LAkvKiDpICovCgl7J2UnLCAnXicsICAgIDgyfSwJLyog6iAqLwoJeydlJywgJyInLCAgICA4M30sCS8qIOsgKi8KCXsnZScsICdgJywgICAgODR9LAkvKiDoICovCgl7J2knLCAnXCcnLCAgIDg1fSwJLyog7SAqLwoJeydpJywgJ14nLCAgICA4Nn0sCS8qIO4gKi8KCXsnaScsICciJywgICAgODd9LAkvKiDvICovCgl7J2knLCAnYCcsICAgIDg4fSwJLyog7CAqLwoJeydzJywgJ3MnLCAgICA4OX0sCS8qIN8gKi8KCXsnQScsICdeJywgICAgOTh9LAkvKiDCICovCgl7J0EnLCAnIicsICAgIDk5fSwJLyogxCAqLwoJeydBJywgJ2AnLCAgIDEwMH0sCS8qIMAgKi8KCXsnQScsICdcJycsICAxMDF9LAkvKiDBICovCgl7J0EnLCAnficsICAgMTAyfSwJLyogwyAqLwoJeydBJywgJ0AnLCAgIDEwM30sCS8qIMUgKi8KCXsnQScsICdBJywgICAxMDN9LAkvKiDFICovCgl7J0MnLCAnLCcsICAgMTA0fSwJLyogxyAqLwoJeydOJywgJ34nLCAgIDEwNX0sCS8qINEgKi8KCXsnfCcsICd8JywgICAxMDZ9LAkvKiCmICovCgl7J28nLCAnLycsICAgMTEyfSwJLyog+CAqLwoJeydFJywgJ1wnJywgIDExM30sCS8qIMkgKi8KCXsnRScsICdeJywgICAxMTR9LAkvKiDKICovCgl7J0UnLCAnIicsICAgMTE1fSwJLyogyyAqLwoJeydFJywgJ2AnLCAgIDExNn0sCS8qIMggKi8KCXsnSScsICdcJycsICAxMTd9LAkvKiDNICovCgl7J0knLCAnXicsICAgMTE4fSwJLyogziAqLwoJeydJJywgJyInLCAgIDExOX0sCS8qIM8gKi8KCXsnSScsICdgJywgICAxMjB9LAkvKiDMICovCgl7J08nLCAnLycsICAgMTI4fSwJLyogMC8gWFggKi8KCXsnPCcsICc8JywgICAxMzh9LAkvKiCrICovCgl7Jz4nLCAnPicsICAgMTM5fSwJLyoguyAqLwoJeydkJywgJy0nLCAgIDE0MH0sCS8qIPAgKi8KCXsneScsICdcJycsICAxNDF9LAkvKiD9ICovCgl7J2knLCAncCcsICAgMTQyfSwJLyog/iAqLwoJeycrJywgJy0nLCAgIDE0M30sCS8qILEgKi8KCXsnficsICdvJywgICAxNDR9LAkvKiCwICovCgl7J2EnLCAnLScsICAgMTU0fSwJLyogqiAqLwoJeydvJywgJy0nLCAgIDE1NX0sCS8qILogKi8KCXsnYScsICdlJywgICAxNTZ9LAkvKiDmICovCgl7JywnLCAnLCcsICAgMTU3fSwJLyogLCBYWCAqLwoJeydBJywgJ0UnLCAgIDE1OH0sCS8qIMYgKi8KCXsnbycsICd4JywgICAxNTl9LAkvKiCkIC0gY3VycmVuY3kgc3ltYm9sIGluIElTTyA4ODU5LTEgKi8KCXsnZScsICc9JywgICAxNTl9LAkvKiCkIC0gZXVybyBzeW1ib2wgaW4gSVNPIDg4NTktMTUgKi8KCXsnRScsICd1JywgICAxNTl9LAkvKiCkIC0gZXVybyBzeW1ib2wgaW4gSVNPIDg4NTktMTUgKi8KCXsnaicsICd1JywgICAxNjB9LAkvKiC1ICovCgl7J3knLCAnIicsICAgMTY3fSwJLyogeCBYWCAqLwoJeyd+JywgJyEnLCAgIDE3MH0sCS8qIKEgKi8KCXsnficsICc/JywgICAxNzF9LAkvKiC/ICovCgl7J0QnLCAnLScsICAgMTcyfSwJLyog0CAqLwoJeydJJywgJ3AnLCAgIDE3NH0sCS8qIN4gKi8KCXsncicsICdPJywgICAxNzV9LAkvKiCuICovCgl7Jy0nLCAnLCcsICAgMTc2fSwJLyogrCAqLwoJeyckJywgJyQnLCAgIDE3N30sCS8qIKMgKi8KCXsnWScsICctJywgICAxNzh9LAkvKiClICovCgl7J34nLCAnLicsICAgMTc5fSwJLyogtyAqLwoJeydjJywgJ08nLCAgIDE4MH0sCS8qIKkgKi8KCXsncCcsICdhJywgICAxODF9LAkvKiCnICovCgl7J3AnLCAncCcsICAgMTgyfSwJLyogtiAqLwoJeycxJywgJzQnLCAgIDE4M30sCS8qILwgKi8KCXsnMScsICcyJywgICAxODR9LAkvKiC9ICovCgl7JzMnLCAnNCcsICAgMTg1fSwJLyogviAqLwoJeydZJywgJ1wnJywgIDE4Nn0sCS8qIN0gKi8KCXsnIicsICciJywgICAxODd9LAkvKiCoICovCgl7Jy0nLCAnPScsICAgMTg4fSwJLyogryAqLwoJeydcJycsICdcJycsIDE5MH0sCS8qILQgKi8KCXsnTycsICdFJywgICAxOTF9LAkvKiDXIC0gT0UgaW4gSVNPIDg4NTktMTUgKi8KCXsnLycsICdcXCcsICAxOTF9LAkvKiDXIC0gbXVsdGlwbGljYXRpb24gc3ltYm9sIGluIElTTyA4ODU5LTEgKi8KCXsnLScsICctJywgICAyMDJ9LAkvKiCtICovCgl7J28nLCAnXicsICAgMjAzfSwJLyog9CAqLwoJeydvJywgJyInLCAgIDIwNH0sCS8qIPYgKi8KCXsnbycsICdgJywgICAyMDV9LAkvKiDyICovCgl7J28nLCAnXCcnLCAgMjA2fSwJLyog8yAqLwoJeydvJywgJ34nLCAgIDIwN30sCS8qIPUgKi8KCXsnMScsICcxJywgICAyMTh9LAkvKiC5ICovCgl7J3UnLCAnXicsICAgMjE5fSwJLyog+yAqLwoJeyd1JywgJyInLCAgIDIyMH0sCS8qIPwgKi8KCXsndScsICdgJywgICAyMjF9LAkvKiD5ICovCgl7J3UnLCAnXCcnLCAgMjIyfSwJLyog+iAqLwoJeyc6JywgJy0nLCAgIDIyNX0sCS8qIPcgLSBkaXZpc2lvbiBzeW1ib2wgaW4gSVNPIDg4NTktMSAqLwoJeydvJywgJ2UnLCAgIDIyNX0sCS8qIPcgLSBvZSBpbiBJU08gODg1OS0xNSAqLwoJeycyJywgJzInLCAgIDIzNH0sCS8qILIgKi8KCXsnTycsICdeJywgICAyMzV9LAkvKiDUICovCgl7J08nLCAnIicsICAgMjM2fSwJLyog1iAqLwoJeydPJywgJ2AnLCAgIDIzN30sCS8qINIgKi8KCXsnTycsICdcJycsICAyMzh9LAkvKiDTICovCgl7J08nLCAnficsICAgMjM5fSwJLyog1SAqLwoJeyczJywgJzMnLCAgIDI1MH0sCS8qILMgKi8KCXsnVScsICdeJywgICAyNTF9LAkvKiDbICovCgl7J1UnLCAnIicsICAgMjUyfSwJLyog3CAqLwoJeydVJywgJ2AnLCAgIDI1M30sCS8qINkgKi8KCXsnVScsICdcJycsICAyNTR9LAkvKiDaICovCgl7TlVMLCBOVUwsIE5VTH0KCX07CgojICBlbHNlCiMgICBpZiBkZWZpbmVkKE1BQ09TX1gpICYmICFkZWZpbmVkKEZFQVRfTUJZVEUpCgoJLyoKCSAqIE1hY2ludG9zaCBkaWdyYXBocwoJICovCiAgICAgICB7eydhJywgJ3QnLCA2NH0sCQkvKiBAICovCgl7J0EnLCAnIicsIDEyOH0sCS8qIH5AIFhYICovCgl7J0EnLCAnbycsIDEyOX0sCS8qIMUgKi8KCXsnQycsICcsJywgMTMwfSwJLyogxyAqLwoJeydFJywgJ1wnJywgMTMxfSwJLyogySAqLwoJeydOJywgJ34nLCAxMzJ9LAkvKiDRICovCgl7J08nLCAnIicsIDEzM30sCS8qINYgKi8KCXsnVScsICciJywgMTM0fSwJLyog3CAqLwoJeydhJywgJ1wnJywgMTM1fSwJLyogfkcgWFggKi8KCXsnYScsICdgJywgMTM2fSwJLyogfkggWFggKi8KCXsnYScsICdeJywgMTM3fSwJLyog4iAqLwoJeydhJywgJyInLCAxMzh9LAkvKiDkICovCgl7J2EnLCAnficsIDEzOX0sCS8qIOMgKi8KCXsnYScsICdvJywgMTQwfSwJLyog5SAqLwoJeydjJywgJywnLCAxNDF9LAkvKiDnICovCgl7J2UnLCAnXCcnLCAxNDJ9LAkvKiDpICovCgl7J2UnLCAnYCcsIDE0M30sCS8qIOggKi8KCXsnZScsICdeJywgMTQ0fSwJLyog6iAqLwoJeydlJywgJyInLCAxNDV9LAkvKiDrICovCgl7J2knLCAnXCcnLCAxNDZ9LAkvKiDtICovCgl7J2knLCAnYCcsIDE0N30sCS8qIOwgKi8KCXsnaScsICdeJywgMTQ4fSwJLyog7iAqLwoJeydpJywgJyInLCAxNDl9LAkvKiDvICovCgl7J24nLCAnficsIDE1MH0sCS8qIPEgKi8KCXsnbycsICdcJycsIDE1MX0sCS8qIPMgKi8KCXsnbycsICdgJywgMTUyfSwJLyog8iAqLwoJeydvJywgJ14nLCAxNTN9LAkvKiD0ICovCgl7J28nLCAnIicsIDE1NH0sCS8qIPYgKi8KCXsnbycsICd+JywgMTU1fSwJLyogbyAqLwoJeyd1JywgJ1wnJywgMTU2fSwJLyog+iAqLwoJeyd1JywgJ2AnLCAxNTd9LAkvKiB+XSBYWCAqLwoJeyd1JywgJ14nLCAxNTh9LAkvKiD7ICovCgl7J3UnLCAnIicsIDE1OX0sCS8qIPwgKi8KCXsnKycsICdfJywgMTYwfSwJLyog3SAqLwoJeyd+JywgJ28nLCAxNjF9LAkvKiCwICovCgl7J2MnLCAnfCcsIDE2Mn0sCS8qIKIgKi8KCXsnJCcsICckJywgMTYzfSwJLyogoyAqLwoJeydwJywgJ2EnLCAxNjR9LAkvKiCnICovCgl7Jy4nLCAnLicsIDE2NX0sCS8qICogKi8KCXsnUCcsICdQJywgMTY2fSwJLyogtiAqLwoJeydzJywgJ3MnLCAxNjd9LAkvKiDfICovCgl7J3InLCAnTycsIDE2OH0sCS8qIK4gKi8KCXsnYycsICdPJywgMTY5fSwJLyogqSAqLwoJeydUJywgJ00nLCAxNzB9LAkvKiCBICovCgl7Jz0nLCAnLycsIDE3M30sCS8qIIIgKi8KCXsnQScsICdFJywgMTc0fSwJLyogxiAqLwoJeydPJywgJy8nLCAxNzV9LAkvKiDYICovCgl7JzAnLCAnMCcsIDE3Nn0sCS8qIIMgKi8KCXsnKycsICctJywgMTc3fSwJLyogsSAqLwoJeyc8JywgJz0nLCAxNzh9LAkvKiC+ICovCgl7Jz4nLCAnPScsIDE3OX0sCS8qIIQgKi8KCXsnWScsICctJywgMTgwfSwJLyogpSAqLwoJeydqJywgJ3UnLCAxODF9LAkvKiC1ICovCgl7J20nLCAndScsIDE4MX0sCS8qILUgKi8KCXsnZCcsICdkJywgMTgyfSwJLyogjyAqLwoJeydTJywgJ1MnLCAxODN9LAkvKiCFICovCgl7J1MnLCAnSScsIDE4M30sCS8qIIUgKi8KCXsnUCcsICdJJywgMTg0fSwJLyogvSAqLwoJeydwJywgJ2knLCAxODV9LAkvKiC8ICovCgl7J0knLCAnSScsIDE4Nn0sCS8qIIYgKi8KCXsnYScsICctJywgMTg3fSwJLyoguyAqLwoJeydvJywgJy0nLCAxODh9LAkvKiC6ICovCgl7J08nLCAnTScsIDE4OX0sCS8qIL0gKi8KCXsnYScsICdlJywgMTkwfSwJLyog5iAqLwoJeydvJywgJy8nLCAxOTF9LAkvKiD4ICovCgl7J34nLCAnPycsIDE5Mn0sCS8qIL8gKi8KCXsnficsICchJywgMTkzfSwJLyogoSAqLwoJeyctJywgJywnLCAxOTR9LAkvKiCsICovCgl7J3YnLCAnLScsIDE5NX0sCS8qIH5IIFhYICovCgl7J2YnLCAnLScsIDE5Nn0sCS8qIJ8gKi8KCXsnficsICd+JywgMTk3fSwJLyogiSAqLwoJeydEJywgJ0UnLCAxOTh9LAkvKiCQICovCgl7JzwnLCAnPCcsIDE5OX0sCS8qIKsgKi8KCXsnPicsICc+JywgMjAwfSwJLyoguyAqLwoJeycuJywgJzonLCAyMDF9LAkvKiCKICovCgl7J0EnLCAnYCcsIDIwM30sCS8qIMAgKi8KCXsnQScsICd+JywgMjA0fSwJLyogwyAqLwoJeydPJywgJ34nLCAyMDV9LAkvKiDVICovCgl7J08nLCAnRScsIDIwNn0sCS8qIJEgKi8KCXsnbycsICdlJywgMjA3fSwJLyogpiAqLwoJeyctJywgJy4nLCAyMDh9LAkvKiAtICovCgl7Jy0nLCAnLScsIDIwOX0sCS8qIC0gKi8KCXsnYCcsICdgJywgMjEwfSwJLyogIiAqLwoJeydcJycsICdcJycsIDIxMX0sCS8qICIgKi8KCXsnYCcsICcgJywgMjEyfSwJLyogJyAqLwoJeydcJycsICcgJywgMjEzfSwJLyogJyAqLwoJeyctJywgJzonLCAyMTR9LAkvKiD3ICovCgl7J0QnLCAnSScsIDIxNX0sCS8qINcgKi8KCXsneScsICc6JywgMjE2fSwJLyog/yAqLwoJeydZJywgJzonLCAyMTd9LAkvKiCNICovCgl7Jy8nLCAnLycsIDIxOH0sCS8qII4gKi8KCXsnRScsICc9JywgMjE5fSwJLyogpCBFdXJvIFN5c3RlbSA+PTguNSAqLwoJeydvJywgJ3gnLCAyMTl9LAkvKiCkIEN1cnJlbmN5IFN5c3RlbSA8PTguMSovCgl7JzwnLCAnICcsIDIyMH0sCS8qINAgKi8KCXsnPicsICcgJywgMjIxfSwJLyog8CAqLwoJeydmJywgJ2knLCAyMjJ9LAkvKiDeICovCgl7J2YnLCAnbCcsIDIyM30sCS8qIP4gKi8KCXsnKycsICcrJywgMjI0fSwJLyog/SAqLwoJeyd+JywgJy4nLCAyMjV9LAkvKiC3ICovCgl7JywnLCAnICcsIDIyNn0sCS8qIJIgKi8KCXsnLCcsICcsJywgMjI3fSwJLyogkyAqLwoJeyclJywgJy4nLCAyMjh9LAkvKiCUICovCgl7JyUnLCAnMCcsIDIyOH0sCS8qIJQgKi8KCXsnQScsICdeJywgMjI5fSwJLyogwiAqLwoJeydFJywgJ14nLCAyMzB9LAkvKiDKICovCgl7J0EnLCAnXCcnLCAyMzF9LAkvKiDBICovCgl7J0UnLCAnIicsIDIzMn0sCS8qIMsgKi8KCXsnRScsICdgJywgMjMzfSwJLyogyCAqLwoJeydJJywgJ1wnJywgMjM0fSwJLyogzSAqLwoJeydJJywgJ14nLCAyMzV9LAkvKiDOICovCgl7J0knLCAnIicsIDIzNn0sCS8qIM8gKi8KCXsnSScsICdgJywgMjM3fSwJLyogzCAqLwoJeydPJywgJ1wnJywgMjM4fSwJLyog0yAqLwoJeydPJywgJ14nLCAyMzl9LAkvKiDUICovCgl7J0EnLCAnUCcsIDI0MH0sCS8qIJUgKi8KCXsnTycsICdgJywgMjQxfSwJLyog0iAqLwoJeydVJywgJ1wnJywgMjQyfSwJLyog2iAqLwoJeydVJywgJ14nLCAyNDN9LAkvKiDbICovCgl7J1UnLCAnYCcsIDI0NH0sCS8qINkgKi8KCXsnaScsICcuJywgMjQ1fSwJLyogniAqLwoJe05VTCwgTlVMLCBOVUx9Cgl9OwoKIyAgIGVsc2UJLyogIU1BQ09TX1ggKi8KCiMgICAgaWZkZWYgT0xEX0RJR1JBUEhTCgoJLyoKCSAqIGRpZ3JhcGhzIGNvbXBhdGlibGUgd2l0aCBWaW0gNS54CgkgKi8KICAgICAgIHt7J34nLCAnIScsIDE2MX0sCS8qIKEgKi8KCXsnYycsICd8JywgMTYyfSwJLyogoiAqLwoJeyckJywgJyQnLCAxNjN9LAkvKiCjICovCgl7J28nLCAneCcsIDE2NH0sCS8qIKQgLSBjdXJyZW5jeSBzeW1ib2wgaW4gSVNPIDg4NTktMSAqLwoJeydlJywgJz0nLCAxNjR9LAkvKiCkIC0gZXVybyBzeW1ib2wgaW4gSVNPIDg4NTktMTUgKi8KCXsnWScsICctJywgMTY1fSwJLyogpSAqLwoJeyd8JywgJ3wnLCAxNjZ9LAkvKiCmICovCgl7J3AnLCAnYScsIDE2N30sCS8qIKcgKi8KCXsnIicsICciJywgMTY4fSwJLyogqCAqLwoJeydjJywgJ08nLCAxNjl9LAkvKiCpICovCgl7J2EnLCAnLScsIDE3MH0sCS8qIKogKi8KCXsnPCcsICc8JywgMTcxfSwJLyogqyAqLwoJeyctJywgJywnLCAxNzJ9LAkvKiCsICovCgl7Jy0nLCAnLScsIDE3M30sCS8qIK0gKi8KCXsncicsICdPJywgMTc0fSwJLyogriAqLwoJeyctJywgJz0nLCAxNzV9LAkvKiCvICovCgl7J34nLCAnbycsIDE3Nn0sCS8qILAgKi8KCXsnKycsICctJywgMTc3fSwJLyogsSAqLwoJeycyJywgJzInLCAxNzh9LAkvKiCyICovCgl7JzMnLCAnMycsIDE3OX0sCS8qILMgKi8KCXsnXCcnLCAnXCcnLCAxODB9LAkvKiC0ICovCgl7J2onLCAndScsIDE4MX0sCS8qILUgKi8KCXsncCcsICdwJywgMTgyfSwJLyogtiAqLwoJeyd+JywgJy4nLCAxODN9LAkvKiC3ICovCgl7JywnLCAnLCcsIDE4NH0sCS8qILggKi8KCXsnMScsICcxJywgMTg1fSwJLyoguSAqLwoJeydvJywgJy0nLCAxODZ9LAkvKiC6ICovCgl7Jz4nLCAnPicsIDE4N30sCS8qILsgKi8KCXsnMScsICc0JywgMTg4fSwJLyogvCAqLwoJeycxJywgJzInLCAxODl9LAkvKiC9ICovCgl7JzMnLCAnNCcsIDE5MH0sCS8qIL4gKi8KCXsnficsICc/JywgMTkxfSwJLyogvyAqLwoJeydBJywgJ2AnLCAxOTJ9LAkvKiDAICovCgl7J0EnLCAnXCcnLCAxOTN9LAkvKiDBICovCgl7J0EnLCAnXicsIDE5NH0sCS8qIMIgKi8KCXsnQScsICd+JywgMTk1fSwJLyogwyAqLwoJeydBJywgJyInLCAxOTZ9LAkvKiDEICovCgl7J0EnLCAnQCcsIDE5N30sCS8qIMUgKi8KCXsnQScsICdBJywgMTk3fSwJLyogxSAqLwoJeydBJywgJ0UnLCAxOTh9LAkvKiDGICovCgl7J0MnLCAnLCcsIDE5OX0sCS8qIMcgKi8KCXsnRScsICdgJywgMjAwfSwJLyogyCAqLwoJeydFJywgJ1wnJywgMjAxfSwJLyogySAqLwoJeydFJywgJ14nLCAyMDJ9LAkvKiDKICovCgl7J0UnLCAnIicsIDIwM30sCS8qIMsgKi8KCXsnSScsICdgJywgMjA0fSwJLyogzCAqLwoJeydJJywgJ1wnJywgMjA1fSwJLyogzSAqLwoJeydJJywgJ14nLCAyMDZ9LAkvKiDOICovCgl7J0knLCAnIicsIDIwN30sCS8qIM8gKi8KCXsnRCcsICctJywgMjA4fSwJLyog0CAqLwoJeydOJywgJ34nLCAyMDl9LAkvKiDRICovCgl7J08nLCAnYCcsIDIxMH0sCS8qINIgKi8KCXsnTycsICdcJycsIDIxMX0sCS8qINMgKi8KCXsnTycsICdeJywgMjEyfSwJLyog1CAqLwoJeydPJywgJ34nLCAyMTN9LAkvKiDVICovCgl7J08nLCAnIicsIDIxNH0sCS8qINYgKi8KCXsnLycsICdcXCcsIDIxNX0sCS8qINcgLSBtdWx0aXBsaWNhdGlvbiBzeW1ib2wgaW4gSVNPIDg4NTktMSAqLwoJeydPJywgJ0UnLCAyMTV9LAkvKiDXIC0gT0UgaW4gSVNPIDg4NTktMTUgKi8KCXsnTycsICcvJywgMjE2fSwJLyog2CAqLwoJeydVJywgJ2AnLCAyMTd9LAkvKiDZICovCgl7J1UnLCAnXCcnLCAyMTh9LAkvKiDaICovCgl7J1UnLCAnXicsIDIxOX0sCS8qINsgKi8KCXsnVScsICciJywgMjIwfSwJLyog3CAqLwoJeydZJywgJ1wnJywgMjIxfSwJLyog3SAqLwoJeydJJywgJ3AnLCAyMjJ9LAkvKiDeICovCgl7J3MnLCAncycsIDIyM30sCS8qIN8gKi8KCXsnYScsICdgJywgMjI0fSwJLyog4CAqLwoJeydhJywgJ1wnJywgMjI1fSwJLyog4SAqLwoJeydhJywgJ14nLCAyMjZ9LAkvKiDiICovCgl7J2EnLCAnficsIDIyN30sCS8qIOMgKi8KCXsnYScsICciJywgMjI4fSwJLyog5CAqLwoJeydhJywgJ0AnLCAyMjl9LAkvKiDlICovCgl7J2EnLCAnYScsIDIyOX0sCS8qIOUgKi8KCXsnYScsICdlJywgMjMwfSwJLyog5iAqLwoJeydjJywgJywnLCAyMzF9LAkvKiDnICovCgl7J2UnLCAnYCcsIDIzMn0sCS8qIOggKi8KCXsnZScsICdcJycsIDIzM30sCS8qIOkgKi8KCXsnZScsICdeJywgMjM0fSwJLyog6iAqLwoJeydlJywgJyInLCAyMzV9LAkvKiDrICovCgl7J2knLCAnYCcsIDIzNn0sCS8qIOwgKi8KCXsnaScsICdcJycsIDIzN30sCS8qIO0gKi8KCXsnaScsICdeJywgMjM4fSwJLyog7iAqLwoJeydpJywgJyInLCAyMzl9LAkvKiDvICovCgl7J2QnLCAnLScsIDI0MH0sCS8qIPAgKi8KCXsnbicsICd+JywgMjQxfSwJLyog8SAqLwoJeydvJywgJ2AnLCAyNDJ9LAkvKiDyICovCgl7J28nLCAnXCcnLCAyNDN9LAkvKiDzICovCgl7J28nLCAnXicsIDI0NH0sCS8qIPQgKi8KCXsnbycsICd+JywgMjQ1fSwJLyog9SAqLwoJeydvJywgJyInLCAyNDZ9LAkvKiD2ICovCgl7JzonLCAnLScsIDI0N30sCS8qIPcgLSBkaXZpc2lvbiBzeW1ib2wgaW4gSVNPIDg4NTktMSAqLwoJeydvJywgJ2UnLCAyNDd9LAkvKiD3IC0gb2UgaW4gSVNPIDg4NTktMTUgKi8KCXsnbycsICcvJywgMjQ4fSwJLyog+CAqLwoJeyd1JywgJ2AnLCAyNDl9LAkvKiD5ICovCgl7J3UnLCAnXCcnLCAyNTB9LAkvKiD6ICovCgl7J3UnLCAnXicsIDI1MX0sCS8qIPsgKi8KCXsndScsICciJywgMjUyfSwJLyog/CAqLwoJeyd5JywgJ1wnJywgMjUzfSwJLyog/SAqLwoJeydpJywgJ3AnLCAyNTR9LAkvKiD+ICovCgl7J3knLCAnIicsIDI1NX0sCS8qIHggWFggKi8KCXtOVUwsIE5VTCwgTlVMfQoJfTsKIyAgICBlbHNlIC8qIE9MRF9ESUdSQVBIUyAqLwoKCS8qCgkgKiBkaWdyYXBocyBmb3IgVW5pY29kZSBmcm9tIFJGQzEzNDUKCSAqIChhbHNvIHdvcmsgZm9yIElTTy04ODU5LTEgYWthIGxhdGluMSkKCSAqLwogICAgICAgewoJeydOJywgJ1UnLCAweDBhfSwJLyogTEYgZm9yIE5VTCAqLwoJeydTJywgJ0gnLCAweDAxfSwKCXsnUycsICdYJywgMHgwMn0sCgl7J0UnLCAnWCcsIDB4MDN9LAoJeydFJywgJ1QnLCAweDA0fSwKCXsnRScsICdRJywgMHgwNX0sCgl7J0EnLCAnSycsIDB4MDZ9LAoJeydCJywgJ0wnLCAweDA3fSwKCXsnQicsICdTJywgMHgwOH0sCgl7J0gnLCAnVCcsIDB4MDl9LAoJeydMJywgJ0YnLCAweDBhfSwKCXsnVicsICdUJywgMHgwYn0sCgl7J0YnLCAnRicsIDB4MGN9LAoJeydDJywgJ1InLCAweDBkfSwKCXsnUycsICdPJywgMHgwZX0sCgl7J1MnLCAnSScsIDB4MGZ9LAoJeydEJywgJ0wnLCAweDEwfSwKCXsnRCcsICcxJywgMHgxMX0sCgl7J0QnLCAnMicsIDB4MTJ9LAoJeydEJywgJzMnLCAweDEzfSwKCXsnRCcsICc0JywgMHgxNH0sCgl7J04nLCAnSycsIDB4MTV9LAoJeydTJywgJ1knLCAweDE2fSwKCXsnRScsICdCJywgMHgxN30sCgl7J0MnLCAnTicsIDB4MTh9LAoJeydFJywgJ00nLCAweDE5fSwKCXsnUycsICdCJywgMHgxYX0sCgl7J0UnLCAnQycsIDB4MWJ9LAoJeydGJywgJ1MnLCAweDFjfSwKCXsnRycsICdTJywgMHgxZH0sCgl7J1InLCAnUycsIDB4MWV9LAoJeydVJywgJ1MnLCAweDFmfSwKCXsnUycsICdQJywgMHgyMH0sCgl7J04nLCAnYicsIDB4MjN9LAoJeydEJywgJ08nLCAweDI0fSwKCXsnQScsICd0JywgMHg0MH0sCgl7JzwnLCAnKCcsIDB4NWJ9LAoJeycvJywgJy8nLCAweDVjfSwKCXsnKScsICc+JywgMHg1ZH0sCgl7J1wnJywgJz4nLCAweDVlfSwKCXsnXCcnLCAnIScsIDB4NjB9LAoJeycoJywgJyEnLCAweDdifSwKCXsnIScsICchJywgMHg3Y30sCgl7JyEnLCAnKScsIDB4N2R9LAoJeydcJycsICc/JywgMHg3ZX0sCgl7J0QnLCAnVCcsIDB4N2Z9LAoJeydQJywgJ0EnLCAweDgwfSwKCXsnSCcsICdPJywgMHg4MX0sCgl7J0InLCAnSCcsIDB4ODJ9LAoJeydOJywgJ0gnLCAweDgzfSwKCXsnSScsICdOJywgMHg4NH0sCgl7J04nLCAnTCcsIDB4ODV9LAoJeydTJywgJ0EnLCAweDg2fSwKCXsnRScsICdTJywgMHg4N30sCgl7J0gnLCAnUycsIDB4ODh9LAoJeydIJywgJ0onLCAweDg5fSwKCXsnVicsICdTJywgMHg4YX0sCgl7J1AnLCAnRCcsIDB4OGJ9LAoJeydQJywgJ1UnLCAweDhjfSwKCXsnUicsICdJJywgMHg4ZH0sCgl7J1MnLCAnMicsIDB4OGV9LAoJeydTJywgJzMnLCAweDhmfSwKCXsnRCcsICdDJywgMHg5MH0sCgl7J1AnLCAnMScsIDB4OTF9LAoJeydQJywgJzInLCAweDkyfSwKCXsnVCcsICdTJywgMHg5M30sCgl7J0MnLCAnQycsIDB4OTR9LAoJeydNJywgJ1cnLCAweDk1fSwKCXsnUycsICdHJywgMHg5Nn0sCgl7J0UnLCAnRycsIDB4OTd9LAoJeydTJywgJ1MnLCAweDk4fSwKCXsnRycsICdDJywgMHg5OX0sCgl7J1MnLCAnQycsIDB4OWF9LAoJeydDJywgJ0knLCAweDlifSwKCXsnUycsICdUJywgMHg5Y30sCgl7J08nLCAnQycsIDB4OWR9LAoJeydQJywgJ00nLCAweDllfSwKCXsnQScsICdDJywgMHg5Zn0sCgl7J04nLCAnUycsIDB4YTB9LAojZGVmaW5lIERHX1NUQVJUX0xBVElOIDB4YTEKCXsnIScsICdJJywgMHhhMX0sCgl7J34nLCAnIScsIDB4YTF9LAkvLyChIFZpbSA1LnggY29tcGF0aWJsZQoJeydDJywgJ3QnLCAweGEyfSwKCXsnYycsICd8JywgMHhhMn0sCS8vIKIgVmltIDUueCBjb21wYXRpYmxlCgl7J1AnLCAnZCcsIDB4YTN9LAoJeyckJywgJyQnLCAweGEzfSwJLy8goyBWaW0gNS54IGNvbXBhdGlibGUKCXsnQycsICd1JywgMHhhNH0sCgl7J28nLCAneCcsIDB4YTR9LAkvLyCkIFZpbSA1LnggY29tcGF0aWJsZQoJeydZJywgJ2UnLCAweGE1fSwKCXsnWScsICctJywgMHhhNX0sCS8vIKUgVmltIDUueCBjb21wYXRpYmxlCgl7J0InLCAnQicsIDB4YTZ9LAoJeyd8JywgJ3wnLCAweGE2fSwJLy8gpiBWaW0gNS54IGNvbXBhdGlibGUKCXsnUycsICdFJywgMHhhN30sCgl7J1wnJywgJzonLCAweGE4fSwKCXsnQycsICdvJywgMHhhOX0sCgl7J2MnLCAnTycsIDB4YTl9LAkvLyCpIFZpbSA1LnggY29tcGF0aWJsZQoJeyctJywgJ2EnLCAweGFhfSwKCXsnPCcsICc8JywgMHhhYn0sCgl7J04nLCAnTycsIDB4YWN9LAoJeyctJywgJywnLCAweGFjfSwJLy8grCBWaW0gNS54IGNvbXBhdGlibGUKCXsnLScsICctJywgMHhhZH0sCgl7J1InLCAnZycsIDB4YWV9LAoJeydcJycsICdtJywgMHhhZn0sCgl7Jy0nLCAnPScsIDB4YWZ9LAkvLyCvIFZpbSA1LnggY29tcGF0aWJsZQoJeydEJywgJ0cnLCAweGIwfSwKCXsnficsICdvJywgMHhiMH0sCS8vILAgVmltIDUueCBjb21wYXRpYmxlCgl7JysnLCAnLScsIDB4YjF9LAoJeycyJywgJ1MnLCAweGIyfSwKCXsnMicsICcyJywgMHhiMn0sCS8vILIgVmltIDUueCBjb21wYXRpYmxlCgl7JzMnLCAnUycsIDB4YjN9LAoJeyczJywgJzMnLCAweGIzfSwJLy8gsyBWaW0gNS54IGNvbXBhdGlibGUKCXsnXCcnLCAnXCcnLCAweGI0fSwKCXsnTScsICd5JywgMHhiNX0sCgl7J1AnLCAnSScsIDB4YjZ9LAoJeydwJywgJ3AnLCAweGI2fSwJLy8gtiBWaW0gNS54IGNvbXBhdGlibGUKCXsnLicsICdNJywgMHhiN30sCgl7J34nLCAnLicsIDB4Yjd9LAkvLyC3IFZpbSA1LnggY29tcGF0aWJsZQoJeydcJycsICcsJywgMHhiOH0sCgl7JzEnLCAnUycsIDB4Yjl9LAoJeycxJywgJzEnLCAweGI5fSwJLy8guSBWaW0gNS54IGNvbXBhdGlibGUKCXsnLScsICdvJywgMHhiYX0sCgl7Jz4nLCAnPicsIDB4YmJ9LAoJeycxJywgJzQnLCAweGJjfSwKCXsnMScsICcyJywgMHhiZH0sCgl7JzMnLCAnNCcsIDB4YmV9LAoJeyc/JywgJ0knLCAweGJmfSwKCXsnficsICc/JywgMHhiZn0sCS8vIL8gVmltIDUueCBjb21wYXRpYmxlCgl7J0EnLCAnIScsIDB4YzB9LAoJeydBJywgJ2AnLCAweGMwfSwJLy8gwCBWaW0gNS54IGNvbXBhdGlibGUKCXsnQScsICdcJycsIDB4YzF9LAoJeydBJywgJz4nLCAweGMyfSwKCXsnQScsICdeJywgMHhjMn0sCS8vIMIgVmltIDUueCBjb21wYXRpYmxlCgl7J0EnLCAnPycsIDB4YzN9LAoJeydBJywgJ34nLCAweGMzfSwJLy8gwyBWaW0gNS54IGNvbXBhdGlibGUKCXsnQScsICc6JywgMHhjNH0sCgl7J0EnLCAnIicsIDB4YzR9LAkvLyDEIFZpbSA1LnggY29tcGF0aWJsZQoJeydBJywgJ0EnLCAweGM1fSwKCXsnQScsICdAJywgMHhjNX0sCS8vIMUgVmltIDUueCBjb21wYXRpYmxlCgl7J0EnLCAnRScsIDB4YzZ9LAoJeydDJywgJywnLCAweGM3fSwKCXsnRScsICchJywgMHhjOH0sCgl7J0UnLCAnYCcsIDB4Yzh9LAkvLyDIIFZpbSA1LnggY29tcGF0aWJsZQoJeydFJywgJ1wnJywgMHhjOX0sCgl7J0UnLCAnPicsIDB4Y2F9LAoJeydFJywgJ14nLCAweGNhfSwJLy8gyiBWaW0gNS54IGNvbXBhdGlibGUKCXsnRScsICc6JywgMHhjYn0sCgl7J0UnLCAnIicsIDB4Y2J9LAkvLyDLIFZpbSA1LnggY29tcGF0aWJsZQoJeydJJywgJyEnLCAweGNjfSwKCXsnSScsICdgJywgMHhjY30sCS8vIMwgVmltIDUueCBjb21wYXRpYmxlCgl7J0knLCAnXCcnLCAweGNkfSwKCXsnSScsICc+JywgMHhjZX0sCgl7J0knLCAnXicsIDB4Y2V9LAkvLyDOIFZpbSA1LnggY29tcGF0aWJsZQoJeydJJywgJzonLCAweGNmfSwKCXsnSScsICciJywgMHhjZn0sCS8vIM8gVmltIDUueCBjb21wYXRpYmxlCgl7J0QnLCAnLScsIDB4ZDB9LAoJeydOJywgJz8nLCAweGQxfSwKCXsnTicsICd+JywgMHhkMX0sCS8vINEgVmltIDUueCBjb21wYXRpYmxlCgl7J08nLCAnIScsIDB4ZDJ9LAoJeydPJywgJ2AnLCAweGQyfSwJLy8g0iBWaW0gNS54IGNvbXBhdGlibGUKCXsnTycsICdcJycsIDB4ZDN9LAoJeydPJywgJz4nLCAweGQ0fSwKCXsnTycsICdeJywgMHhkNH0sCS8vINQgVmltIDUueCBjb21wYXRpYmxlCgl7J08nLCAnPycsIDB4ZDV9LAoJeydPJywgJ34nLCAweGQ1fSwJLy8g1SBWaW0gNS54IGNvbXBhdGlibGUKCXsnTycsICc6JywgMHhkNn0sCgl7JyonLCAnWCcsIDB4ZDd9LAoJeycvJywgJ1xcJywgMHhkN30sCS8vINcgVmltIDUueCBjb21wYXRpYmxlCgl7J08nLCAnLycsIDB4ZDh9LAoJeydVJywgJyEnLCAweGQ5fSwKCXsnVScsICdgJywgMHhkOX0sCS8vINkgVmltIDUueCBjb21wYXRpYmxlCgl7J1UnLCAnXCcnLCAweGRhfSwKCXsnVScsICc+JywgMHhkYn0sCgl7J1UnLCAnXicsIDB4ZGJ9LAkvLyDbIFZpbSA1LnggY29tcGF0aWJsZQoJeydVJywgJzonLCAweGRjfSwKCXsnWScsICdcJycsIDB4ZGR9LAoJeydUJywgJ0gnLCAweGRlfSwKCXsnSScsICdwJywgMHhkZX0sCS8vIN4gVmltIDUueCBjb21wYXRpYmxlCgl7J3MnLCAncycsIDB4ZGZ9LAoJeydhJywgJyEnLCAweGUwfSwKCXsnYScsICdgJywgMHhlMH0sCS8vIOAgVmltIDUueCBjb21wYXRpYmxlCgl7J2EnLCAnXCcnLCAweGUxfSwKCXsnYScsICc+JywgMHhlMn0sCgl7J2EnLCAnXicsIDB4ZTJ9LAkvLyDiIFZpbSA1LnggY29tcGF0aWJsZQoJeydhJywgJz8nLCAweGUzfSwKCXsnYScsICd+JywgMHhlM30sCS8vIOMgVmltIDUueCBjb21wYXRpYmxlCgl7J2EnLCAnOicsIDB4ZTR9LAoJeydhJywgJyInLCAweGU0fSwJLy8g5CBWaW0gNS54IGNvbXBhdGlibGUKCXsnYScsICdhJywgMHhlNX0sCgl7J2EnLCAnQCcsIDB4ZTV9LAkvLyDlIFZpbSA1LnggY29tcGF0aWJsZQoJeydhJywgJ2UnLCAweGU2fSwKCXsnYycsICcsJywgMHhlN30sCgl7J2UnLCAnIScsIDB4ZTh9LAoJeydlJywgJ2AnLCAweGU4fSwJLy8g6CBWaW0gNS54IGNvbXBhdGlibGUKCXsnZScsICdcJycsIDB4ZTl9LAoJeydlJywgJz4nLCAweGVhfSwKCXsnZScsICdeJywgMHhlYX0sCS8vIOogVmltIDUueCBjb21wYXRpYmxlCgl7J2UnLCAnOicsIDB4ZWJ9LAoJeydlJywgJyInLCAweGVifSwJLy8g6yBWaW0gNS54IGNvbXBhdGlibGUKCXsnaScsICchJywgMHhlY30sCgl7J2knLCAnYCcsIDB4ZWN9LAkvLyDsIFZpbSA1LnggY29tcGF0aWJsZQoJeydpJywgJ1wnJywgMHhlZH0sCgl7J2knLCAnPicsIDB4ZWV9LAoJeydpJywgJ14nLCAweGVlfSwJLy8g7iBWaW0gNS54IGNvbXBhdGlibGUKCXsnaScsICc6JywgMHhlZn0sCgl7J2QnLCAnLScsIDB4ZjB9LAoJeyduJywgJz8nLCAweGYxfSwKCXsnbicsICd+JywgMHhmMX0sCS8vIPEgVmltIDUueCBjb21wYXRpYmxlCgl7J28nLCAnIScsIDB4ZjJ9LAoJeydvJywgJ2AnLCAweGYyfSwJLy8g8iBWaW0gNS54IGNvbXBhdGlibGUKCXsnbycsICdcJycsIDB4ZjN9LAoJeydvJywgJz4nLCAweGY0fSwKCXsnbycsICdeJywgMHhmNH0sCS8vIPQgVmltIDUueCBjb21wYXRpYmxlCgl7J28nLCAnPycsIDB4ZjV9LAoJeydvJywgJ34nLCAweGY1fSwJLy8g9SBWaW0gNS54IGNvbXBhdGlibGUKCXsnbycsICc6JywgMHhmNn0sCgl7Jy0nLCAnOicsIDB4Zjd9LAoJeydvJywgJy8nLCAweGY4fSwKCXsndScsICchJywgMHhmOX0sCgl7J3UnLCAnYCcsIDB4Zjl9LAkvLyD5IFZpbSA1LnggY29tcGF0aWJsZQoJeyd1JywgJ1wnJywgMHhmYX0sCgl7J3UnLCAnPicsIDB4ZmJ9LAoJeyd1JywgJ14nLCAweGZifSwJLy8g+yBWaW0gNS54IGNvbXBhdGlibGUKCXsndScsICc6JywgMHhmY30sCgl7J3knLCAnXCcnLCAweGZkfSwKCXsndCcsICdoJywgMHhmZX0sCgl7J3knLCAnOicsIDB4ZmZ9LAoJeyd5JywgJyInLCAweGZmfSwJLy8geCBYWCAgVmltIDUueCBjb21wYXRpYmxlCgojICAgICAgaWZkZWYgRkVBVF9NQllURQojCWRlZmluZSBVU0VfVU5JQ09ERV9ESUdSQVBIUwoKCXsnQScsICctJywgMHgwMTAwfSwKCXsnYScsICctJywgMHgwMTAxfSwKCXsnQScsICcoJywgMHgwMTAyfSwKCXsnYScsICcoJywgMHgwMTAzfSwKCXsnQScsICc7JywgMHgwMTA0fSwKCXsnYScsICc7JywgMHgwMTA1fSwKCXsnQycsICdcJycsIDB4MDEwNn0sCgl7J2MnLCAnXCcnLCAweDAxMDd9LAoJeydDJywgJz4nLCAweDAxMDh9LAoJeydjJywgJz4nLCAweDAxMDl9LAoJeydDJywgJy4nLCAweDAxMGF9LAoJeydjJywgJy4nLCAweDAxMGJ9LAoJeydDJywgJzwnLCAweDAxMGN9LAoJeydjJywgJzwnLCAweDAxMGR9LAoJeydEJywgJzwnLCAweDAxMGV9LAoJeydkJywgJzwnLCAweDAxMGZ9LAoJeydEJywgJy8nLCAweDAxMTB9LAoJeydkJywgJy8nLCAweDAxMTF9LAoJeydFJywgJy0nLCAweDAxMTJ9LAoJeydlJywgJy0nLCAweDAxMTN9LAoJeydFJywgJygnLCAweDAxMTR9LAoJeydlJywgJygnLCAweDAxMTV9LAoJeydFJywgJy4nLCAweDAxMTZ9LAoJeydlJywgJy4nLCAweDAxMTd9LAoJeydFJywgJzsnLCAweDAxMTh9LAoJeydlJywgJzsnLCAweDAxMTl9LAoJeydFJywgJzwnLCAweDAxMWF9LAoJeydlJywgJzwnLCAweDAxMWJ9LAoJeydHJywgJz4nLCAweDAxMWN9LAoJeydnJywgJz4nLCAweDAxMWR9LAoJeydHJywgJygnLCAweDAxMWV9LAoJeydnJywgJygnLCAweDAxMWZ9LAoJeydHJywgJy4nLCAweDAxMjB9LAoJeydnJywgJy4nLCAweDAxMjF9LAoJeydHJywgJywnLCAweDAxMjJ9LAoJeydnJywgJywnLCAweDAxMjN9LAoJeydIJywgJz4nLCAweDAxMjR9LAoJeydoJywgJz4nLCAweDAxMjV9LAoJeydIJywgJy8nLCAweDAxMjZ9LAoJeydoJywgJy8nLCAweDAxMjd9LAoJeydJJywgJz8nLCAweDAxMjh9LAoJeydpJywgJz8nLCAweDAxMjl9LAoJeydJJywgJy0nLCAweDAxMmF9LAoJeydpJywgJy0nLCAweDAxMmJ9LAoJeydJJywgJygnLCAweDAxMmN9LAoJeydpJywgJygnLCAweDAxMmR9LAoJeydJJywgJzsnLCAweDAxMmV9LAoJeydpJywgJzsnLCAweDAxMmZ9LAoJeydJJywgJy4nLCAweDAxMzB9LAoJeydpJywgJy4nLCAweDAxMzF9LAoJeydJJywgJ0onLCAweDAxMzJ9LAoJeydpJywgJ2onLCAweDAxMzN9LAoJeydKJywgJz4nLCAweDAxMzR9LAoJeydqJywgJz4nLCAweDAxMzV9LAoJeydLJywgJywnLCAweDAxMzZ9LAoJeydrJywgJywnLCAweDAxMzd9LAoJeydrJywgJ2snLCAweDAxMzh9LAoJeydMJywgJ1wnJywgMHgwMTM5fSwKCXsnbCcsICdcJycsIDB4MDEzYX0sCgl7J0wnLCAnLCcsIDB4MDEzYn0sCgl7J2wnLCAnLCcsIDB4MDEzY30sCgl7J0wnLCAnPCcsIDB4MDEzZH0sCgl7J2wnLCAnPCcsIDB4MDEzZX0sCgl7J0wnLCAnLicsIDB4MDEzZn0sCgl7J2wnLCAnLicsIDB4MDE0MH0sCgl7J0wnLCAnLycsIDB4MDE0MX0sCgl7J2wnLCAnLycsIDB4MDE0Mn0sCgl7J04nLCAnXCcnLCAweDAxNDN9LAoJeyduJywgJ1wnJywgMHgwMTQ0fSwKCXsnTicsICcsJywgMHgwMTQ1fSwKCXsnbicsICcsJywgMHgwMTQ2fSwKCXsnTicsICc8JywgMHgwMTQ3fSwKCXsnbicsICc8JywgMHgwMTQ4fSwKCXsnXCcnLCAnbicsIDB4MDE0OX0sCgl7J04nLCAnRycsIDB4MDE0YX0sCgl7J24nLCAnZycsIDB4MDE0Yn0sCgl7J08nLCAnLScsIDB4MDE0Y30sCgl7J28nLCAnLScsIDB4MDE0ZH0sCgl7J08nLCAnKCcsIDB4MDE0ZX0sCgl7J28nLCAnKCcsIDB4MDE0Zn0sCgl7J08nLCAnIicsIDB4MDE1MH0sCgl7J28nLCAnIicsIDB4MDE1MX0sCgl7J08nLCAnRScsIDB4MDE1Mn0sCgl7J28nLCAnZScsIDB4MDE1M30sCgl7J1InLCAnXCcnLCAweDAxNTR9LAoJeydyJywgJ1wnJywgMHgwMTU1fSwKCXsnUicsICcsJywgMHgwMTU2fSwKCXsncicsICcsJywgMHgwMTU3fSwKCXsnUicsICc8JywgMHgwMTU4fSwKCXsncicsICc8JywgMHgwMTU5fSwKCXsnUycsICdcJycsIDB4MDE1YX0sCgl7J3MnLCAnXCcnLCAweDAxNWJ9LAoJeydTJywgJz4nLCAweDAxNWN9LAoJeydzJywgJz4nLCAweDAxNWR9LAoJeydTJywgJywnLCAweDAxNWV9LAoJeydzJywgJywnLCAweDAxNWZ9LAoJeydTJywgJzwnLCAweDAxNjB9LAoJeydzJywgJzwnLCAweDAxNjF9LAoJeydUJywgJywnLCAweDAxNjJ9LAoJeyd0JywgJywnLCAweDAxNjN9LAoJeydUJywgJzwnLCAweDAxNjR9LAoJeyd0JywgJzwnLCAweDAxNjV9LAoJeydUJywgJy8nLCAweDAxNjZ9LAoJeyd0JywgJy8nLCAweDAxNjd9LAoJeydVJywgJz8nLCAweDAxNjh9LAoJeyd1JywgJz8nLCAweDAxNjl9LAoJeydVJywgJy0nLCAweDAxNmF9LAoJeyd1JywgJy0nLCAweDAxNmJ9LAoJeydVJywgJygnLCAweDAxNmN9LAoJeyd1JywgJygnLCAweDAxNmR9LAoJeydVJywgJzAnLCAweDAxNmV9LAoJeyd1JywgJzAnLCAweDAxNmZ9LAoJeydVJywgJyInLCAweDAxNzB9LAoJeyd1JywgJyInLCAweDAxNzF9LAoJeydVJywgJzsnLCAweDAxNzJ9LAoJeyd1JywgJzsnLCAweDAxNzN9LAoJeydXJywgJz4nLCAweDAxNzR9LAoJeyd3JywgJz4nLCAweDAxNzV9LAoJeydZJywgJz4nLCAweDAxNzZ9LAoJeyd5JywgJz4nLCAweDAxNzd9LAoJeydZJywgJzonLCAweDAxNzh9LAoJeydaJywgJ1wnJywgMHgwMTc5fSwKCXsneicsICdcJycsIDB4MDE3YX0sCgl7J1onLCAnLicsIDB4MDE3Yn0sCgl7J3onLCAnLicsIDB4MDE3Y30sCgl7J1onLCAnPCcsIDB4MDE3ZH0sCgl7J3onLCAnPCcsIDB4MDE3ZX0sCgl7J08nLCAnOScsIDB4MDFhMH0sCgl7J28nLCAnOScsIDB4MDFhMX0sCgl7J08nLCAnSScsIDB4MDFhMn0sCgl7J28nLCAnaScsIDB4MDFhM30sCgl7J3knLCAncicsIDB4MDFhNn0sCgl7J1UnLCAnOScsIDB4MDFhZn0sCgl7J3UnLCAnOScsIDB4MDFiMH0sCgl7J1onLCAnLycsIDB4MDFiNX0sCgl7J3onLCAnLycsIDB4MDFiNn0sCgl7J0UnLCAnRCcsIDB4MDFiN30sCgl7J0EnLCAnPCcsIDB4MDFjZH0sCgl7J2EnLCAnPCcsIDB4MDFjZX0sCgl7J0knLCAnPCcsIDB4MDFjZn0sCgl7J2knLCAnPCcsIDB4MDFkMH0sCgl7J08nLCAnPCcsIDB4MDFkMX0sCgl7J28nLCAnPCcsIDB4MDFkMn0sCgl7J1UnLCAnPCcsIDB4MDFkM30sCgl7J3UnLCAnPCcsIDB4MDFkNH0sCgl7J0EnLCAnMScsIDB4MDFkZX0sCgl7J2EnLCAnMScsIDB4MDFkZn0sCgl7J0EnLCAnNycsIDB4MDFlMH0sCgl7J2EnLCAnNycsIDB4MDFlMX0sCgl7J0EnLCAnMycsIDB4MDFlMn0sCgl7J2EnLCAnMycsIDB4MDFlM30sCgl7J0cnLCAnLycsIDB4MDFlNH0sCgl7J2cnLCAnLycsIDB4MDFlNX0sCgl7J0cnLCAnPCcsIDB4MDFlNn0sCgl7J2cnLCAnPCcsIDB4MDFlN30sCgl7J0snLCAnPCcsIDB4MDFlOH0sCgl7J2snLCAnPCcsIDB4MDFlOX0sCgl7J08nLCAnOycsIDB4MDFlYX0sCgl7J28nLCAnOycsIDB4MDFlYn0sCgl7J08nLCAnMScsIDB4MDFlY30sCgl7J28nLCAnMScsIDB4MDFlZH0sCgl7J0UnLCAnWicsIDB4MDFlZX0sCgl7J2UnLCAneicsIDB4MDFlZn0sCgl7J2onLCAnPCcsIDB4MDFmMH0sCgl7J0cnLCAnXCcnLCAweDAxZjR9LAoJeydnJywgJ1wnJywgMHgwMWY1fSwKCXsnOycsICdTJywgMHgwMmJmfSwKCXsnXCcnLCAnPCcsIDB4MDJjN30sCgl7J1wnJywgJygnLCAweDAyZDh9LAoJeydcJycsICcuJywgMHgwMmQ5fSwKCXsnXCcnLCAnMCcsIDB4MDJkYX0sCgl7J1wnJywgJzsnLCAweDAyZGJ9LAoJeydcJycsICciJywgMHgwMmRkfSwKI2RlZmluZSBER19TVEFSVF9HUkVFSyAweDAzODYKCXsnQScsICclJywgMHgwMzg2fSwKCXsnRScsICclJywgMHgwMzg4fSwKCXsnWScsICclJywgMHgwMzg5fSwKCXsnSScsICclJywgMHgwMzhhfSwKCXsnTycsICclJywgMHgwMzhjfSwKCXsnVScsICclJywgMHgwMzhlfSwKCXsnVycsICclJywgMHgwMzhmfSwKCXsnaScsICczJywgMHgwMzkwfSwKCXsnQScsICcqJywgMHgwMzkxfSwKCXsnQicsICcqJywgMHgwMzkyfSwKCXsnRycsICcqJywgMHgwMzkzfSwKCXsnRCcsICcqJywgMHgwMzk0fSwKCXsnRScsICcqJywgMHgwMzk1fSwKCXsnWicsICcqJywgMHgwMzk2fSwKCXsnWScsICcqJywgMHgwMzk3fSwKCXsnSCcsICcqJywgMHgwMzk4fSwKCXsnSScsICcqJywgMHgwMzk5fSwKCXsnSycsICcqJywgMHgwMzlhfSwKCXsnTCcsICcqJywgMHgwMzlifSwKCXsnTScsICcqJywgMHgwMzljfSwKCXsnTicsICcqJywgMHgwMzlkfSwKCXsnQycsICcqJywgMHgwMzllfSwKCXsnTycsICcqJywgMHgwMzlmfSwKCXsnUCcsICcqJywgMHgwM2EwfSwKCXsnUicsICcqJywgMHgwM2ExfSwKCXsnUycsICcqJywgMHgwM2EzfSwKCXsnVCcsICcqJywgMHgwM2E0fSwKCXsnVScsICcqJywgMHgwM2E1fSwKCXsnRicsICcqJywgMHgwM2E2fSwKCXsnWCcsICcqJywgMHgwM2E3fSwKCXsnUScsICcqJywgMHgwM2E4fSwKCXsnVycsICcqJywgMHgwM2E5fSwKCXsnSicsICcqJywgMHgwM2FhfSwKCXsnVicsICcqJywgMHgwM2FifSwKCXsnYScsICclJywgMHgwM2FjfSwKCXsnZScsICclJywgMHgwM2FkfSwKCXsneScsICclJywgMHgwM2FlfSwKCXsnaScsICclJywgMHgwM2FmfSwKCXsndScsICczJywgMHgwM2IwfSwKCXsnYScsICcqJywgMHgwM2IxfSwKCXsnYicsICcqJywgMHgwM2IyfSwKCXsnZycsICcqJywgMHgwM2IzfSwKCXsnZCcsICcqJywgMHgwM2I0fSwKCXsnZScsICcqJywgMHgwM2I1fSwKCXsneicsICcqJywgMHgwM2I2fSwKCXsneScsICcqJywgMHgwM2I3fSwKCXsnaCcsICcqJywgMHgwM2I4fSwKCXsnaScsICcqJywgMHgwM2I5fSwKCXsnaycsICcqJywgMHgwM2JhfSwKCXsnbCcsICcqJywgMHgwM2JifSwKCXsnbScsICcqJywgMHgwM2JjfSwKCXsnbicsICcqJywgMHgwM2JkfSwKCXsnYycsICcqJywgMHgwM2JlfSwKCXsnbycsICcqJywgMHgwM2JmfSwKCXsncCcsICcqJywgMHgwM2MwfSwKCXsncicsICcqJywgMHgwM2MxfSwKCXsnKicsICdzJywgMHgwM2MyfSwKCXsncycsICcqJywgMHgwM2MzfSwKCXsndCcsICcqJywgMHgwM2M0fSwKCXsndScsICcqJywgMHgwM2M1fSwKCXsnZicsICcqJywgMHgwM2M2fSwKCXsneCcsICcqJywgMHgwM2M3fSwKCXsncScsICcqJywgMHgwM2M4fSwKCXsndycsICcqJywgMHgwM2M5fSwKCXsnaicsICcqJywgMHgwM2NhfSwKCXsndicsICcqJywgMHgwM2NifSwKCXsnbycsICclJywgMHgwM2NjfSwKCXsndScsICclJywgMHgwM2NkfSwKCXsndycsICclJywgMHgwM2NlfSwKCXsnXCcnLCAnRycsIDB4MDNkOH0sCgl7JywnLCAnRycsIDB4MDNkOX0sCgl7J1QnLCAnMycsIDB4MDNkYX0sCgl7J3QnLCAnMycsIDB4MDNkYn0sCgl7J00nLCAnMycsIDB4MDNkY30sCgl7J20nLCAnMycsIDB4MDNkZH0sCgl7J0snLCAnMycsIDB4MDNkZX0sCgl7J2snLCAnMycsIDB4MDNkZn0sCgl7J1AnLCAnMycsIDB4MDNlMH0sCgl7J3AnLCAnMycsIDB4MDNlMX0sCgl7J1wnJywgJyUnLCAweDAzZjR9LAoJeydqJywgJzMnLCAweDAzZjV9LAojZGVmaW5lIERHX1NUQVJUX0NZUklMTElDIDB4MDQwMQoJeydJJywgJ08nLCAweDA0MDF9LAoJeydEJywgJyUnLCAweDA0MDJ9LAoJeydHJywgJyUnLCAweDA0MDN9LAoJeydJJywgJ0UnLCAweDA0MDR9LAoJeydEJywgJ1MnLCAweDA0MDV9LAoJeydJJywgJ0knLCAweDA0MDZ9LAoJeydZJywgJ0knLCAweDA0MDd9LAoJeydKJywgJyUnLCAweDA0MDh9LAoJeydMJywgJ0onLCAweDA0MDl9LAoJeydOJywgJ0onLCAweDA0MGF9LAoJeydUJywgJ3MnLCAweDA0MGJ9LAoJeydLJywgJ0onLCAweDA0MGN9LAoJeydWJywgJyUnLCAweDA0MGV9LAoJeydEJywgJ1onLCAweDA0MGZ9LAoJeydBJywgJz0nLCAweDA0MTB9LAoJeydCJywgJz0nLCAweDA0MTF9LAoJeydWJywgJz0nLCAweDA0MTJ9LAoJeydHJywgJz0nLCAweDA0MTN9LAoJeydEJywgJz0nLCAweDA0MTR9LAoJeydFJywgJz0nLCAweDA0MTV9LAoJeydaJywgJyUnLCAweDA0MTZ9LAoJeydaJywgJz0nLCAweDA0MTd9LAoJeydJJywgJz0nLCAweDA0MTh9LAoJeydKJywgJz0nLCAweDA0MTl9LAoJeydLJywgJz0nLCAweDA0MWF9LAoJeydMJywgJz0nLCAweDA0MWJ9LAoJeydNJywgJz0nLCAweDA0MWN9LAoJeydOJywgJz0nLCAweDA0MWR9LAoJeydPJywgJz0nLCAweDA0MWV9LAoJeydQJywgJz0nLCAweDA0MWZ9LAoJeydSJywgJz0nLCAweDA0MjB9LAoJeydTJywgJz0nLCAweDA0MjF9LAoJeydUJywgJz0nLCAweDA0MjJ9LAoJeydVJywgJz0nLCAweDA0MjN9LAoJeydGJywgJz0nLCAweDA0MjR9LAoJeydIJywgJz0nLCAweDA0MjV9LAoJeydDJywgJz0nLCAweDA0MjZ9LAoJeydDJywgJyUnLCAweDA0Mjd9LAoJeydTJywgJyUnLCAweDA0Mjh9LAoJeydTJywgJ2MnLCAweDA0Mjl9LAoJeyc9JywgJyInLCAweDA0MmF9LAoJeydZJywgJz0nLCAweDA0MmJ9LAoJeyclJywgJyInLCAweDA0MmN9LAoJeydKJywgJ0UnLCAweDA0MmR9LAoJeydKJywgJ1UnLCAweDA0MmV9LAoJeydKJywgJ0EnLCAweDA0MmZ9LAoJeydhJywgJz0nLCAweDA0MzB9LAoJeydiJywgJz0nLCAweDA0MzF9LAoJeyd2JywgJz0nLCAweDA0MzJ9LAoJeydnJywgJz0nLCAweDA0MzN9LAoJeydkJywgJz0nLCAweDA0MzR9LAoJeydlJywgJz0nLCAweDA0MzV9LAoJeyd6JywgJyUnLCAweDA0MzZ9LAoJeyd6JywgJz0nLCAweDA0Mzd9LAoJeydpJywgJz0nLCAweDA0Mzh9LAoJeydqJywgJz0nLCAweDA0Mzl9LAoJeydrJywgJz0nLCAweDA0M2F9LAoJeydsJywgJz0nLCAweDA0M2J9LAoJeydtJywgJz0nLCAweDA0M2N9LAoJeyduJywgJz0nLCAweDA0M2R9LAoJeydvJywgJz0nLCAweDA0M2V9LAoJeydwJywgJz0nLCAweDA0M2Z9LAoJeydyJywgJz0nLCAweDA0NDB9LAoJeydzJywgJz0nLCAweDA0NDF9LAoJeyd0JywgJz0nLCAweDA0NDJ9LAoJeyd1JywgJz0nLCAweDA0NDN9LAoJeydmJywgJz0nLCAweDA0NDR9LAoJeydoJywgJz0nLCAweDA0NDV9LAoJeydjJywgJz0nLCAweDA0NDZ9LAoJeydjJywgJyUnLCAweDA0NDd9LAoJeydzJywgJyUnLCAweDA0NDh9LAoJeydzJywgJ2MnLCAweDA0NDl9LAoJeyc9JywgJ1wnJywgMHgwNDRhfSwKCXsneScsICc9JywgMHgwNDRifSwKCXsnJScsICdcJycsIDB4MDQ0Y30sCgl7J2onLCAnZScsIDB4MDQ0ZH0sCgl7J2onLCAndScsIDB4MDQ0ZX0sCgl7J2onLCAnYScsIDB4MDQ0Zn0sCgl7J2knLCAnbycsIDB4MDQ1MX0sCgl7J2QnLCAnJScsIDB4MDQ1Mn0sCgl7J2cnLCAnJScsIDB4MDQ1M30sCgl7J2knLCAnZScsIDB4MDQ1NH0sCgl7J2QnLCAncycsIDB4MDQ1NX0sCgl7J2knLCAnaScsIDB4MDQ1Nn0sCgl7J3knLCAnaScsIDB4MDQ1N30sCgl7J2onLCAnJScsIDB4MDQ1OH0sCgl7J2wnLCAnaicsIDB4MDQ1OX0sCgl7J24nLCAnaicsIDB4MDQ1YX0sCgl7J3QnLCAncycsIDB4MDQ1Yn0sCgl7J2snLCAnaicsIDB4MDQ1Y30sCgl7J3YnLCAnJScsIDB4MDQ1ZX0sCgl7J2QnLCAneicsIDB4MDQ1Zn0sCgl7J1knLCAnMycsIDB4MDQ2Mn0sCgl7J3knLCAnMycsIDB4MDQ2M30sCgl7J08nLCAnMycsIDB4MDQ2YX0sCgl7J28nLCAnMycsIDB4MDQ2Yn0sCgl7J0YnLCAnMycsIDB4MDQ3Mn0sCgl7J2YnLCAnMycsIDB4MDQ3M30sCgl7J1YnLCAnMycsIDB4MDQ3NH0sCgl7J3YnLCAnMycsIDB4MDQ3NX0sCgl7J0MnLCAnMycsIDB4MDQ4MH0sCgl7J2MnLCAnMycsIDB4MDQ4MX0sCgl7J0cnLCAnMycsIDB4MDQ5MH0sCgl7J2cnLCAnMycsIDB4MDQ5MX0sCiNkZWZpbmUgREdfU1RBUlRfSEVCUkVXIDB4MDVkMAoJeydBJywgJysnLCAweDA1ZDB9LAoJeydCJywgJysnLCAweDA1ZDF9LAoJeydHJywgJysnLCAweDA1ZDJ9LAoJeydEJywgJysnLCAweDA1ZDN9LAoJeydIJywgJysnLCAweDA1ZDR9LAoJeydXJywgJysnLCAweDA1ZDV9LAoJeydaJywgJysnLCAweDA1ZDZ9LAoJeydYJywgJysnLCAweDA1ZDd9LAoJeydUJywgJ2onLCAweDA1ZDh9LAoJeydKJywgJysnLCAweDA1ZDl9LAoJeydLJywgJyUnLCAweDA1ZGF9LAoJeydLJywgJysnLCAweDA1ZGJ9LAoJeydMJywgJysnLCAweDA1ZGN9LAoJeydNJywgJyUnLCAweDA1ZGR9LAoJeydNJywgJysnLCAweDA1ZGV9LAoJeydOJywgJyUnLCAweDA1ZGZ9LAoJeydOJywgJysnLCAweDA1ZTB9LAoJeydTJywgJysnLCAweDA1ZTF9LAoJeydFJywgJysnLCAweDA1ZTJ9LAoJeydQJywgJyUnLCAweDA1ZTN9LAoJeydQJywgJysnLCAweDA1ZTR9LAoJeydaJywgJ2onLCAweDA1ZTV9LAoJeydaJywgJ0onLCAweDA1ZTZ9LAoJeydRJywgJysnLCAweDA1ZTd9LAoJeydSJywgJysnLCAweDA1ZTh9LAoJeydTJywgJ2gnLCAweDA1ZTl9LAoJeydUJywgJysnLCAweDA1ZWF9LAojZGVmaW5lIERHX1NUQVJUX0FSQUJJQyAweDA2MGMKCXsnLCcsICcrJywgMHgwNjBjfSwKCXsnOycsICcrJywgMHgwNjFifSwKCXsnPycsICcrJywgMHgwNjFmfSwKCXsnSCcsICdcJycsIDB4MDYyMX0sCgl7J2EnLCAnTScsIDB4MDYyMn0sCgl7J2EnLCAnSCcsIDB4MDYyM30sCgl7J3cnLCAnSCcsIDB4MDYyNH0sCgl7J2EnLCAnaCcsIDB4MDYyNX0sCgl7J3knLCAnSCcsIDB4MDYyNn0sCgl7J2EnLCAnKycsIDB4MDYyN30sCgl7J2InLCAnKycsIDB4MDYyOH0sCgl7J3QnLCAnbScsIDB4MDYyOX0sCgl7J3QnLCAnKycsIDB4MDYyYX0sCgl7J3QnLCAnaycsIDB4MDYyYn0sCgl7J2cnLCAnKycsIDB4MDYyY30sCgl7J2gnLCAnaycsIDB4MDYyZH0sCgl7J3gnLCAnKycsIDB4MDYyZX0sCgl7J2QnLCAnKycsIDB4MDYyZn0sCgl7J2QnLCAnaycsIDB4MDYzMH0sCgl7J3InLCAnKycsIDB4MDYzMX0sCgl7J3onLCAnKycsIDB4MDYzMn0sCgl7J3MnLCAnKycsIDB4MDYzM30sCgl7J3MnLCAnbicsIDB4MDYzNH0sCgl7J2MnLCAnKycsIDB4MDYzNX0sCgl7J2QnLCAnZCcsIDB4MDYzNn0sCgl7J3QnLCAnaicsIDB4MDYzN30sCgl7J3onLCAnSCcsIDB4MDYzOH0sCgl7J2UnLCAnKycsIDB4MDYzOX0sCgl7J2knLCAnKycsIDB4MDYzYX0sCgl7JysnLCAnKycsIDB4MDY0MH0sCgl7J2YnLCAnKycsIDB4MDY0MX0sCgl7J3EnLCAnKycsIDB4MDY0Mn0sCgl7J2snLCAnKycsIDB4MDY0M30sCgl7J2wnLCAnKycsIDB4MDY0NH0sCgl7J20nLCAnKycsIDB4MDY0NX0sCgl7J24nLCAnKycsIDB4MDY0Nn0sCgl7J2gnLCAnKycsIDB4MDY0N30sCgl7J3cnLCAnKycsIDB4MDY0OH0sCgl7J2onLCAnKycsIDB4MDY0OX0sCgl7J3knLCAnKycsIDB4MDY0YX0sCgl7JzonLCAnKycsIDB4MDY0Yn0sCgl7JyInLCAnKycsIDB4MDY0Y30sCgl7Jz0nLCAnKycsIDB4MDY0ZH0sCgl7Jy8nLCAnKycsIDB4MDY0ZX0sCgl7J1wnJywgJysnLCAweDA2NGZ9LAoJeycxJywgJysnLCAweDA2NTB9LAoJeyczJywgJysnLCAweDA2NTF9LAoJeycwJywgJysnLCAweDA2NTJ9LAoJeydhJywgJ1MnLCAweDA2NzB9LAoJeydwJywgJysnLCAweDA2N2V9LAoJeyd2JywgJysnLCAweDA2YTR9LAoJeydnJywgJ2YnLCAweDA2YWZ9LAoJeycwJywgJ2EnLCAweDA2ZjB9LAoJeycxJywgJ2EnLCAweDA2ZjF9LAoJeycyJywgJ2EnLCAweDA2ZjJ9LAoJeyczJywgJ2EnLCAweDA2ZjN9LAoJeyc0JywgJ2EnLCAweDA2ZjR9LAoJeyc1JywgJ2EnLCAweDA2ZjV9LAoJeyc2JywgJ2EnLCAweDA2ZjZ9LAoJeyc3JywgJ2EnLCAweDA2Zjd9LAoJeyc4JywgJ2EnLCAweDA2Zjh9LAoJeyc5JywgJ2EnLCAweDA2Zjl9LAojZGVmaW5lIERHX1NUQVJUX0xBVElOX0VYVEVOREVEIDB4MWUwMgoJeydCJywgJy4nLCAweDFlMDJ9LAoJeydiJywgJy4nLCAweDFlMDN9LAoJeydCJywgJ18nLCAweDFlMDZ9LAoJeydiJywgJ18nLCAweDFlMDd9LAoJeydEJywgJy4nLCAweDFlMGF9LAoJeydkJywgJy4nLCAweDFlMGJ9LAoJeydEJywgJ18nLCAweDFlMGV9LAoJeydkJywgJ18nLCAweDFlMGZ9LAoJeydEJywgJywnLCAweDFlMTB9LAoJeydkJywgJywnLCAweDFlMTF9LAoJeydGJywgJy4nLCAweDFlMWV9LAoJeydmJywgJy4nLCAweDFlMWZ9LAoJeydHJywgJy0nLCAweDFlMjB9LAoJeydnJywgJy0nLCAweDFlMjF9LAoJeydIJywgJy4nLCAweDFlMjJ9LAoJeydoJywgJy4nLCAweDFlMjN9LAoJeydIJywgJzonLCAweDFlMjZ9LAoJeydoJywgJzonLCAweDFlMjd9LAoJeydIJywgJywnLCAweDFlMjh9LAoJeydoJywgJywnLCAweDFlMjl9LAoJeydLJywgJ1wnJywgMHgxZTMwfSwKCXsnaycsICdcJycsIDB4MWUzMX0sCgl7J0snLCAnXycsIDB4MWUzNH0sCgl7J2snLCAnXycsIDB4MWUzNX0sCgl7J0wnLCAnXycsIDB4MWUzYX0sCgl7J2wnLCAnXycsIDB4MWUzYn0sCgl7J00nLCAnXCcnLCAweDFlM2V9LAoJeydtJywgJ1wnJywgMHgxZTNmfSwKCXsnTScsICcuJywgMHgxZTQwfSwKCXsnbScsICcuJywgMHgxZTQxfSwKCXsnTicsICcuJywgMHgxZTQ0fSwKCXsnbicsICcuJywgMHgxZTQ1fSwKCXsnTicsICdfJywgMHgxZTQ4fSwKCXsnbicsICdfJywgMHgxZTQ5fSwKCXsnUCcsICdcJycsIDB4MWU1NH0sCgl7J3AnLCAnXCcnLCAweDFlNTV9LAoJeydQJywgJy4nLCAweDFlNTZ9LAoJeydwJywgJy4nLCAweDFlNTd9LAoJeydSJywgJy4nLCAweDFlNTh9LAoJeydyJywgJy4nLCAweDFlNTl9LAoJeydSJywgJ18nLCAweDFlNWV9LAoJeydyJywgJ18nLCAweDFlNWZ9LAoJeydTJywgJy4nLCAweDFlNjB9LAoJeydzJywgJy4nLCAweDFlNjF9LAoJeydUJywgJy4nLCAweDFlNmF9LAoJeyd0JywgJy4nLCAweDFlNmJ9LAoJeydUJywgJ18nLCAweDFlNmV9LAoJeyd0JywgJ18nLCAweDFlNmZ9LAoJeydWJywgJz8nLCAweDFlN2N9LAoJeyd2JywgJz8nLCAweDFlN2R9LAoJeydXJywgJyEnLCAweDFlODB9LAoJeydXJywgJ2AnLCAweDFlODB9LCAvLyBleHRyYSBhbHRlcm5hdGl2ZSwgZWFzaWVyIHRvIHJlbWVtYmVyCgl7J3cnLCAnIScsIDB4MWU4MX0sCgl7J3cnLCAnYCcsIDB4MWU4MX0sIC8vIGV4dHJhIGFsdGVybmF0aXZlLCBlYXNpZXIgdG8gcmVtZW1iZXIKCXsnVycsICdcJycsIDB4MWU4Mn0sCgl7J3cnLCAnXCcnLCAweDFlODN9LAoJeydXJywgJzonLCAweDFlODR9LAoJeyd3JywgJzonLCAweDFlODV9LAoJeydXJywgJy4nLCAweDFlODZ9LAoJeyd3JywgJy4nLCAweDFlODd9LAoJeydYJywgJy4nLCAweDFlOGF9LAoJeyd4JywgJy4nLCAweDFlOGJ9LAoJeydYJywgJzonLCAweDFlOGN9LAoJeyd4JywgJzonLCAweDFlOGR9LAoJeydZJywgJy4nLCAweDFlOGV9LAoJeyd5JywgJy4nLCAweDFlOGZ9LAoJeydaJywgJz4nLCAweDFlOTB9LAoJeyd6JywgJz4nLCAweDFlOTF9LAoJeydaJywgJ18nLCAweDFlOTR9LAoJeyd6JywgJ18nLCAweDFlOTV9LAoJeydoJywgJ18nLCAweDFlOTZ9LAoJeyd0JywgJzonLCAweDFlOTd9LAoJeyd3JywgJzAnLCAweDFlOTh9LAoJeyd5JywgJzAnLCAweDFlOTl9LAoJeydBJywgJzInLCAweDFlYTJ9LAoJeydhJywgJzInLCAweDFlYTN9LAoJeydFJywgJzInLCAweDFlYmF9LAoJeydlJywgJzInLCAweDFlYmJ9LAoJeydFJywgJz8nLCAweDFlYmN9LAoJeydlJywgJz8nLCAweDFlYmR9LAoJeydJJywgJzInLCAweDFlYzh9LAoJeydpJywgJzInLCAweDFlYzl9LAoJeydPJywgJzInLCAweDFlY2V9LAoJeydvJywgJzInLCAweDFlY2Z9LAoJeydVJywgJzInLCAweDFlZTZ9LAoJeyd1JywgJzInLCAweDFlZTd9LAoJeydZJywgJyEnLCAweDFlZjJ9LAoJeydZJywgJ2AnLCAweDFlZjJ9LCAvLyBleHRyYSBhbHRlcm5hdGl2ZSwgZWFzaWVyIHRvIHJlbWVtYmVyCgl7J3knLCAnIScsIDB4MWVmM30sCgl7J3knLCAnYCcsIDB4MWVmM30sIC8vIGV4dHJhIGFsdGVybmF0aXZlLCBlYXNpZXIgdG8gcmVtZW1iZXIKCXsnWScsICcyJywgMHgxZWY2fSwKCXsneScsICcyJywgMHgxZWY3fSwKCXsnWScsICc/JywgMHgxZWY4fSwKCXsneScsICc/JywgMHgxZWY5fSwKI2RlZmluZSBER19TVEFSVF9HUkVFS19FWFRFTkRFRCAweDFmMDAKCXsnOycsICdcJycsIDB4MWYwMH0sCgl7JywnLCAnXCcnLCAweDFmMDF9LAoJeyc7JywgJyEnLCAweDFmMDJ9LAoJeycsJywgJyEnLCAweDFmMDN9LAoJeyc/JywgJzsnLCAweDFmMDR9LAoJeyc/JywgJywnLCAweDFmMDV9LAoJeychJywgJzonLCAweDFmMDZ9LAoJeyc/JywgJzonLCAweDFmMDd9LAojZGVmaW5lIERHX1NUQVJUX1BVTkNUVUFUSU9OIDB4MjAwMgoJeycxJywgJ04nLCAweDIwMDJ9LAoJeycxJywgJ00nLCAweDIwMDN9LAoJeyczJywgJ00nLCAweDIwMDR9LAoJeyc0JywgJ00nLCAweDIwMDV9LAoJeyc2JywgJ00nLCAweDIwMDZ9LAoJeycxJywgJ1QnLCAweDIwMDl9LAoJeycxJywgJ0gnLCAweDIwMGF9LAoJeyctJywgJzEnLCAweDIwMTB9LAoJeyctJywgJ04nLCAweDIwMTN9LAoJeyctJywgJ00nLCAweDIwMTR9LAoJeyctJywgJzMnLCAweDIwMTV9LAoJeychJywgJzInLCAweDIwMTZ9LAoJeyc9JywgJzInLCAweDIwMTd9LAoJeydcJycsICc2JywgMHgyMDE4fSwKCXsnXCcnLCAnOScsIDB4MjAxOX0sCgl7Jy4nLCAnOScsIDB4MjAxYX0sCgl7JzknLCAnXCcnLCAweDIwMWJ9LAoJeyciJywgJzYnLCAweDIwMWN9LAoJeyciJywgJzknLCAweDIwMWR9LAoJeyc6JywgJzknLCAweDIwMWV9LAoJeyc5JywgJyInLCAweDIwMWZ9LAoJeycvJywgJy0nLCAweDIwMjB9LAoJeycvJywgJz0nLCAweDIwMjF9LAoJeycuJywgJy4nLCAweDIwMjV9LAoJeycsJywgJy4nLCAweDIwMjZ9LAoJeyclJywgJzAnLCAweDIwMzB9LAoJeycxJywgJ1wnJywgMHgyMDMyfSwKCXsnMicsICdcJycsIDB4MjAzM30sCgl7JzMnLCAnXCcnLCAweDIwMzR9LAoJeycxJywgJyInLCAweDIwMzV9LAoJeycyJywgJyInLCAweDIwMzZ9LAoJeyczJywgJyInLCAweDIwMzd9LAoJeydDJywgJ2EnLCAweDIwMzh9LAoJeyc8JywgJzEnLCAweDIwMzl9LAoJeyc+JywgJzEnLCAweDIwM2F9LAoJeyc6JywgJ1gnLCAweDIwM2J9LAoJeydcJycsICctJywgMHgyMDNlfSwKCXsnLycsICdmJywgMHgyMDQ0fSwKI2RlZmluZSBER19TVEFSVF9TVUJfU1VQRVIgMHgyMDcwCgl7JzAnLCAnUycsIDB4MjA3MH0sCgl7JzQnLCAnUycsIDB4MjA3NH0sCgl7JzUnLCAnUycsIDB4MjA3NX0sCgl7JzYnLCAnUycsIDB4MjA3Nn0sCgl7JzcnLCAnUycsIDB4MjA3N30sCgl7JzgnLCAnUycsIDB4MjA3OH0sCgl7JzknLCAnUycsIDB4MjA3OX0sCgl7JysnLCAnUycsIDB4MjA3YX0sCgl7Jy0nLCAnUycsIDB4MjA3Yn0sCgl7Jz0nLCAnUycsIDB4MjA3Y30sCgl7JygnLCAnUycsIDB4MjA3ZH0sCgl7JyknLCAnUycsIDB4MjA3ZX0sCgl7J24nLCAnUycsIDB4MjA3Zn0sCgl7JzAnLCAncycsIDB4MjA4MH0sCgl7JzEnLCAncycsIDB4MjA4MX0sCgl7JzInLCAncycsIDB4MjA4Mn0sCgl7JzMnLCAncycsIDB4MjA4M30sCgl7JzQnLCAncycsIDB4MjA4NH0sCgl7JzUnLCAncycsIDB4MjA4NX0sCgl7JzYnLCAncycsIDB4MjA4Nn0sCgl7JzcnLCAncycsIDB4MjA4N30sCgl7JzgnLCAncycsIDB4MjA4OH0sCgl7JzknLCAncycsIDB4MjA4OX0sCgl7JysnLCAncycsIDB4MjA4YX0sCgl7Jy0nLCAncycsIDB4MjA4Yn0sCgl7Jz0nLCAncycsIDB4MjA4Y30sCgl7JygnLCAncycsIDB4MjA4ZH0sCgl7JyknLCAncycsIDB4MjA4ZX0sCiNkZWZpbmUgREdfU1RBUlRfQ1VSUkVOQ1kgMHgyMGE0Cgl7J0wnLCAnaScsIDB4MjBhNH0sCgl7J1AnLCAndCcsIDB4MjBhN30sCgl7J1cnLCAnPScsIDB4MjBhOX0sCgl7Jz0nLCAnZScsIDB4MjBhY30sIC8qIGV1cm8gKi8KCXsnRScsICd1JywgMHgyMGFjfSwgLyogZXVybyAqLwoJeyc9JywgJ1InLCAweDIwYmR9LCAvKiByb3VibGUgKi8KCXsnPScsICdQJywgMHgyMGJkfSwgLyogcm91YmxlICovCiNkZWZpbmUgREdfU1RBUlRfT1RIRVIxIDB4MjEwMwoJeydvJywgJ0MnLCAweDIxMDN9LAoJeydjJywgJ28nLCAweDIxMDV9LAoJeydvJywgJ0YnLCAweDIxMDl9LAoJeydOJywgJzAnLCAweDIxMTZ9LAoJeydQJywgJ08nLCAweDIxMTd9LAoJeydSJywgJ3gnLCAweDIxMWV9LAoJeydTJywgJ00nLCAweDIxMjB9LAoJeydUJywgJ00nLCAweDIxMjJ9LAoJeydPJywgJ20nLCAweDIxMjZ9LAoJeydBJywgJ08nLCAweDIxMmJ9LAoJeycxJywgJzMnLCAweDIxNTN9LAoJeycyJywgJzMnLCAweDIxNTR9LAoJeycxJywgJzUnLCAweDIxNTV9LAoJeycyJywgJzUnLCAweDIxNTZ9LAoJeyczJywgJzUnLCAweDIxNTd9LAoJeyc0JywgJzUnLCAweDIxNTh9LAoJeycxJywgJzYnLCAweDIxNTl9LAoJeyc1JywgJzYnLCAweDIxNWF9LAoJeycxJywgJzgnLCAweDIxNWJ9LAoJeyczJywgJzgnLCAweDIxNWN9LAoJeyc1JywgJzgnLCAweDIxNWR9LAoJeyc3JywgJzgnLCAweDIxNWV9LAojZGVmaW5lIERHX1NUQVJUX1JPTUFOIDB4MjE2MAoJeycxJywgJ1InLCAweDIxNjB9LAoJeycyJywgJ1InLCAweDIxNjF9LAoJeyczJywgJ1InLCAweDIxNjJ9LAoJeyc0JywgJ1InLCAweDIxNjN9LAoJeyc1JywgJ1InLCAweDIxNjR9LAoJeyc2JywgJ1InLCAweDIxNjV9LAoJeyc3JywgJ1InLCAweDIxNjZ9LAoJeyc4JywgJ1InLCAweDIxNjd9LAoJeyc5JywgJ1InLCAweDIxNjh9LAoJeydhJywgJ1InLCAweDIxNjl9LAoJeydiJywgJ1InLCAweDIxNmF9LAoJeydjJywgJ1InLCAweDIxNmJ9LAoJeycxJywgJ3InLCAweDIxNzB9LAoJeycyJywgJ3InLCAweDIxNzF9LAoJeyczJywgJ3InLCAweDIxNzJ9LAoJeyc0JywgJ3InLCAweDIxNzN9LAoJeyc1JywgJ3InLCAweDIxNzR9LAoJeyc2JywgJ3InLCAweDIxNzV9LAoJeyc3JywgJ3InLCAweDIxNzZ9LAoJeyc4JywgJ3InLCAweDIxNzd9LAoJeyc5JywgJ3InLCAweDIxNzh9LAoJeydhJywgJ3InLCAweDIxNzl9LAoJeydiJywgJ3InLCAweDIxN2F9LAoJeydjJywgJ3InLCAweDIxN2J9LAojZGVmaW5lIERHX1NUQVJUX0FSUk9XUyAweDIxOTAKCXsnPCcsICctJywgMHgyMTkwfSwKCXsnLScsICchJywgMHgyMTkxfSwKCXsnLScsICc+JywgMHgyMTkyfSwKCXsnLScsICd2JywgMHgyMTkzfSwKCXsnPCcsICc+JywgMHgyMTk0fSwKCXsnVScsICdEJywgMHgyMTk1fSwKCXsnPCcsICc9JywgMHgyMWQwfSwKCXsnPScsICc+JywgMHgyMWQyfSwKCXsnPScsICc9JywgMHgyMWQ0fSwKI2RlZmluZSBER19TVEFSVF9NQVRIIDB4MjIwMAoJeydGJywgJ0EnLCAweDIyMDB9LAoJeydkJywgJ1AnLCAweDIyMDJ9LAoJeydUJywgJ0UnLCAweDIyMDN9LAoJeycvJywgJzAnLCAweDIyMDV9LAoJeydEJywgJ0UnLCAweDIyMDZ9LAoJeydOJywgJ0InLCAweDIyMDd9LAoJeycoJywgJy0nLCAweDIyMDh9LAoJeyctJywgJyknLCAweDIyMGJ9LAoJeycqJywgJ1AnLCAweDIyMGZ9LAoJeycrJywgJ1onLCAweDIyMTF9LAoJeyctJywgJzInLCAweDIyMTJ9LAoJeyctJywgJysnLCAweDIyMTN9LAoJeycqJywgJy0nLCAweDIyMTd9LAoJeydPJywgJ2InLCAweDIyMTh9LAoJeydTJywgJ2InLCAweDIyMTl9LAoJeydSJywgJ1QnLCAweDIyMWF9LAoJeycwJywgJygnLCAweDIyMWR9LAoJeycwJywgJzAnLCAweDIyMWV9LAoJeyctJywgJ0wnLCAweDIyMWZ9LAoJeyctJywgJ1YnLCAweDIyMjB9LAoJeydQJywgJ1AnLCAweDIyMjV9LAoJeydBJywgJ04nLCAweDIyMjd9LAoJeydPJywgJ1InLCAweDIyMjh9LAoJeycoJywgJ1UnLCAweDIyMjl9LAoJeycpJywgJ1UnLCAweDIyMmF9LAoJeydJJywgJ24nLCAweDIyMmJ9LAoJeydEJywgJ0knLCAweDIyMmN9LAoJeydJJywgJ28nLCAweDIyMmV9LAoJeycuJywgJzonLCAweDIyMzR9LAoJeyc6JywgJy4nLCAweDIyMzV9LAoJeyc6JywgJ1InLCAweDIyMzZ9LAoJeyc6JywgJzonLCAweDIyMzd9LAoJeyc/JywgJzEnLCAweDIyM2N9LAoJeydDJywgJ0cnLCAweDIyM2V9LAoJeyc/JywgJy0nLCAweDIyNDN9LAoJeyc/JywgJz0nLCAweDIyNDV9LAoJeyc/JywgJzInLCAweDIyNDh9LAoJeyc9JywgJz8nLCAweDIyNGN9LAoJeydIJywgJ0knLCAweDIyNTN9LAoJeychJywgJz0nLCAweDIyNjB9LAoJeyc9JywgJzMnLCAweDIyNjF9LAoJeyc9JywgJzwnLCAweDIyNjR9LAoJeyc+JywgJz0nLCAweDIyNjV9LAoJeyc8JywgJyonLCAweDIyNmF9LAoJeycqJywgJz4nLCAweDIyNmJ9LAoJeychJywgJzwnLCAweDIyNmV9LAoJeychJywgJz4nLCAweDIyNmZ9LAoJeycoJywgJ0MnLCAweDIyODJ9LAoJeycpJywgJ0MnLCAweDIyODN9LAoJeycoJywgJ18nLCAweDIyODZ9LAoJeycpJywgJ18nLCAweDIyODd9LAoJeycwJywgJy4nLCAweDIyOTl9LAoJeycwJywgJzInLCAweDIyOWF9LAoJeyctJywgJ1QnLCAweDIyYTV9LAoJeycuJywgJ1AnLCAweDIyYzV9LAoJeyc6JywgJzMnLCAweDIyZWV9LAoJeycuJywgJzMnLCAweDIyZWZ9LAojZGVmaW5lIERHX1NUQVJUX1RFQ0hOSUNBTCAweDIzMDIKCXsnRScsICdoJywgMHgyMzAyfSwKCXsnPCcsICc3JywgMHgyMzA4fSwKCXsnPicsICc3JywgMHgyMzA5fSwKCXsnNycsICc8JywgMHgyMzBhfSwKCXsnNycsICc+JywgMHgyMzBifSwKCXsnTicsICdJJywgMHgyMzEwfSwKCXsnKCcsICdBJywgMHgyMzEyfSwKCXsnVCcsICdSJywgMHgyMzE1fSwKCXsnSScsICd1JywgMHgyMzIwfSwKCXsnSScsICdsJywgMHgyMzIxfSwKCXsnPCcsICcvJywgMHgyMzI5fSwKCXsnLycsICc+JywgMHgyMzJhfSwKI2RlZmluZSBER19TVEFSVF9PVEhFUjIgMHgyNDIzCgl7J1YnLCAncycsIDB4MjQyM30sCgl7JzEnLCAnaCcsIDB4MjQ0MH0sCgl7JzMnLCAnaCcsIDB4MjQ0MX0sCgl7JzInLCAnaCcsIDB4MjQ0Mn0sCgl7JzQnLCAnaCcsIDB4MjQ0M30sCgl7JzEnLCAnaicsIDB4MjQ0Nn0sCgl7JzInLCAnaicsIDB4MjQ0N30sCgl7JzMnLCAnaicsIDB4MjQ0OH0sCgl7JzQnLCAnaicsIDB4MjQ0OX0sCgl7JzEnLCAnLicsIDB4MjQ4OH0sCgl7JzInLCAnLicsIDB4MjQ4OX0sCgl7JzMnLCAnLicsIDB4MjQ4YX0sCgl7JzQnLCAnLicsIDB4MjQ4Yn0sCgl7JzUnLCAnLicsIDB4MjQ4Y30sCgl7JzYnLCAnLicsIDB4MjQ4ZH0sCgl7JzcnLCAnLicsIDB4MjQ4ZX0sCgl7JzgnLCAnLicsIDB4MjQ4Zn0sCgl7JzknLCAnLicsIDB4MjQ5MH0sCiNkZWZpbmUgREdfU1RBUlRfRFJBV0lORyAweDI1MDAKCXsnaCcsICdoJywgMHgyNTAwfSwKCXsnSCcsICdIJywgMHgyNTAxfSwKCXsndicsICd2JywgMHgyNTAyfSwKCXsnVicsICdWJywgMHgyNTAzfSwKCXsnMycsICctJywgMHgyNTA0fSwKCXsnMycsICdfJywgMHgyNTA1fSwKCXsnMycsICchJywgMHgyNTA2fSwKCXsnMycsICcvJywgMHgyNTA3fSwKCXsnNCcsICctJywgMHgyNTA4fSwKCXsnNCcsICdfJywgMHgyNTA5fSwKCXsnNCcsICchJywgMHgyNTBhfSwKCXsnNCcsICcvJywgMHgyNTBifSwKCXsnZCcsICdyJywgMHgyNTBjfSwKCXsnZCcsICdSJywgMHgyNTBkfSwKCXsnRCcsICdyJywgMHgyNTBlfSwKCXsnRCcsICdSJywgMHgyNTBmfSwKCXsnZCcsICdsJywgMHgyNTEwfSwKCXsnZCcsICdMJywgMHgyNTExfSwKCXsnRCcsICdsJywgMHgyNTEyfSwKCXsnTCcsICdEJywgMHgyNTEzfSwKCXsndScsICdyJywgMHgyNTE0fSwKCXsndScsICdSJywgMHgyNTE1fSwKCXsnVScsICdyJywgMHgyNTE2fSwKCXsnVScsICdSJywgMHgyNTE3fSwKCXsndScsICdsJywgMHgyNTE4fSwKCXsndScsICdMJywgMHgyNTE5fSwKCXsnVScsICdsJywgMHgyNTFhfSwKCXsnVScsICdMJywgMHgyNTFifSwKCXsndicsICdyJywgMHgyNTFjfSwKCXsndicsICdSJywgMHgyNTFkfSwKCXsnVicsICdyJywgMHgyNTIwfSwKCXsnVicsICdSJywgMHgyNTIzfSwKCXsndicsICdsJywgMHgyNTI0fSwKCXsndicsICdMJywgMHgyNTI1fSwKCXsnVicsICdsJywgMHgyNTI4fSwKCXsnVicsICdMJywgMHgyNTJifSwKCXsnZCcsICdoJywgMHgyNTJjfSwKCXsnZCcsICdIJywgMHgyNTJmfSwKCXsnRCcsICdoJywgMHgyNTMwfSwKCXsnRCcsICdIJywgMHgyNTMzfSwKCXsndScsICdoJywgMHgyNTM0fSwKCXsndScsICdIJywgMHgyNTM3fSwKCXsnVScsICdoJywgMHgyNTM4fSwKCXsnVScsICdIJywgMHgyNTNifSwKCXsndicsICdoJywgMHgyNTNjfSwKCXsndicsICdIJywgMHgyNTNmfSwKCXsnVicsICdoJywgMHgyNTQyfSwKCXsnVicsICdIJywgMHgyNTRifSwKCXsnRicsICdEJywgMHgyNTcxfSwKCXsnQicsICdEJywgMHgyNTcyfSwKI2RlZmluZSBER19TVEFSVF9CTE9DSyAweDI1ODAKCXsnVCcsICdCJywgMHgyNTgwfSwKCXsnTCcsICdCJywgMHgyNTg0fSwKCXsnRicsICdCJywgMHgyNTg4fSwKCXsnbCcsICdCJywgMHgyNThjfSwKCXsnUicsICdCJywgMHgyNTkwfSwKCXsnLicsICdTJywgMHgyNTkxfSwKCXsnOicsICdTJywgMHgyNTkyfSwKCXsnPycsICdTJywgMHgyNTkzfSwKI2RlZmluZSBER19TVEFSVF9TSEFQRVMgMHgyNWEwCgl7J2YnLCAnUycsIDB4MjVhMH0sCgl7J08nLCAnUycsIDB4MjVhMX0sCgl7J1InLCAnTycsIDB4MjVhMn0sCgl7J1InLCAncicsIDB4MjVhM30sCgl7J1InLCAnRicsIDB4MjVhNH0sCgl7J1InLCAnWScsIDB4MjVhNX0sCgl7J1InLCAnSCcsIDB4MjVhNn0sCgl7J1InLCAnWicsIDB4MjVhN30sCgl7J1InLCAnSycsIDB4MjVhOH0sCgl7J1InLCAnWCcsIDB4MjVhOX0sCgl7J3MnLCAnQicsIDB4MjVhYX0sCgl7J1MnLCAnUicsIDB4MjVhY30sCgl7J08nLCAncicsIDB4MjVhZH0sCgl7J1UnLCAnVCcsIDB4MjViMn0sCgl7J3UnLCAnVCcsIDB4MjViM30sCgl7J1AnLCAnUicsIDB4MjViNn0sCgl7J1QnLCAncicsIDB4MjViN30sCgl7J0QnLCAndCcsIDB4MjViY30sCgl7J2QnLCAnVCcsIDB4MjViZH0sCgl7J1AnLCAnTCcsIDB4MjVjMH0sCgl7J1QnLCAnbCcsIDB4MjVjMX0sCgl7J0QnLCAnYicsIDB4MjVjNn0sCgl7J0QnLCAndycsIDB4MjVjN30sCgl7J0wnLCAnWicsIDB4MjVjYX0sCgl7JzAnLCAnbScsIDB4MjVjYn0sCgl7JzAnLCAnbycsIDB4MjVjZX0sCgl7JzAnLCAnTScsIDB4MjVjZn0sCgl7JzAnLCAnTCcsIDB4MjVkMH0sCgl7JzAnLCAnUicsIDB4MjVkMX0sCgl7J1MnLCAnbicsIDB4MjVkOH0sCgl7J0knLCAnYycsIDB4MjVkOX0sCgl7J0YnLCAnZCcsIDB4MjVlMn0sCgl7J0InLCAnZCcsIDB4MjVlM30sCiNkZWZpbmUgREdfU1RBUlRfU1lNQk9MUyAweDI2MDUKCXsnKicsICcyJywgMHgyNjA1fSwKCXsnKicsICcxJywgMHgyNjA2fSwKCXsnPCcsICdIJywgMHgyNjFjfSwKCXsnPicsICdIJywgMHgyNjFlfSwKCXsnMCcsICd1JywgMHgyNjNhfSwKCXsnMCcsICdVJywgMHgyNjNifSwKCXsnUycsICdVJywgMHgyNjNjfSwKCXsnRicsICdtJywgMHgyNjQwfSwKCXsnTScsICdsJywgMHgyNjQyfSwKCXsnYycsICdTJywgMHgyNjYwfSwKCXsnYycsICdIJywgMHgyNjYxfSwKCXsnYycsICdEJywgMHgyNjYyfSwKCXsnYycsICdDJywgMHgyNjYzfSwKCXsnTScsICdkJywgMHgyNjY5fSwKCXsnTScsICc4JywgMHgyNjZhfSwKCXsnTScsICcyJywgMHgyNjZifSwKCXsnTScsICdiJywgMHgyNjZkfSwKCXsnTScsICd4JywgMHgyNjZlfSwKCXsnTScsICdYJywgMHgyNjZmfSwKI2RlZmluZSBER19TVEFSVF9ESU5HQkFUUyAweDI3MTMKCXsnTycsICdLJywgMHgyNzEzfSwKCXsnWCcsICdYJywgMHgyNzE3fSwKCXsnLScsICdYJywgMHgyNzIwfSwKI2RlZmluZSBER19TVEFSVF9DSktfU1lNQk9MUyAweDMwMDAKCXsnSScsICdTJywgMHgzMDAwfSwKCXsnLCcsICdfJywgMHgzMDAxfSwKCXsnLicsICdfJywgMHgzMDAyfSwKCXsnKycsICciJywgMHgzMDAzfSwKCXsnKycsICdfJywgMHgzMDA0fSwKCXsnKicsICdfJywgMHgzMDA1fSwKCXsnOycsICdfJywgMHgzMDA2fSwKCXsnMCcsICdfJywgMHgzMDA3fSwKCXsnPCcsICcrJywgMHgzMDBhfSwKCXsnPicsICcrJywgMHgzMDBifSwKCXsnPCcsICdcJycsIDB4MzAwY30sCgl7Jz4nLCAnXCcnLCAweDMwMGR9LAoJeyc8JywgJyInLCAweDMwMGV9LAoJeyc+JywgJyInLCAweDMwMGZ9LAoJeycoJywgJyInLCAweDMwMTB9LAoJeycpJywgJyInLCAweDMwMTF9LAoJeyc9JywgJ1QnLCAweDMwMTJ9LAoJeyc9JywgJ18nLCAweDMwMTN9LAoJeycoJywgJ1wnJywgMHgzMDE0fSwKCXsnKScsICdcJycsIDB4MzAxNX0sCgl7JygnLCAnSScsIDB4MzAxNn0sCgl7JyknLCAnSScsIDB4MzAxN30sCgl7Jy0nLCAnPycsIDB4MzAxY30sCiNkZWZpbmUgREdfU1RBUlRfSElSQUdBTkEgMHgzMDQxCgl7J0EnLCAnNScsIDB4MzA0MX0sCgl7J2EnLCAnNScsIDB4MzA0Mn0sCgl7J0knLCAnNScsIDB4MzA0M30sCgl7J2knLCAnNScsIDB4MzA0NH0sCgl7J1UnLCAnNScsIDB4MzA0NX0sCgl7J3UnLCAnNScsIDB4MzA0Nn0sCgl7J0UnLCAnNScsIDB4MzA0N30sCgl7J2UnLCAnNScsIDB4MzA0OH0sCgl7J08nLCAnNScsIDB4MzA0OX0sCgl7J28nLCAnNScsIDB4MzA0YX0sCgl7J2snLCAnYScsIDB4MzA0Yn0sCgl7J2cnLCAnYScsIDB4MzA0Y30sCgl7J2snLCAnaScsIDB4MzA0ZH0sCgl7J2cnLCAnaScsIDB4MzA0ZX0sCgl7J2snLCAndScsIDB4MzA0Zn0sCgl7J2cnLCAndScsIDB4MzA1MH0sCgl7J2snLCAnZScsIDB4MzA1MX0sCgl7J2cnLCAnZScsIDB4MzA1Mn0sCgl7J2snLCAnbycsIDB4MzA1M30sCgl7J2cnLCAnbycsIDB4MzA1NH0sCgl7J3MnLCAnYScsIDB4MzA1NX0sCgl7J3onLCAnYScsIDB4MzA1Nn0sCgl7J3MnLCAnaScsIDB4MzA1N30sCgl7J3onLCAnaScsIDB4MzA1OH0sCgl7J3MnLCAndScsIDB4MzA1OX0sCgl7J3onLCAndScsIDB4MzA1YX0sCgl7J3MnLCAnZScsIDB4MzA1Yn0sCgl7J3onLCAnZScsIDB4MzA1Y30sCgl7J3MnLCAnbycsIDB4MzA1ZH0sCgl7J3onLCAnbycsIDB4MzA1ZX0sCgl7J3QnLCAnYScsIDB4MzA1Zn0sCgl7J2QnLCAnYScsIDB4MzA2MH0sCgl7J3QnLCAnaScsIDB4MzA2MX0sCgl7J2QnLCAnaScsIDB4MzA2Mn0sCgl7J3QnLCAnVScsIDB4MzA2M30sCgl7J3QnLCAndScsIDB4MzA2NH0sCgl7J2QnLCAndScsIDB4MzA2NX0sCgl7J3QnLCAnZScsIDB4MzA2Nn0sCgl7J2QnLCAnZScsIDB4MzA2N30sCgl7J3QnLCAnbycsIDB4MzA2OH0sCgl7J2QnLCAnbycsIDB4MzA2OX0sCgl7J24nLCAnYScsIDB4MzA2YX0sCgl7J24nLCAnaScsIDB4MzA2Yn0sCgl7J24nLCAndScsIDB4MzA2Y30sCgl7J24nLCAnZScsIDB4MzA2ZH0sCgl7J24nLCAnbycsIDB4MzA2ZX0sCgl7J2gnLCAnYScsIDB4MzA2Zn0sCgl7J2InLCAnYScsIDB4MzA3MH0sCgl7J3AnLCAnYScsIDB4MzA3MX0sCgl7J2gnLCAnaScsIDB4MzA3Mn0sCgl7J2InLCAnaScsIDB4MzA3M30sCgl7J3AnLCAnaScsIDB4MzA3NH0sCgl7J2gnLCAndScsIDB4MzA3NX0sCgl7J2InLCAndScsIDB4MzA3Nn0sCgl7J3AnLCAndScsIDB4MzA3N30sCgl7J2gnLCAnZScsIDB4MzA3OH0sCgl7J2InLCAnZScsIDB4MzA3OX0sCgl7J3AnLCAnZScsIDB4MzA3YX0sCgl7J2gnLCAnbycsIDB4MzA3Yn0sCgl7J2InLCAnbycsIDB4MzA3Y30sCgl7J3AnLCAnbycsIDB4MzA3ZH0sCgl7J20nLCAnYScsIDB4MzA3ZX0sCgl7J20nLCAnaScsIDB4MzA3Zn0sCgl7J20nLCAndScsIDB4MzA4MH0sCgl7J20nLCAnZScsIDB4MzA4MX0sCgl7J20nLCAnbycsIDB4MzA4Mn0sCgl7J3knLCAnQScsIDB4MzA4M30sCgl7J3knLCAnYScsIDB4MzA4NH0sCgl7J3knLCAnVScsIDB4MzA4NX0sCgl7J3knLCAndScsIDB4MzA4Nn0sCgl7J3knLCAnTycsIDB4MzA4N30sCgl7J3knLCAnbycsIDB4MzA4OH0sCgl7J3InLCAnYScsIDB4MzA4OX0sCgl7J3InLCAnaScsIDB4MzA4YX0sCgl7J3InLCAndScsIDB4MzA4Yn0sCgl7J3InLCAnZScsIDB4MzA4Y30sCgl7J3InLCAnbycsIDB4MzA4ZH0sCgl7J3cnLCAnQScsIDB4MzA4ZX0sCgl7J3cnLCAnYScsIDB4MzA4Zn0sCgl7J3cnLCAnaScsIDB4MzA5MH0sCgl7J3cnLCAnZScsIDB4MzA5MX0sCgl7J3cnLCAnbycsIDB4MzA5Mn0sCgl7J24nLCAnNScsIDB4MzA5M30sCgl7J3YnLCAndScsIDB4MzA5NH0sCgl7JyInLCAnNScsIDB4MzA5Yn0sCgl7JzAnLCAnNScsIDB4MzA5Y30sCgl7JyonLCAnNScsIDB4MzA5ZH0sCgl7JysnLCAnNScsIDB4MzA5ZX0sCiNkZWZpbmUgREdfU1RBUlRfS0FUQUtBTkEgMHgzMGExCgl7J2EnLCAnNicsIDB4MzBhMX0sCgl7J0EnLCAnNicsIDB4MzBhMn0sCgl7J2knLCAnNicsIDB4MzBhM30sCgl7J0knLCAnNicsIDB4MzBhNH0sCgl7J3UnLCAnNicsIDB4MzBhNX0sCgl7J1UnLCAnNicsIDB4MzBhNn0sCgl7J2UnLCAnNicsIDB4MzBhN30sCgl7J0UnLCAnNicsIDB4MzBhOH0sCgl7J28nLCAnNicsIDB4MzBhOX0sCgl7J08nLCAnNicsIDB4MzBhYX0sCgl7J0snLCAnYScsIDB4MzBhYn0sCgl7J0cnLCAnYScsIDB4MzBhY30sCgl7J0snLCAnaScsIDB4MzBhZH0sCgl7J0cnLCAnaScsIDB4MzBhZX0sCgl7J0snLCAndScsIDB4MzBhZn0sCgl7J0cnLCAndScsIDB4MzBiMH0sCgl7J0snLCAnZScsIDB4MzBiMX0sCgl7J0cnLCAnZScsIDB4MzBiMn0sCgl7J0snLCAnbycsIDB4MzBiM30sCgl7J0cnLCAnbycsIDB4MzBiNH0sCgl7J1MnLCAnYScsIDB4MzBiNX0sCgl7J1onLCAnYScsIDB4MzBiNn0sCgl7J1MnLCAnaScsIDB4MzBiN30sCgl7J1onLCAnaScsIDB4MzBiOH0sCgl7J1MnLCAndScsIDB4MzBiOX0sCgl7J1onLCAndScsIDB4MzBiYX0sCgl7J1MnLCAnZScsIDB4MzBiYn0sCgl7J1onLCAnZScsIDB4MzBiY30sCgl7J1MnLCAnbycsIDB4MzBiZH0sCgl7J1onLCAnbycsIDB4MzBiZX0sCgl7J1QnLCAnYScsIDB4MzBiZn0sCgl7J0QnLCAnYScsIDB4MzBjMH0sCgl7J1QnLCAnaScsIDB4MzBjMX0sCgl7J0QnLCAnaScsIDB4MzBjMn0sCgl7J1QnLCAnVScsIDB4MzBjM30sCgl7J1QnLCAndScsIDB4MzBjNH0sCgl7J0QnLCAndScsIDB4MzBjNX0sCgl7J1QnLCAnZScsIDB4MzBjNn0sCgl7J0QnLCAnZScsIDB4MzBjN30sCgl7J1QnLCAnbycsIDB4MzBjOH0sCgl7J0QnLCAnbycsIDB4MzBjOX0sCgl7J04nLCAnYScsIDB4MzBjYX0sCgl7J04nLCAnaScsIDB4MzBjYn0sCgl7J04nLCAndScsIDB4MzBjY30sCgl7J04nLCAnZScsIDB4MzBjZH0sCgl7J04nLCAnbycsIDB4MzBjZX0sCgl7J0gnLCAnYScsIDB4MzBjZn0sCgl7J0InLCAnYScsIDB4MzBkMH0sCgl7J1AnLCAnYScsIDB4MzBkMX0sCgl7J0gnLCAnaScsIDB4MzBkMn0sCgl7J0InLCAnaScsIDB4MzBkM30sCgl7J1AnLCAnaScsIDB4MzBkNH0sCgl7J0gnLCAndScsIDB4MzBkNX0sCgl7J0InLCAndScsIDB4MzBkNn0sCgl7J1AnLCAndScsIDB4MzBkN30sCgl7J0gnLCAnZScsIDB4MzBkOH0sCgl7J0InLCAnZScsIDB4MzBkOX0sCgl7J1AnLCAnZScsIDB4MzBkYX0sCgl7J0gnLCAnbycsIDB4MzBkYn0sCgl7J0InLCAnbycsIDB4MzBkY30sCgl7J1AnLCAnbycsIDB4MzBkZH0sCgl7J00nLCAnYScsIDB4MzBkZX0sCgl7J00nLCAnaScsIDB4MzBkZn0sCgl7J00nLCAndScsIDB4MzBlMH0sCgl7J00nLCAnZScsIDB4MzBlMX0sCgl7J00nLCAnbycsIDB4MzBlMn0sCgl7J1knLCAnQScsIDB4MzBlM30sCgl7J1knLCAnYScsIDB4MzBlNH0sCgl7J1knLCAnVScsIDB4MzBlNX0sCgl7J1knLCAndScsIDB4MzBlNn0sCgl7J1knLCAnTycsIDB4MzBlN30sCgl7J1knLCAnbycsIDB4MzBlOH0sCgl7J1InLCAnYScsIDB4MzBlOX0sCgl7J1InLCAnaScsIDB4MzBlYX0sCgl7J1InLCAndScsIDB4MzBlYn0sCgl7J1InLCAnZScsIDB4MzBlY30sCgl7J1InLCAnbycsIDB4MzBlZH0sCgl7J1cnLCAnQScsIDB4MzBlZX0sCgl7J1cnLCAnYScsIDB4MzBlZn0sCgl7J1cnLCAnaScsIDB4MzBmMH0sCgl7J1cnLCAnZScsIDB4MzBmMX0sCgl7J1cnLCAnbycsIDB4MzBmMn0sCgl7J04nLCAnNicsIDB4MzBmM30sCgl7J1YnLCAndScsIDB4MzBmNH0sCgl7J0snLCAnQScsIDB4MzBmNX0sCgl7J0snLCAnRScsIDB4MzBmNn0sCgl7J1YnLCAnYScsIDB4MzBmN30sCgl7J1YnLCAnaScsIDB4MzBmOH0sCgl7J1YnLCAnZScsIDB4MzBmOX0sCgl7J1YnLCAnbycsIDB4MzBmYX0sCgl7Jy4nLCAnNicsIDB4MzBmYn0sCgl7Jy0nLCAnNicsIDB4MzBmY30sCgl7JyonLCAnNicsIDB4MzBmZH0sCgl7JysnLCAnNicsIDB4MzBmZX0sCiNkZWZpbmUgREdfU1RBUlRfQk9QT01PRk8gMHgzMTA1Cgl7J2InLCAnNCcsIDB4MzEwNX0sCgl7J3AnLCAnNCcsIDB4MzEwNn0sCgl7J20nLCAnNCcsIDB4MzEwN30sCgl7J2YnLCAnNCcsIDB4MzEwOH0sCgl7J2QnLCAnNCcsIDB4MzEwOX0sCgl7J3QnLCAnNCcsIDB4MzEwYX0sCgl7J24nLCAnNCcsIDB4MzEwYn0sCgl7J2wnLCAnNCcsIDB4MzEwY30sCgl7J2cnLCAnNCcsIDB4MzEwZH0sCgl7J2snLCAnNCcsIDB4MzEwZX0sCgl7J2gnLCAnNCcsIDB4MzEwZn0sCgl7J2onLCAnNCcsIDB4MzExMH0sCgl7J3EnLCAnNCcsIDB4MzExMX0sCgl7J3gnLCAnNCcsIDB4MzExMn0sCgl7J3onLCAnaCcsIDB4MzExM30sCgl7J2MnLCAnaCcsIDB4MzExNH0sCgl7J3MnLCAnaCcsIDB4MzExNX0sCgl7J3InLCAnNCcsIDB4MzExNn0sCgl7J3onLCAnNCcsIDB4MzExN30sCgl7J2MnLCAnNCcsIDB4MzExOH0sCgl7J3MnLCAnNCcsIDB4MzExOX0sCgl7J2EnLCAnNCcsIDB4MzExYX0sCgl7J28nLCAnNCcsIDB4MzExYn0sCgl7J2UnLCAnNCcsIDB4MzExY30sCgl7J2EnLCAnaScsIDB4MzExZX0sCgl7J2UnLCAnaScsIDB4MzExZn0sCgl7J2EnLCAndScsIDB4MzEyMH0sCgl7J28nLCAndScsIDB4MzEyMX0sCgl7J2EnLCAnbicsIDB4MzEyMn0sCgl7J2UnLCAnbicsIDB4MzEyM30sCgl7J2EnLCAnTicsIDB4MzEyNH0sCgl7J2UnLCAnTicsIDB4MzEyNX0sCgl7J2UnLCAncicsIDB4MzEyNn0sCgl7J2knLCAnNCcsIDB4MzEyN30sCgl7J3UnLCAnNCcsIDB4MzEyOH0sCgl7J2knLCAndScsIDB4MzEyOX0sCgl7J3YnLCAnNCcsIDB4MzEyYX0sCgl7J24nLCAnRycsIDB4MzEyYn0sCgl7J2cnLCAnbicsIDB4MzEyY30sCiNkZWZpbmUgREdfU1RBUlRfT1RIRVIzIDB4MzIyMAoJeycxJywgJ2MnLCAweDMyMjB9LAoJeycyJywgJ2MnLCAweDMyMjF9LAoJeyczJywgJ2MnLCAweDMyMjJ9LAoJeyc0JywgJ2MnLCAweDMyMjN9LAoJeyc1JywgJ2MnLCAweDMyMjR9LAoJeyc2JywgJ2MnLCAweDMyMjV9LAoJeyc3JywgJ2MnLCAweDMyMjZ9LAoJeyc4JywgJ2MnLCAweDMyMjd9LAoJeyc5JywgJ2MnLCAweDMyMjh9LAoJLyogY29kZSBwb2ludHMgMHhlMDAwIC0gMHhlZmZmIGV4Y2x1ZGVkLCB0aGV5IGhhdmUgbm8gYXNzaWduZWQKCSAqIGNoYXJhY3RlcnMsIG9ubHkgdXNlZCBpbiBwcm9wb3NhbHMuICovCgl7J2YnLCAnZicsIDB4ZmIwMH0sCgl7J2YnLCAnaScsIDB4ZmIwMX0sCgl7J2YnLCAnbCcsIDB4ZmIwMn0sCgl7J2YnLCAndCcsIDB4ZmIwNX0sCgl7J3MnLCAndCcsIDB4ZmIwNn0sCiMgICAgICBlbmRpZiAvKiBGRUFUX01CWVRFICovCgoJe05VTCwgTlVMLCBOVUx9CiAgICAgICB9OwoKIyAgICBlbmRpZiAvKiBPTERfRElHUkFQSFMgKi8KCiMgICBlbmRpZiAvKiBNYWNpbnRvc2ggKi8KIyAgZW5kaWYgLyogRUJDRElDICovCiMgZW5kaWYgICAgLyogIUhQVVhfRElHUkFQSFMgKi8KI2VuZGlmCS8qICFfX01JTlRfXyAqLwoKLyoKICogaGFuZGxlIGRpZ3JhcGhzIGFmdGVyIHR5cGluZyBhIGNoYXJhY3RlcgogKi8KICAgIGludApkb19kaWdyYXBoKGludCBjKQp7CiAgICBzdGF0aWMgaW50CWJhY2tzcGFjZWQ7CS8qIGNoYXJhY3RlciBiZWZvcmUgS19CUyAqLwogICAgc3RhdGljIGludAlsYXN0Y2hhcjsJLyogbGFzdCB0eXBlZCBjaGFyYWN0ZXIgKi8KCiAgICBpZiAoYyA9PSAtMSkJCS8qIGluaXQgdmFsdWVzICovCiAgICB7CgliYWNrc3BhY2VkID0gLTE7CiAgICB9CiAgICBlbHNlIGlmIChwX2RnKQogICAgewoJaWYgKGJhY2tzcGFjZWQgPj0gMCkKCSAgICBjID0gZ2V0ZGlncmFwaChiYWNrc3BhY2VkLCBjLCBGQUxTRSk7CgliYWNrc3BhY2VkID0gLTE7CglpZiAoKGMgPT0gS19CUyB8fCBjID09IEN0cmxfSCkgJiYgbGFzdGNoYXIgPj0gMCkKCSAgICBiYWNrc3BhY2VkID0gbGFzdGNoYXI7CiAgICB9CiAgICBsYXN0Y2hhciA9IGM7CiAgICByZXR1cm4gYzsKfQoKLyoKICogRmluZCBhIGRpZ3JhcGggZm9yICJ2YWwiLiAgSWYgZm91bmQgcmV0dXJuIHRoZSBzdHJpbmcgdG8gZGlzcGxheSBpdC4KICogSWYgbm90IGZvdW5kIHJldHVybiBOVUxMLgogKi8KICAgIGNoYXJfdSAqCmdldF9kaWdyYXBoX2Zvcl9jaGFyKGludCB2YWxfYXJnKQp7CiAgICBpbnQJCXZhbCA9IHZhbF9hcmc7CiAgICBpbnQJCWk7CiAgICBpbnQJCXVzZV9kZWZhdWx0czsKICAgIGRpZ3JfVAkqZHA7CiAgICBzdGF0aWMgICAgICBjaGFyX3UgICAgICByWzNdOwoKI2lmIGRlZmluZWQoVVNFX1VOSUNPREVfRElHUkFQSFMpCiAgICBpZiAoIWVuY191dGY4KQogICAgewoJY2hhcl91CSAgICBidWZbNl0sICp0bzsKCXZpbWNvbnZfVCAgIHZjOwoKCS8vIGNvbnZlcnQgdGhlIGNoYXJhY3RlciBmcm9tICdlbmNvZGluZycgdG8gVW5pY29kZQoJaSA9IG1iX2NoYXIyYnl0ZXModmFsLCBidWYpOwoJdmMudmNfdHlwZSA9IENPTlZfTk9ORTsKCWlmIChjb252ZXJ0X3NldHVwKCZ2YywgcF9lbmMsIChjaGFyX3UgKikidXRmLTgiKSA9PSBPSykKCXsKCSAgICB2Yy52Y19mYWlsID0gVFJVRTsKCSAgICB0byA9IHN0cmluZ19jb252ZXJ0KCZ2YywgYnVmLCAmaSk7CgkgICAgaWYgKHRvICE9IE5VTEwpCgkgICAgewoJCXZhbCA9IHV0Zl9wdHIyY2hhcih0byk7CgkJdmltX2ZyZWUodG8pOwoJICAgIH0KCSAgICAodm9pZCljb252ZXJ0X3NldHVwKCZ2YywgTlVMTCwgTlVMTCk7Cgl9CiAgICB9CiNlbmRpZgoKICAgIGZvciAodXNlX2RlZmF1bHRzID0gMDsgdXNlX2RlZmF1bHRzIDw9IDE7IHVzZV9kZWZhdWx0cysrKQogICAgewoJaWYgKHVzZV9kZWZhdWx0cyA9PSAwKQoJICAgIGRwID0gKGRpZ3JfVCAqKXVzZXJfZGlncmFwaHMuZ2FfZGF0YTsKCWVsc2UKCSAgICBkcCA9IGRpZ3JhcGhkZWZhdWx0OwoJZm9yIChpID0gMDsgdXNlX2RlZmF1bHRzID8gZHAtPmNoYXIxICE9IE5VTAoJCQkJCSAgICAgICA6IGkgPCB1c2VyX2RpZ3JhcGhzLmdhX2xlbjsgKytpKQoJewoJICAgIGlmIChkcC0+cmVzdWx0ID09IHZhbCkKCSAgICB7CgkJclswXSA9IGRwLT5jaGFyMTsKCQlyWzFdID0gZHAtPmNoYXIyOwoJCXJbMl0gPSBOVUw7CgkJcmV0dXJuIHI7CgkgICAgfQoJICAgICsrZHA7Cgl9CiAgICB9CiAgICByZXR1cm4gTlVMTDsKfQoKLyoKICogR2V0IGEgZGlncmFwaC4gIFVzZWQgYWZ0ZXIgdHlwaW5nIENUUkwtSyBvbiB0aGUgY29tbWFuZCBsaW5lIG9yIGluIG5vcm1hbAogKiBtb2RlLgogKiBSZXR1cm5zIGNvbXBvc2VkIGNoYXJhY3Rlciwgb3IgTlVMIHdoZW4gRVNDIHdhcyB1c2VkLgogKi8KICAgIGludApnZXRfZGlncmFwaCgKICAgIGludAkJY21kbGluZSkJLyogVFJVRSB3aGVuIGNhbGxlZCBmcm9tIHRoZSBjbWRsaW5lICovCnsKICAgIGludAkJYywgY2M7CgogICAgKytub19tYXBwaW5nOwogICAgKythbGxvd19rZXlzOwogICAgYyA9IHBsYWluX3ZnZXRjKCk7CiAgICAtLW5vX21hcHBpbmc7CiAgICAtLWFsbG93X2tleXM7CiAgICBpZiAoYyAhPSBFU0MpCQkvKiBFU0MgY2FuY2VscyBDVFJMLUsgKi8KICAgIHsKCWlmIChJU19TUEVDSUFMKGMpKQkvKiBpbnNlcnQgc3BlY2lhbCBrZXkgY29kZSAqLwoJICAgIHJldHVybiBjOwoJaWYgKGNtZGxpbmUpCgl7CgkgICAgaWYgKGNoYXIyY2VsbHMoYykgPT0gMQojaWYgZGVmaW5lZChGRUFUX0NSWVBUKSB8fCBkZWZpbmVkKEZFQVRfRVZBTCkKCQkgICAgJiYgY21kbGluZV9zdGFyID09IDAKI2VuZGlmCgkJICAgICkKCQlwdXRjbWRsaW5lKGMsIFRSVUUpOwoJfQojaWZkZWYgRkVBVF9DTURMX0lORk8KCWVsc2UKCSAgICBhZGRfdG9fc2hvd2NtZChjKTsKI2VuZGlmCgkrK25vX21hcHBpbmc7CgkrK2FsbG93X2tleXM7CgljYyA9IHBsYWluX3ZnZXRjKCk7CgktLW5vX21hcHBpbmc7CgktLWFsbG93X2tleXM7CglpZiAoY2MgIT0gRVNDKQkgICAgLyogRVNDIGNhbmNlbHMgQ1RSTC1LICovCgkgICAgcmV0dXJuIGdldGRpZ3JhcGgoYywgY2MsIFRSVUUpOwogICAgfQogICAgcmV0dXJuIE5VTDsKfQoKLyoKICogTG9va3VwIHRoZSBwYWlyICJjaGFyMSIsICJjaGFyMiIgaW4gdGhlIGRpZ3JhcGggdGFibGVzLgogKiBJZiBubyBtYXRjaCwgcmV0dXJuICJjaGFyMiIuCiAqIElmICJtZXRhX2NoYXIiIGlzIFRSVUUgYW5kICJjaGFyMSIgaXMgYSBzcGFjZSwgcmV0dXJuICJjaGFyMiIgfCAweDgwLgogKi8KICAgIHN0YXRpYyBpbnQKZ2V0ZXhhY3RkaWdyYXBoKGludCBjaGFyMSwgaW50IGNoYXIyLCBpbnQgbWV0YV9jaGFyKQp7CiAgICBpbnQJCWk7CiAgICBpbnQJCXJldHZhbCA9IDA7CiAgICBkaWdyX1QJKmRwOwoKICAgIGlmIChJU19TUEVDSUFMKGNoYXIxKSB8fCBJU19TUEVDSUFMKGNoYXIyKSkKCXJldHVybiBjaGFyMjsKCiAgICAvKgogICAgICogU2VhcmNoIHVzZXIgZGlncmFwaHMgZmlyc3QuCiAgICAgKi8KICAgIGRwID0gKGRpZ3JfVCAqKXVzZXJfZGlncmFwaHMuZ2FfZGF0YTsKICAgIGZvciAoaSA9IDA7IGkgPCB1c2VyX2RpZ3JhcGhzLmdhX2xlbjsgKytpKQogICAgewoJaWYgKChpbnQpZHAtPmNoYXIxID09IGNoYXIxICYmIChpbnQpZHAtPmNoYXIyID09IGNoYXIyKQoJewoJICAgIHJldHZhbCA9IGRwLT5yZXN1bHQ7CgkgICAgYnJlYWs7Cgl9CgkrK2RwOwogICAgfQoKICAgIC8qCiAgICAgKiBTZWFyY2ggZGVmYXVsdCBkaWdyYXBocy4KICAgICAqLwogICAgaWYgKHJldHZhbCA9PSAwKQogICAgewoJZHAgPSBkaWdyYXBoZGVmYXVsdDsKCWZvciAoaSA9IDA7IGRwLT5jaGFyMSAhPSAwOyArK2kpCgl7CgkgICAgaWYgKChpbnQpZHAtPmNoYXIxID09IGNoYXIxICYmIChpbnQpZHAtPmNoYXIyID09IGNoYXIyKQoJICAgIHsKCQlyZXR2YWwgPSBkcC0+cmVzdWx0OwoJCWJyZWFrOwoJICAgIH0KCSAgICArK2RwOwoJfQogICAgfQojaWZkZWYgRkVBVF9NQllURQojIGlmZGVmIFVTRV9VTklDT0RFX0RJR1JBUEhTCiAgICBpZiAocmV0dmFsICE9IDAgJiYgIWVuY191dGY4KQogICAgewoJY2hhcl91CSAgICBidWZbNl0sICp0bzsKCXZpbWNvbnZfVCAgIHZjOwoKCS8qCgkgKiBDb252ZXJ0IHRoZSBVbmljb2RlIGRpZ3JhcGggdG8gJ2VuY29kaW5nJy4KCSAqLwoJaSA9IHV0Zl9jaGFyMmJ5dGVzKHJldHZhbCwgYnVmKTsKCXJldHZhbCA9IDA7Cgl2Yy52Y190eXBlID0gQ09OVl9OT05FOwoJaWYgKGNvbnZlcnRfc2V0dXAoJnZjLCAoY2hhcl91ICopInV0Zi04IiwgcF9lbmMpID09IE9LKQoJewoJICAgIHZjLnZjX2ZhaWwgPSBUUlVFOwoJICAgIHRvID0gc3RyaW5nX2NvbnZlcnQoJnZjLCBidWYsICZpKTsKCSAgICBpZiAodG8gIT0gTlVMTCkKCSAgICB7CgkJcmV0dmFsID0gKCptYl9wdHIyY2hhcikodG8pOwoJCXZpbV9mcmVlKHRvKTsKCSAgICB9CgkgICAgKHZvaWQpY29udmVydF9zZXR1cCgmdmMsIE5VTEwsIE5VTEwpOwoJfQogICAgfQojIGVuZGlmCgogICAgLyogSWdub3JlIG11bHRpLWJ5dGUgY2hhcmFjdGVycyB3aGVuIG5vdCBpbiBtdWx0aS1ieXRlIG1vZGUuICovCiAgICBpZiAoIWhhc19tYnl0ZSAmJiByZXR2YWwgPiAweGZmKQoJcmV0dmFsID0gMDsKI2VuZGlmCgogICAgaWYgKHJldHZhbCA9PSAwKQkJLyogZGlncmFwaCBkZWxldGVkIG9yIG5vdCBmb3VuZCAqLwogICAgewoJaWYgKGNoYXIxID09ICcgJyAmJiBtZXRhX2NoYXIpCS8qIDxzcGFjZT4gPGNoYXI+IC0tPiBtZXRhLWNoYXIgKi8KCSAgICByZXR1cm4gKGNoYXIyIHwgMHg4MCk7CglyZXR1cm4gY2hhcjI7CiAgICB9CiAgICByZXR1cm4gcmV0dmFsOwp9CgovKgogKiBHZXQgZGlncmFwaC4KICogQWxsb3cgZm9yIGJvdGggY2hhcjEtY2hhcjIgYW5kIGNoYXIyLWNoYXIxCiAqLwogICAgaW50CmdldGRpZ3JhcGgoaW50IGNoYXIxLCBpbnQgY2hhcjIsIGludCBtZXRhX2NoYXIpCnsKICAgIGludAkgICAgcmV0dmFsOwoKICAgIGlmICgoKHJldHZhbCA9IGdldGV4YWN0ZGlncmFwaChjaGFyMSwgY2hhcjIsIG1ldGFfY2hhcikpID09IGNoYXIyKQoJICAgICYmIChjaGFyMSAhPSBjaGFyMikKCSAgICAmJiAoKHJldHZhbCA9IGdldGV4YWN0ZGlncmFwaChjaGFyMiwgY2hhcjEsIG1ldGFfY2hhcikpID09IGNoYXIxKSkKCXJldHVybiBjaGFyMjsKICAgIHJldHVybiByZXR2YWw7Cn0KCi8qCiAqIEFkZCB0aGUgZGlncmFwaHMgaW4gdGhlIGFyZ3VtZW50IHRvIHRoZSBkaWdyYXBoIHRhYmxlLgogKiBmb3JtYXQ6IHtjMX17YzJ9IGNoYXIge2MxfXtjMn0gY2hhciAuLi4KICovCiAgICB2b2lkCnB1dGRpZ3JhcGgoY2hhcl91ICpzdHIpCnsKICAgIGludAkJY2hhcjEsIGNoYXIyLCBuOwogICAgaW50CQlpOwogICAgZGlncl9UCSpkcDsKCiAgICB3aGlsZSAoKnN0ciAhPSBOVUwpCiAgICB7CglzdHIgPSBza2lwd2hpdGUoc3RyKTsKCWlmICgqc3RyID09IE5VTCkKCSAgICByZXR1cm47CgljaGFyMSA9ICpzdHIrKzsKCWNoYXIyID0gKnN0cisrOwoJaWYgKGNoYXIyID09IDApCgl7CgkgICAgRU1TRyhfKGVfaW52YXJnKSk7CgkgICAgcmV0dXJuOwoJfQoJaWYgKGNoYXIxID09IEVTQyB8fCBjaGFyMiA9PSBFU0MpCgl7CgkgICAgRU1TRyhfKCJFMTA0OiBFc2NhcGUgbm90IGFsbG93ZWQgaW4gZGlncmFwaCIpKTsKCSAgICByZXR1cm47Cgl9CglzdHIgPSBza2lwd2hpdGUoc3RyKTsKCWlmICghVklNX0lTRElHSVQoKnN0cikpCgl7CgkgICAgRU1TRyhfKGVfbnVtYmVyX2V4cCkpOwoJICAgIHJldHVybjsKCX0KCW4gPSBnZXRkaWdpdHMoJnN0cik7CgoJLyogSWYgdGhlIGRpZ3JhcGggYWxyZWFkeSBleGlzdHMsIHJlcGxhY2UgdGhlIHJlc3VsdC4gKi8KCWRwID0gKGRpZ3JfVCAqKXVzZXJfZGlncmFwaHMuZ2FfZGF0YTsKCWZvciAoaSA9IDA7IGkgPCB1c2VyX2RpZ3JhcGhzLmdhX2xlbjsgKytpKQoJewoJICAgIGlmICgoaW50KWRwLT5jaGFyMSA9PSBjaGFyMSAmJiAoaW50KWRwLT5jaGFyMiA9PSBjaGFyMikKCSAgICB7CgkJZHAtPnJlc3VsdCA9IG47CgkJYnJlYWs7CgkgICAgfQoJICAgICsrZHA7Cgl9CgoJLyogQWRkIGEgbmV3IGRpZ3JhcGggdG8gdGhlIHRhYmxlLiAqLwoJaWYgKGkgPT0gdXNlcl9kaWdyYXBocy5nYV9sZW4pCgl7CgkgICAgaWYgKGdhX2dyb3coJnVzZXJfZGlncmFwaHMsIDEpID09IE9LKQoJICAgIHsKCQlkcCA9IChkaWdyX1QgKil1c2VyX2RpZ3JhcGhzLmdhX2RhdGEgKyB1c2VyX2RpZ3JhcGhzLmdhX2xlbjsKCQlkcC0+Y2hhcjEgPSBjaGFyMTsKCQlkcC0+Y2hhcjIgPSBjaGFyMjsKCQlkcC0+cmVzdWx0ID0gbjsKCQkrK3VzZXJfZGlncmFwaHMuZ2FfbGVuOwoJICAgIH0KCX0KICAgIH0KfQoKI2lmIGRlZmluZWQoVVNFX1VOSUNPREVfRElHUkFQSFMpCiAgICBzdGF0aWMgdm9pZApkaWdyYXBoX2hlYWRlcihjaGFyICptc2cpCnsKICAgIGlmIChtc2dfY29sID4gMCkKCW1zZ19wdXRjaGFyKCdcbicpOwogICAgbXNnX291dHRyYW5zX2F0dHIoKGNoYXJfdSAqKW1zZywgSExfQVRUUihITEZfQ00pKTsKICAgIG1zZ19wdXRjaGFyKCdcbicpOwp9CiNlbmRpZgoKICAgIHZvaWQKbGlzdGRpZ3JhcGhzKGludCB1c2VfaGVhZGVycykKewogICAgaW50CQlpOwogICAgZGlncl9UCSpkcDsKICAgIHJlc3VsdF9UCXByZXZpb3VzID0gMDsKCiAgICBtc2dfcHV0Y2hhcignXG4nKTsKCiAgICBkcCA9IGRpZ3JhcGhkZWZhdWx0OwogICAgZm9yIChpID0gMDsgZHAtPmNoYXIxICE9IE5VTCAmJiAhZ290X2ludDsgKytpKQogICAgewojaWYgZGVmaW5lZChVU0VfVU5JQ09ERV9ESUdSQVBIUykKCWRpZ3JfVCB0bXA7CgoJLyogTWF5IG5lZWQgdG8gY29udmVydCB0aGUgcmVzdWx0IHRvICdlbmNvZGluZycuICovCgl0bXAuY2hhcjEgPSBkcC0+Y2hhcjE7Cgl0bXAuY2hhcjIgPSBkcC0+Y2hhcjI7Cgl0bXAucmVzdWx0ID0gZ2V0ZXhhY3RkaWdyYXBoKHRtcC5jaGFyMSwgdG1wLmNoYXIyLCBGQUxTRSk7CglpZiAodG1wLnJlc3VsdCAhPSAwICYmIHRtcC5yZXN1bHQgIT0gdG1wLmNoYXIyCgkJCQkJICAmJiAoaGFzX21ieXRlIHx8IHRtcC5yZXN1bHQgPD0gMjU1KSkKCSAgICBwcmludGRpZ3JhcGgoJnRtcCwgdXNlX2hlYWRlcnMgPyAmcHJldmlvdXMgOiBOVUxMKTsKI2Vsc2UKCglpZiAoZ2V0ZXhhY3RkaWdyYXBoKGRwLT5jaGFyMSwgZHAtPmNoYXIyLCBGQUxTRSkgPT0gZHAtPnJlc3VsdAojIGlmZGVmIEZFQVRfTUJZVEUKCQkmJiAoaGFzX21ieXRlIHx8IGRwLT5yZXN1bHQgPD0gMjU1KQojIGVuZGlmCgkJKQoJICAgIHByaW50ZGlncmFwaChkcCwgdXNlX2hlYWRlcnMgPyAmcHJldmlvdXMgOiBOVUxMKTsKI2VuZGlmCgkrK2RwOwoJdWlfYnJlYWtjaGVjaygpOwogICAgfQoKICAgIGRwID0gKGRpZ3JfVCAqKXVzZXJfZGlncmFwaHMuZ2FfZGF0YTsKICAgIGZvciAoaSA9IDA7IGkgPCB1c2VyX2RpZ3JhcGhzLmdhX2xlbiAmJiAhZ290X2ludDsgKytpKQogICAgewojaWYgZGVmaW5lZChVU0VfVU5JQ09ERV9ESUdSQVBIUykKCWlmIChwcmV2aW91cyA+PSAwICYmIHVzZV9oZWFkZXJzKQoJICAgIGRpZ3JhcGhfaGVhZGVyKF8oIkN1c3RvbSIpKTsKCXByZXZpb3VzID0gLTE7CiNlbmRpZgoJcHJpbnRkaWdyYXBoKGRwLCBOVUxMKTsKCXVpX2JyZWFrY2hlY2soKTsKCSsrZHA7CiAgICB9CiAgICBtdXN0X3JlZHJhdyA9IENMRUFSOyAgICAvKiBjbGVhciBzY3JlZW4sIGJlY2F1c2Ugc29tZSBkaWdyYXBocyBtYXkgYmUKCQkJICAgICAgIHdyb25nLCBpbiB3aGljaCBjYXNlIHdlIG1lc3NlZCB1cCBTY3JlZW5MaW5lcyAqLwp9CgpzdHJ1Y3QgZGdfaGVhZGVyX2VudHJ5IHsKICAgIGludAkgICAgZGdfc3RhcnQ7CiAgICBjaGFyICAgICpkZ19oZWFkZXI7Cn0gaGVhZGVyX3RhYmxlW10gPSB7CiAgICB7REdfU1RBUlRfTEFUSU4sIE5fKCJMYXRpbiBzdXBwbGVtZW50Iil9LAogICAge0RHX1NUQVJUX0dSRUVLLCBOXygiR3JlZWsgYW5kIENvcHRpYyIpfSwKICAgIHtER19TVEFSVF9DWVJJTExJQywgTl8oIkN5cmlsbGljIil9LAogICAge0RHX1NUQVJUX0hFQlJFVywgTl8oIkhlYnJldyIpfSwKICAgIHtER19TVEFSVF9BUkFCSUMsIE5fKCJBcmFiaWMiKX0sCiAgICB7REdfU1RBUlRfTEFUSU5fRVhURU5ERUQsIE5fKCJMYXRpbiBleHRlbmRlZCIpfSwKICAgIHtER19TVEFSVF9HUkVFS19FWFRFTkRFRCwgTl8oIkdyZWVrIGV4dGVuZGVkIil9LAogICAge0RHX1NUQVJUX1BVTkNUVUFUSU9OLCBOXygiUHVuY3R1YXRpb24iKX0sCiAgICB7REdfU1RBUlRfU1VCX1NVUEVSLCBOXygiU3VwZXItIGFuZCBzdWJzY3JpcHRzIil9LAogICAge0RHX1NUQVJUX0NVUlJFTkNZLCBOXygiQ3VycmVuY3kiKX0sCiAgICB7REdfU1RBUlRfT1RIRVIxLCBOXygiT3RoZXIiKX0sCiAgICB7REdfU1RBUlRfUk9NQU4sIE5fKCJSb21hbiBudW1iZXJzIil9LAogICAge0RHX1NUQVJUX0FSUk9XUywgTl8oIkFycm93cyIpfSwKICAgIHtER19TVEFSVF9NQVRILCBOXygiTWF0aGVtYXRpY2FsIG9wZXJhdG9ycyIpfSwKICAgIHtER19TVEFSVF9URUNITklDQUwsIE5fKCJUZWNobmljYWwiKX0sCiAgICB7REdfU1RBUlRfT1RIRVIyLCBOXygiT3RoZXIiKX0sCiAgICB7REdfU1RBUlRfRFJBV0lORywgTl8oIkJveCBkcmF3aW5nIil9LAogICAge0RHX1NUQVJUX0JMT0NLLCBOXygiQmxvY2sgZWxlbWVudHMiKX0sCiAgICB7REdfU1RBUlRfU0hBUEVTLCBOXygiR2VvbWV0cmljIHNoYXBlcyIpfSwKICAgIHtER19TVEFSVF9TWU1CT0xTLCBOXygiU3ltYm9scyIpfSwKICAgIHtER19TVEFSVF9ESU5HQkFUUywgTl8oIkRpbmdiYXRzIil9LAogICAge0RHX1NUQVJUX0NKS19TWU1CT0xTLCBOXygiQ0pLIHN5bWJvbHMgYW5kIHB1bmN0dWF0aW9uIil9LAogICAge0RHX1NUQVJUX0hJUkFHQU5BLCBOXygiSGlyYWdhbmEiKX0sCiAgICB7REdfU1RBUlRfS0FUQUtBTkEsIE5fKCJLYXRha2FuYSIpfSwKICAgIHtER19TVEFSVF9CT1BPTU9GTywgTl8oIkJvcG9tb2ZvIil9LAogICAge0RHX1NUQVJUX09USEVSMywgTl8oIk90aGVyIil9LAogICAgezB4ZmZmZmZmZiwgTlVMTH0sCn07CgogICAgc3RhdGljIHZvaWQKcHJpbnRkaWdyYXBoKGRpZ3JfVCAqZHAsIHJlc3VsdF9UICpwcmV2aW91cykKewogICAgY2hhcl91CWJ1ZlszMF07CiAgICBjaGFyX3UJKnA7CgogICAgaW50CQlsaXN0X3dpZHRoOwoKICAgIGlmICgoZHlfZmxhZ3MgJiBEWV9VSEVYKQojaWZkZWYgRkVBVF9NQllURQoJICAgIHx8IGhhc19tYnl0ZQojZW5kaWYKCSAgICApCglsaXN0X3dpZHRoID0gMTM7CiAgICBlbHNlCglsaXN0X3dpZHRoID0gMTE7CgogICAgaWYgKGRwLT5yZXN1bHQgIT0gMCkKICAgIHsKI2lmIGRlZmluZWQoVVNFX1VOSUNPREVfRElHUkFQSFMpCglpZiAocHJldmlvdXMgIT0gTlVMTCkKCXsKCSAgICBpbnQgaTsKCgkgICAgZm9yIChpID0gMDsgaGVhZGVyX3RhYmxlW2ldLmRnX2hlYWRlciAhPSBOVUxMOyArK2kpCgkJaWYgKCpwcmV2aW91cyA8IGhlYWRlcl90YWJsZVtpXS5kZ19zdGFydAoJCQkmJiBkcC0+cmVzdWx0ID49IGhlYWRlcl90YWJsZVtpXS5kZ19zdGFydAoJCQkmJiBkcC0+cmVzdWx0IDwgaGVhZGVyX3RhYmxlW2kgKyAxXS5kZ19zdGFydCkKCQl7CgkJICAgIGRpZ3JhcGhfaGVhZGVyKF8oaGVhZGVyX3RhYmxlW2ldLmRnX2hlYWRlcikpOwoJCSAgICBicmVhazsKCQl9CgkgICAgKnByZXZpb3VzID0gZHAtPnJlc3VsdDsKCX0KI2VuZGlmCglpZiAobXNnX2NvbCA+IENvbHVtbnMgLSBsaXN0X3dpZHRoKQoJICAgIG1zZ19wdXRjaGFyKCdcbicpOwoJaWYgKG1zZ19jb2wpCgkgICAgd2hpbGUgKG1zZ19jb2wgJSBsaXN0X3dpZHRoICE9IDApCgkJbXNnX3B1dGNoYXIoJyAnKTsKCglwID0gYnVmOwoJKnArKyA9IGRwLT5jaGFyMTsKCSpwKysgPSBkcC0+Y2hhcjI7CgkqcCsrID0gJyAnOwoJKnAgPSBOVUw7Cgltc2dfb3V0dHJhbnMoYnVmKTsKCXAgPSBidWY7CiNpZmRlZiBGRUFUX01CWVRFCglpZiAoaGFzX21ieXRlKQoJewoJICAgIC8qIGFkZCBhIHNwYWNlIHRvIGRyYXcgYSBjb21wb3NpbmcgY2hhciBvbiAqLwoJICAgIGlmIChlbmNfdXRmOCAmJiB1dGZfaXNjb21wb3NpbmcoZHAtPnJlc3VsdCkpCgkJKnArKyA9ICcgJzsKCSAgICBwICs9ICgqbWJfY2hhcjJieXRlcykoZHAtPnJlc3VsdCwgcCk7Cgl9CgllbHNlCiNlbmRpZgoJICAgICpwKysgPSAoY2hhcl91KWRwLT5yZXN1bHQ7CgkqcCA9IE5VTDsKCW1zZ19vdXR0cmFuc19hdHRyKGJ1ZiwgSExfQVRUUihITEZfOCkpOwoJcCA9IGJ1ZjsKCWlmIChjaGFyMmNlbGxzKGRwLT5yZXN1bHQpID09IDEpCgkgICAgKnArKyA9ICcgJzsKCXZpbV9zbnByaW50ZigoY2hhciAqKXAsIHNpemVvZihidWYpIC0gKHAgLSBidWYpLCAiICUzZCIsIGRwLT5yZXN1bHQpOwoJbXNnX291dHRyYW5zKGJ1Zik7CiAgICB9Cn0KCiNlbmRpZiAvKiBGRUFUX0RJR1JBUEhTICovCgojaWYgZGVmaW5lZChGRUFUX0tFWU1BUCkgfHwgZGVmaW5lZChQUk9UTykKCi8qIHN0cnVjdHVyZSB1c2VkIGZvciBiX2ttYXBfZ2EuZ2FfZGF0YSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBjaGFyX3UJKmZyb207CiAgICBjaGFyX3UJKnRvOwp9IGttYXBfVDsKCiNkZWZpbmUgS01BUF9NQVhMRU4gMjAJICAgIC8qIG1heGltdW0gbGVuZ3RoIG9mICJmcm9tIiBvciAidG8iICovCgpzdGF0aWMgdm9pZCBrZXltYXBfdW5sb2FkKHZvaWQpOwoKLyoKICogU2V0IHVwIGtleSBtYXBwaW5nIHRhYmxlcyBmb3IgdGhlICdrZXltYXAnIG9wdGlvbi4KICogUmV0dXJucyBOVUxMIGlmIE9LLCBhbiBlcnJvciBtZXNzYWdlIGZvciBmYWlsdXJlLiAgVGhpcyBvbmx5IG5lZWRzIHRvIGJlCiAqIHVzZWQgd2hlbiBzZXR0aW5nIHRoZSBvcHRpb24sIG5vdCBsYXRlciB3aGVuIHRoZSB2YWx1ZSBoYXMgYWxyZWFkeSBiZWVuCiAqIGNoZWNrZWQuCiAqLwogICAgY2hhcl91ICoKa2V5bWFwX2luaXQodm9pZCkKewogICAgY3VyYnVmLT5iX2ttYXBfc3RhdGUgJj0gfktFWU1BUF9JTklUOwoKICAgIGlmICgqY3VyYnVmLT5iX3Bfa2V5bWFwID09IE5VTCkKICAgIHsKCS8qIFN0b3AgYW55IGFjdGl2ZSBrZXltYXAgYW5kIGNsZWFyIHRoZSB0YWJsZS4gIEFsc28gcmVtb3ZlCgkgKiBiOmtleW1hcF9uYW1lLCBhcyBubyBrZXltYXAgaXMgYWN0aXZlIG5vdy4gKi8KCWtleW1hcF91bmxvYWQoKTsKCWRvX2NtZGxpbmVfY21kKChjaGFyX3UgKikidW5sZXQhIGI6a2V5bWFwX25hbWUiKTsKICAgIH0KICAgIGVsc2UKICAgIHsKCWNoYXJfdQkqYnVmOwoJc2l6ZV90ICBidWZsZW47CgoJLyogU291cmNlIHRoZSBrZXltYXAgZmlsZS4gIEl0IHdpbGwgY29udGFpbiBhICI6bG9hZGtleW1hcCIgY29tbWFuZAoJICogd2hpY2ggd2lsbCBjYWxsIGV4X2xvYWRrZXltYXAoKSBiZWxvdy4gKi8KCWJ1ZmxlbiA9IFNUUkxFTihjdXJidWYtPmJfcF9rZXltYXApCiMgaWZkZWYgRkVBVF9NQllURQoJCQkJCSAgICsgU1RSTEVOKHBfZW5jKQojIGVuZGlmCgkJCQkJCSAgICAgICArIDE0OwoJYnVmID0gYWxsb2MoKHVuc2lnbmVkKWJ1Zmxlbik7CglpZiAoYnVmID09IE5VTEwpCgkgICAgcmV0dXJuIGVfb3V0b2ZtZW07CgojIGlmZGVmIEZFQVRfTUJZVEUKCS8qIHRyeSBmaW5kaW5nICJrZXltYXAvJ2tleW1hcCdfJ2VuY29kaW5nJy52aW0iICBpbiAncnVudGltZXBhdGgnICovCgl2aW1fc25wcmludGYoKGNoYXIgKilidWYsIGJ1ZmxlbiwgImtleW1hcC8lc18lcy52aW0iLAoJCQkJCQkgICBjdXJidWYtPmJfcF9rZXltYXAsIHBfZW5jKTsKCWlmIChzb3VyY2VfcnVudGltZShidWYsIDApID09IEZBSUwpCiMgZW5kaWYKCXsKCSAgICAvKiB0cnkgZmluZGluZyAia2V5bWFwLydrZXltYXAnLnZpbSIgaW4gJ3J1bnRpbWVwYXRoJyAgKi8KCSAgICB2aW1fc25wcmludGYoKGNoYXIgKilidWYsIGJ1ZmxlbiwgImtleW1hcC8lcy52aW0iLAoJCQkJCQkJICBjdXJidWYtPmJfcF9rZXltYXApOwoJICAgIGlmIChzb3VyY2VfcnVudGltZShidWYsIDApID09IEZBSUwpCgkgICAgewoJCXZpbV9mcmVlKGJ1Zik7CgkJcmV0dXJuIChjaGFyX3UgKilOXygiRTU0NDogS2V5bWFwIGZpbGUgbm90IGZvdW5kIik7CgkgICAgfQoJfQoJdmltX2ZyZWUoYnVmKTsKICAgIH0KCiAgICByZXR1cm4gTlVMTDsKfQoKLyoKICogIjpsb2Fka2V5bWFwIiBjb21tYW5kOiBsb2FkIHRoZSBmb2xsb3dpbmcgbGluZXMgYXMgdGhlIGtleW1hcC4KICovCiAgICB2b2lkCmV4X2xvYWRrZXltYXAoZXhhcmdfVCAqZWFwKQp7CiAgICBjaGFyX3UJKmxpbmU7CiAgICBjaGFyX3UJKnA7CiAgICBjaGFyX3UJKnM7CiAgICBrbWFwX1QJKmtwOwojZGVmaW5lIEtNQVBfTExFTiAgIDIwMAkgICAgLyogbWF4IGxlbmd0aCBvZiAidG8iIGFuZCAiZnJvbSIgdG9nZXRoZXIgKi8KICAgIGNoYXJfdQlidWZbS01BUF9MTEVOICsgMTFdOwogICAgaW50CQlpOwogICAgY2hhcl91CSpzYXZlX2NwbyA9IHBfY3BvOwoKICAgIGlmICghZ2V0bGluZV9lcXVhbChlYXAtPmdldGxpbmUsIGVhcC0+Y29va2llLCBnZXRzb3VyY2VsaW5lKSkKICAgIHsKCUVNU0coXygiRTEwNTogVXNpbmcgOmxvYWRrZXltYXAgbm90IGluIGEgc291cmNlZCBmaWxlIikpOwoJcmV0dXJuOwogICAgfQoKICAgIC8qCiAgICAgKiBTdG9wIGFueSBhY3RpdmUga2V5bWFwIGFuZCBjbGVhciB0aGUgdGFibGUuCiAgICAgKi8KICAgIGtleW1hcF91bmxvYWQoKTsKCiAgICBjdXJidWYtPmJfa21hcF9zdGF0ZSA9IDA7CiAgICBnYV9pbml0MigmY3VyYnVmLT5iX2ttYXBfZ2EsIChpbnQpc2l6ZW9mKGttYXBfVCksIDIwKTsKCiAgICAvKiBTZXQgJ2Nwb3B0aW9ucycgdG8gIkMiIHRvIGF2b2lkIGxpbmUgY29udGludWF0aW9uLiAqLwogICAgcF9jcG8gPSAoY2hhcl91ICopIkMiOwoKICAgIC8qCiAgICAgKiBHZXQgZWFjaCBsaW5lIG9mIHRoZSBzb3VyY2VkIGZpbGUsIGJyZWFrIGF0IHRoZSBlbmQuCiAgICAgKi8KICAgIGZvciAoOzspCiAgICB7CglsaW5lID0gZWFwLT5nZXRsaW5lKDAsIGVhcC0+Y29va2llLCAwKTsKCWlmIChsaW5lID09IE5VTEwpCgkgICAgYnJlYWs7CgoJcCA9IHNraXB3aGl0ZShsaW5lKTsKCWlmICgqcCAhPSAnIicgJiYgKnAgIT0gTlVMICYmIGdhX2dyb3coJmN1cmJ1Zi0+Yl9rbWFwX2dhLCAxKSA9PSBPSykKCXsKCSAgICBrcCA9IChrbWFwX1QgKiljdXJidWYtPmJfa21hcF9nYS5nYV9kYXRhICsgY3VyYnVmLT5iX2ttYXBfZ2EuZ2FfbGVuOwoJICAgIHMgPSBza2lwdG93aGl0ZShwKTsKCSAgICBrcC0+ZnJvbSA9IHZpbV9zdHJuc2F2ZShwLCAoaW50KShzIC0gcCkpOwoJICAgIHAgPSBza2lwd2hpdGUocyk7CgkgICAgcyA9IHNraXB0b3doaXRlKHApOwoJICAgIGtwLT50byA9IHZpbV9zdHJuc2F2ZShwLCAoaW50KShzIC0gcCkpOwoKCSAgICBpZiAoa3AtPmZyb20gPT0gTlVMTCB8fCBrcC0+dG8gPT0gTlVMTAoJCSAgICB8fCBTVFJMRU4oa3AtPmZyb20pICsgU1RSTEVOKGtwLT50bykgPj0gS01BUF9MTEVOCgkJICAgIHx8ICprcC0+ZnJvbSA9PSBOVUwgfHwgKmtwLT50byA9PSBOVUwpCgkgICAgewoJCWlmIChrcC0+dG8gIT0gTlVMTCAmJiAqa3AtPnRvID09IE5VTCkKCQkgICAgRU1TRyhfKCJFNzkxOiBFbXB0eSBrZXltYXAgZW50cnkiKSk7CgkJdmltX2ZyZWUoa3AtPmZyb20pOwoJCXZpbV9mcmVlKGtwLT50byk7CgkgICAgfQoJICAgIGVsc2UKCQkrK2N1cmJ1Zi0+Yl9rbWFwX2dhLmdhX2xlbjsKCX0KCXZpbV9mcmVlKGxpbmUpOwogICAgfQoKICAgIC8qCiAgICAgKiBzZXR1cCAiOmxub3JlbWFwIiB0byBtYXAgdGhlIGtleXMKICAgICAqLwogICAgZm9yIChpID0gMDsgaSA8IGN1cmJ1Zi0+Yl9rbWFwX2dhLmdhX2xlbjsgKytpKQogICAgewoJdmltX3NucHJpbnRmKChjaGFyICopYnVmLCBzaXplb2YoYnVmKSwgIjxidWZmZXI+ICVzICVzIiwKCQkJCSgoa21hcF9UICopY3VyYnVmLT5iX2ttYXBfZ2EuZ2FfZGF0YSlbaV0uZnJvbSwKCQkJCSAoKGttYXBfVCAqKWN1cmJ1Zi0+Yl9rbWFwX2dhLmdhX2RhdGEpW2ldLnRvKTsKCSh2b2lkKWRvX21hcCgyLCBidWYsIExBTkdNQVAsIEZBTFNFKTsKICAgIH0KCiAgICBwX2NwbyA9IHNhdmVfY3BvOwoKICAgIGN1cmJ1Zi0+Yl9rbWFwX3N0YXRlIHw9IEtFWU1BUF9MT0FERUQ7CiAgICBzdGF0dXNfcmVkcmF3X2N1cmJ1ZigpOwp9CgovKgogKiBTdG9wIHVzaW5nICdrZXltYXAnLgogKi8KICAgIHN0YXRpYyB2b2lkCmtleW1hcF91bmxvYWQodm9pZCkKewogICAgY2hhcl91CWJ1ZltLTUFQX01BWExFTiArIDEwXTsKICAgIGludAkJaTsKICAgIGNoYXJfdQkqc2F2ZV9jcG8gPSBwX2NwbzsKICAgIGttYXBfVAkqa3A7CgogICAgaWYgKCEoY3VyYnVmLT5iX2ttYXBfc3RhdGUgJiBLRVlNQVBfTE9BREVEKSkKCXJldHVybjsKCiAgICAvKiBTZXQgJ2Nwb3B0aW9ucycgdG8gIkMiIHRvIGF2b2lkIGxpbmUgY29udGludWF0aW9uLiAqLwogICAgcF9jcG8gPSAoY2hhcl91ICopIkMiOwoKICAgIC8qIGNsZWFyIHRoZSAiOmxtYXAicyAqLwogICAga3AgPSAoa21hcF9UICopY3VyYnVmLT5iX2ttYXBfZ2EuZ2FfZGF0YTsKICAgIGZvciAoaSA9IDA7IGkgPCBjdXJidWYtPmJfa21hcF9nYS5nYV9sZW47ICsraSkKICAgIHsKCXZpbV9zbnByaW50ZigoY2hhciAqKWJ1Ziwgc2l6ZW9mKGJ1ZiksICI8YnVmZmVyPiAlcyIsIGtwW2ldLmZyb20pOwoJKHZvaWQpZG9fbWFwKDEsIGJ1ZiwgTEFOR01BUCwgRkFMU0UpOwogICAgfQogICAga2V5bWFwX2NsZWFyKCZjdXJidWYtPmJfa21hcF9nYSk7CgogICAgcF9jcG8gPSBzYXZlX2NwbzsKCiAgICBnYV9jbGVhcigmY3VyYnVmLT5iX2ttYXBfZ2EpOwogICAgY3VyYnVmLT5iX2ttYXBfc3RhdGUgJj0gfktFWU1BUF9MT0FERUQ7CiAgICBzdGF0dXNfcmVkcmF3X2N1cmJ1ZigpOwp9CgogICAgdm9pZAprZXltYXBfY2xlYXIoZ2FycmF5X1QgKmttYXApCnsKICAgIGludAkgICAgaTsKICAgIGttYXBfVCAgKmtwID0gKGttYXBfVCAqKWttYXAtPmdhX2RhdGE7CgogICAgZm9yIChpID0gMDsgaSA8IGttYXAtPmdhX2xlbjsgKytpKQogICAgewoJdmltX2ZyZWUoa3BbaV0uZnJvbSk7Cgl2aW1fZnJlZShrcFtpXS50byk7CiAgICB9Cn0KI2VuZGlmIC8qIEZFQVRfS0VZTUFQICovCg==