diff --git a/contracts/contracts/artifacts/StakingPool.approval.teal b/contracts/contracts/artifacts/StakingPool.approval.teal index c1661c25..e8a86026 100644 --- a/contracts/contracts/artifacts/StakingPool.approval.teal +++ b/contracts/contracts/artifacts/StakingPool.approval.teal @@ -2,7 +2,7 @@ intcblock 0 1 6 64 32 16 128 200 5 1_000_000 300 1000 4 2_100_000 8 100000 400 30857 2 40 48 TMPL_nfdRegistryAppId bytecblock 0x 0x63726561746f72417070 0x7374616b657273 0x76616c696461746f724964 0x706f6f6c4964 0x0a8101 0x7374616b6564 0x726f756e6473506572446179 0x7374616b65416363756d756c61746f72 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0x0000000000000000 0x62696e526f756e645374617274 0x726577617264416363756d756c61746f72 0x6e756d5374616b657273 0x6c6173745061796f7574 0x75aff61d 0x00000000000000000000000000000000 0x00000000000000000000000000000064 0x6d696e456e7472795374616b65 0x65706f63684e756d626572 0x65776d61 0x151f7c75 0xa2dc51b5 0x572767d1 0x4df8d86e 0x0c2245e1 0x00 -// This TEAL was generated by TEALScript v0.105.5 +// This TEAL was generated by TEALScript v0.106.0 // https://github.com/algorandfoundation/TEALScript // This contract is compliant with and/or implements the following ARCs: [ ARC4 ] diff --git a/contracts/contracts/artifacts/StakingPool.arc32.json b/contracts/contracts/artifacts/StakingPool.arc32.json index b56ff928..362a0e95 100644 --- a/contracts/contracts/artifacts/StakingPool.arc32.json +++ b/contracts/contracts/artifacts/StakingPool.arc32.json @@ -156,7 +156,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/contracts/contracts/artifacts/ValidatorRegistry.approval.teal b/contracts/contracts/artifacts/ValidatorRegistry.approval.teal index 1d0ca690..d2db1471 100644 --- a/contracts/contracts/artifacts/ValidatorRegistry.approval.teal +++ b/contracts/contracts/artifacts/ValidatorRegistry.approval.teal @@ -2,7 +2,7 @@ intcblock 0 1 8 24 18 268 32 6 3 242 2 10 252 260 700 4 100000 900 16 200 40 72 192 244 1000000 4096 5 226 TMPL_nfdRegistryAppId 300 432 892 1000 28500 50000 11 80 145 153 209 bytecblock 0x76 0x 0x151f7c75 0x737073 0x7374616b6564 0x00 0x6e756d5374616b657273 0x0000000000000000 0x0a8101 0x706f6f6c54656d706c617465417070726f76616c4279746573 0x692e6f776e65722e61 0x6e756d56 0x696e6974 0x63f3f28b 0x12f4bd4b -// This TEAL was generated by TEALScript v0.105.5 +// This TEAL was generated by TEALScript v0.106.0 // https://github.com/algorandfoundation/TEALScript // This contract is compliant with and/or implements the following ARCs: [ ARC4 ] diff --git a/contracts/contracts/artifacts/ValidatorRegistry.arc32.json b/contracts/contracts/artifacts/ValidatorRegistry.arc32.json index 445cd44c..5d1a8050 100644 --- a/contracts/contracts/artifacts/ValidatorRegistry.arc32.json +++ b/contracts/contracts/artifacts/ValidatorRegistry.arc32.json @@ -216,7 +216,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/contracts/contracts/clients/StakingPoolClient.ts b/contracts/contracts/clients/StakingPoolClient.ts index 2b44a052..634572a2 100644 --- a/contracts/contracts/clients/StakingPoolClient.ts +++ b/contracts/contracts/clients/StakingPoolClient.ts @@ -24,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { Address, encodeAddress, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/stakingPool.algo.ts:37","pc":[1,2]},{"teal":16,"source":"contracts/stakingPool.algo.ts:37","pc":[3]},{"teal":17,"source":"contracts/stakingPool.algo.ts:37","pc":[4]},{"teal":18,"source":"contracts/stakingPool.algo.ts:37","pc":[5]},{"teal":19,"source":"contracts/stakingPool.algo.ts:37","pc":[6,7]},{"teal":20,"source":"contracts/stakingPool.algo.ts:37","pc":[8]},{"teal":21,"source":"contracts/stakingPool.algo.ts:37","pc":[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]},{"teal":25,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[35]},{"teal":30,"source":"contracts/stakingPool.algo.ts:101","pc":[36,37,38]},{"teal":31,"source":"contracts/stakingPool.algo.ts:101","pc":[39]},{"teal":34,"source":"contracts/stakingPool.algo.ts:101","pc":[40,41,42]},{"teal":35,"source":"contracts/stakingPool.algo.ts:101","pc":[43]},{"teal":38,"source":"contracts/stakingPool.algo.ts:101","pc":[44,45,46]},{"teal":39,"source":"contracts/stakingPool.algo.ts:101","pc":[47]},{"teal":42,"source":"contracts/stakingPool.algo.ts:101","pc":[48,49,50]},{"teal":43,"source":"contracts/stakingPool.algo.ts:101","pc":[51]},{"teal":46,"source":"contracts/stakingPool.algo.ts:101","pc":[52,53,54]},{"teal":47,"source":"contracts/stakingPool.algo.ts:101","pc":[55]},{"teal":48,"source":"contracts/stakingPool.algo.ts:101","pc":[56]},{"teal":58,"source":"contracts/stakingPool.algo.ts:101","pc":[57,58,59]},{"teal":63,"source":"contracts/stakingPool.algo.ts:102","pc":[60,61]},{"teal":64,"source":"contracts/stakingPool.algo.ts:102","pc":[62]},{"teal":65,"source":"contracts/stakingPool.algo.ts:102","pc":[63]},{"teal":66,"source":"contracts/stakingPool.algo.ts:102","pc":[64,65,66]},{"teal":71,"source":"contracts/stakingPool.algo.ts:104","pc":[67,68]},{"teal":72,"source":"contracts/stakingPool.algo.ts:104","pc":[69]},{"teal":73,"source":"contracts/stakingPool.algo.ts:104","pc":[70]},{"teal":74,"source":"contracts/stakingPool.algo.ts:104","pc":[71]},{"teal":78,"source":"contracts/stakingPool.algo.ts:105","pc":[72,73]},{"teal":79,"source":"contracts/stakingPool.algo.ts:105","pc":[74]},{"teal":80,"source":"contracts/stakingPool.algo.ts:105","pc":[75]},{"teal":81,"source":"contracts/stakingPool.algo.ts:105","pc":[76]},{"teal":82,"source":"contracts/stakingPool.algo.ts:102","pc":[77,78,79]},{"teal":87,"source":"contracts/stakingPool.algo.ts:107","pc":[80,81]},{"teal":88,"source":"contracts/stakingPool.algo.ts:107","pc":[82]},{"teal":89,"source":"contracts/stakingPool.algo.ts:107","pc":[83]},{"teal":90,"source":"contracts/stakingPool.algo.ts:107","pc":[84]},{"teal":94,"source":"contracts/stakingPool.algo.ts:108","pc":[85,86]},{"teal":95,"source":"contracts/stakingPool.algo.ts:108","pc":[87]},{"teal":96,"source":"contracts/stakingPool.algo.ts:108","pc":[88]},{"teal":97,"source":"contracts/stakingPool.algo.ts:108","pc":[89]},{"teal":102,"source":"contracts/stakingPool.algo.ts:110","pc":[90,91]},{"teal":103,"source":"contracts/stakingPool.algo.ts:110","pc":[92,93,94,95]},{"teal":104,"source":"contracts/stakingPool.algo.ts:110","pc":[96]},{"teal":107,"source":"contracts/stakingPool.algo.ts:110","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[97]},{"teal":111,"source":"contracts/stakingPool.algo.ts:111","pc":[98]},{"teal":112,"source":"contracts/stakingPool.algo.ts:111","pc":[99,100]},{"teal":113,"source":"contracts/stakingPool.algo.ts:111","pc":[101]},{"teal":117,"source":"contracts/stakingPool.algo.ts:112","pc":[102]},{"teal":118,"source":"contracts/stakingPool.algo.ts:112","pc":[103,104]},{"teal":119,"source":"contracts/stakingPool.algo.ts:112","pc":[105]},{"teal":123,"source":"contracts/stakingPool.algo.ts:113","pc":[106,107]},{"teal":124,"source":"contracts/stakingPool.algo.ts:113","pc":[108,109]},{"teal":125,"source":"contracts/stakingPool.algo.ts:113","pc":[110]},{"teal":129,"source":"contracts/stakingPool.algo.ts:114","pc":[111,112]},{"teal":130,"source":"contracts/stakingPool.algo.ts:114","pc":[113]},{"teal":131,"source":"contracts/stakingPool.algo.ts:114","pc":[114]},{"teal":135,"source":"contracts/stakingPool.algo.ts:115","pc":[115,116]},{"teal":136,"source":"contracts/stakingPool.algo.ts:115","pc":[117]},{"teal":137,"source":"contracts/stakingPool.algo.ts:115","pc":[118]},{"teal":141,"source":"contracts/stakingPool.algo.ts:116","pc":[119,120]},{"teal":142,"source":"contracts/stakingPool.algo.ts:116","pc":[121,122]},{"teal":143,"source":"contracts/stakingPool.algo.ts:116","pc":[123]},{"teal":147,"source":"contracts/stakingPool.algo.ts:117","pc":[124,125]},{"teal":148,"source":"contracts/stakingPool.algo.ts:117","pc":[126,127]},{"teal":149,"source":"contracts/stakingPool.algo.ts:117","pc":[128]},{"teal":153,"source":"contracts/stakingPool.algo.ts:118","pc":[129,130]},{"teal":154,"source":"contracts/stakingPool.algo.ts:118","pc":[131]},{"teal":155,"source":"contracts/stakingPool.algo.ts:118","pc":[132]},{"teal":159,"source":"contracts/stakingPool.algo.ts:120","pc":[133,134,135]},{"teal":163,"source":"contracts/stakingPool.algo.ts:121","pc":[136,137]},{"teal":164,"source":"contracts/stakingPool.algo.ts:121","pc":[138,139]},{"teal":165,"source":"contracts/stakingPool.algo.ts:121","pc":[140,141]},{"teal":166,"source":"contracts/stakingPool.algo.ts:121","pc":[142,143]},{"teal":167,"source":"contracts/stakingPool.algo.ts:121","pc":[144]},{"teal":168,"source":"contracts/stakingPool.algo.ts:121","pc":[145]},{"teal":169,"source":"contracts/stakingPool.algo.ts:121","pc":[146]},{"teal":170,"source":"contracts/stakingPool.algo.ts:121","pc":[147]},{"teal":174,"source":"contracts/stakingPool.algo.ts:122","pc":[148,149]},{"teal":175,"source":"contracts/stakingPool.algo.ts:122","pc":[150,151]},{"teal":176,"source":"contracts/stakingPool.algo.ts:122","pc":[152]},{"teal":180,"source":"contracts/stakingPool.algo.ts:123","pc":[153,154]},{"teal":181,"source":"contracts/stakingPool.algo.ts:123","pc":[155]},{"teal":182,"source":"contracts/stakingPool.algo.ts:123","pc":[156]},{"teal":186,"source":"contracts/stakingPool.algo.ts:124","pc":[157,158]},{"teal":187,"source":"contracts/stakingPool.algo.ts:124","pc":[159,160]},{"teal":188,"source":"contracts/stakingPool.algo.ts:124","pc":[161]},{"teal":189,"source":"contracts/stakingPool.algo.ts:101","pc":[162]},{"teal":194,"source":"contracts/stakingPool.algo.ts:130","pc":[163,164,165]},{"teal":195,"source":"contracts/stakingPool.algo.ts:130","pc":[166]},{"teal":196,"source":"contracts/stakingPool.algo.ts:130","pc":[167]},{"teal":202,"source":"contracts/stakingPool.algo.ts:130","pc":[168,169,170]},{"teal":203,"source":"contracts/stakingPool.algo.ts:130","pc":[171]},{"teal":207,"source":"contracts/stakingPool.algo.ts:132","pc":[172,173,174]},{"teal":211,"source":"contracts/stakingPool.algo.ts:136","pc":[175,176,177]},{"teal":212,"source":"contracts/stakingPool.algo.ts:136","pc":[178,179]},{"teal":213,"source":"contracts/stakingPool.algo.ts:136","pc":[180,181]},{"teal":214,"source":"contracts/stakingPool.algo.ts:136","pc":[182]},{"teal":215,"source":"contracts/stakingPool.algo.ts:136","pc":[183]},{"teal":216,"source":"contracts/stakingPool.algo.ts:132","pc":[184]},{"teal":221,"source":"contracts/stakingPool.algo.ts:146","pc":[185,186]},{"teal":222,"source":"contracts/stakingPool.algo.ts:146","pc":[187]},{"teal":223,"source":"contracts/stakingPool.algo.ts:146","pc":[188]},{"teal":224,"source":"contracts/stakingPool.algo.ts:146","pc":[189]},{"teal":225,"source":"contracts/stakingPool.algo.ts:146","pc":[190,191]},{"teal":226,"source":"contracts/stakingPool.algo.ts:146","pc":[192]},{"teal":227,"source":"contracts/stakingPool.algo.ts:146","pc":[193]},{"teal":230,"source":"contracts/stakingPool.algo.ts:146","errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[194]},{"teal":233,"source":"contracts/stakingPool.algo.ts:146","pc":[195,196,197]},{"teal":234,"source":"contracts/stakingPool.algo.ts:146","pc":[198]},{"teal":235,"source":"contracts/stakingPool.algo.ts:146","pc":[199]},{"teal":245,"source":"contracts/stakingPool.algo.ts:146","pc":[200,201,202]},{"teal":248,"source":"contracts/stakingPool.algo.ts:146","pc":[203]},{"teal":249,"source":"contracts/stakingPool.algo.ts:146","pc":[204,205]},{"teal":253,"source":"contracts/stakingPool.algo.ts:147","pc":[206]},{"teal":254,"source":"contracts/stakingPool.algo.ts:147","pc":[207]},{"teal":255,"source":"contracts/stakingPool.algo.ts:147","pc":[208]},{"teal":256,"source":"contracts/stakingPool.algo.ts:147","pc":[209]},{"teal":257,"source":"contracts/stakingPool.algo.ts:147","pc":[210]},{"teal":260,"source":"contracts/stakingPool.algo.ts:147","errorMessage":"staking pool already initialized","pc":[211]},{"teal":267,"source":"contracts/stakingPool.algo.ts:150","pc":[212]},{"teal":268,"source":"contracts/stakingPool.algo.ts:150","pc":[213]},{"teal":269,"source":"contracts/stakingPool.algo.ts:150","pc":[214,215]},{"teal":270,"source":"contracts/stakingPool.algo.ts:150","pc":[216,217]},{"teal":271,"source":"contracts/stakingPool.algo.ts:150","pc":[218,219]},{"teal":275,"source":"contracts/stakingPool.algo.ts:151","pc":[220]},{"teal":276,"source":"contracts/stakingPool.algo.ts:151","pc":[221]},{"teal":277,"source":"contracts/stakingPool.algo.ts:151","pc":[222,223]},{"teal":281,"source":"contracts/stakingPool.algo.ts:152","pc":[224]},{"teal":282,"source":"contracts/stakingPool.algo.ts:152","pc":[225]},{"teal":283,"source":"contracts/stakingPool.algo.ts:152","pc":[226]},{"teal":284,"source":"contracts/stakingPool.algo.ts:152","pc":[227,228]},{"teal":287,"source":"contracts/stakingPool.algo.ts:150","pc":[229]},{"teal":288,"source":"contracts/stakingPool.algo.ts:150","pc":[230,231]},{"teal":291,"source":"contracts/stakingPool.algo.ts:150","pc":[232]},{"teal":292,"source":"contracts/stakingPool.algo.ts:150","pc":[233,234]},{"teal":293,"source":"contracts/stakingPool.algo.ts:150","pc":[235]},{"teal":294,"source":"contracts/stakingPool.algo.ts:150","pc":[236]},{"teal":295,"source":"contracts/stakingPool.algo.ts:150","pc":[237,238]},{"teal":296,"source":"contracts/stakingPool.algo.ts:150","pc":[239,240,241]},{"teal":297,"source":"contracts/stakingPool.algo.ts:150","pc":[242,243]},{"teal":301,"source":"contracts/stakingPool.algo.ts:154","pc":[244,245]},{"teal":302,"source":"contracts/stakingPool.algo.ts:154","pc":[246,247,248]},{"teal":303,"source":"contracts/stakingPool.algo.ts:154","pc":[249]},{"teal":304,"source":"contracts/stakingPool.algo.ts:154","pc":[250]},{"teal":305,"source":"contracts/stakingPool.algo.ts:154","pc":[251]},{"teal":306,"source":"contracts/stakingPool.algo.ts:154","pc":[252,253]},{"teal":310,"source":"contracts/stakingPool.algo.ts:155","pc":[254,255]},{"teal":311,"source":"contracts/stakingPool.algo.ts:155","pc":[256]},{"teal":312,"source":"contracts/stakingPool.algo.ts:155","pc":[257,258,259]},{"teal":313,"source":"contracts/stakingPool.algo.ts:155","pc":[260,261]},{"teal":314,"source":"contracts/stakingPool.algo.ts:155","pc":[262]},{"teal":315,"source":"contracts/stakingPool.algo.ts:155","pc":[263]},{"teal":316,"source":"contracts/stakingPool.algo.ts:155","pc":[264]},{"teal":317,"source":"contracts/stakingPool.algo.ts:155","pc":[265]},{"teal":320,"source":"contracts/stakingPool.algo.ts:155","pc":[266,267,268]},{"teal":321,"source":"contracts/stakingPool.algo.ts:155","pc":[269,270]},{"teal":322,"source":"contracts/stakingPool.algo.ts:155","pc":[271,272,273]},{"teal":325,"source":"contracts/stakingPool.algo.ts:155","pc":[274]},{"teal":328,"source":"contracts/stakingPool.algo.ts:155","pc":[275,276]},{"teal":335,"source":"contracts/stakingPool.algo.ts:157","pc":[277,278]},{"teal":336,"source":"contracts/stakingPool.algo.ts:158","pc":[279,280]},{"teal":337,"source":"contracts/stakingPool.algo.ts:157","pc":[281]},{"teal":338,"source":"contracts/stakingPool.algo.ts:159","pc":[282,283,284]},{"teal":339,"source":"contracts/stakingPool.algo.ts:159","pc":[285,286,287]},{"teal":340,"source":"contracts/stakingPool.algo.ts:158","pc":[288]},{"teal":341,"source":"contracts/stakingPool.algo.ts:156","pc":[289,290]},{"teal":346,"source":"contracts/stakingPool.algo.ts:162","pc":[291,292]},{"teal":347,"source":"contracts/stakingPool.algo.ts:162","pc":[293,294]},{"teal":348,"source":"contracts/stakingPool.algo.ts:162","pc":[295,296]},{"teal":349,"source":"contracts/stakingPool.algo.ts:162","pc":[297]},{"teal":352,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[298]},{"teal":355,"source":"contracts/stakingPool.algo.ts:162","pc":[299,300]},{"teal":356,"source":"contracts/stakingPool.algo.ts:162","pc":[301,302]},{"teal":357,"source":"contracts/stakingPool.algo.ts:162","pc":[303,304]},{"teal":358,"source":"contracts/stakingPool.algo.ts:162","pc":[305]},{"teal":361,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[306]},{"teal":365,"source":"contracts/stakingPool.algo.ts:163","pc":[307]},{"teal":366,"source":"contracts/stakingPool.algo.ts:163","pc":[308,309,310]},{"teal":367,"source":"contracts/stakingPool.algo.ts:163","pc":[311]},{"teal":368,"source":"contracts/stakingPool.algo.ts:163","pc":[312]},{"teal":373,"source":"contracts/stakingPool.algo.ts:165","pc":[313,314]},{"teal":374,"source":"contracts/stakingPool.algo.ts:165","pc":[315]},{"teal":375,"source":"contracts/stakingPool.algo.ts:165","pc":[316,317,318]},{"teal":376,"source":"contracts/stakingPool.algo.ts:165","pc":[319,320]},{"teal":377,"source":"contracts/stakingPool.algo.ts:165","pc":[321]},{"teal":378,"source":"contracts/stakingPool.algo.ts:165","pc":[322]},{"teal":379,"source":"contracts/stakingPool.algo.ts:165","pc":[323]},{"teal":380,"source":"contracts/stakingPool.algo.ts:165","pc":[324]},{"teal":383,"source":"contracts/stakingPool.algo.ts:165","pc":[325,326,327]},{"teal":392,"source":"contracts/stakingPool.algo.ts:167","pc":[328]},{"teal":393,"source":"contracts/stakingPool.algo.ts:167","pc":[329,330]},{"teal":394,"source":"contracts/stakingPool.algo.ts:167","pc":[331,332]},{"teal":398,"source":"contracts/stakingPool.algo.ts:168","pc":[333,334]},{"teal":399,"source":"contracts/stakingPool.algo.ts:168","pc":[335,336,337]},{"teal":400,"source":"contracts/stakingPool.algo.ts:168","pc":[338]},{"teal":401,"source":"contracts/stakingPool.algo.ts:168","pc":[339,340]},{"teal":405,"source":"contracts/stakingPool.algo.ts:169","pc":[341,342]},{"teal":406,"source":"contracts/stakingPool.algo.ts:169","pc":[343,344]},{"teal":410,"source":"contracts/stakingPool.algo.ts:170","pc":[345]},{"teal":411,"source":"contracts/stakingPool.algo.ts:170","pc":[346,347]},{"teal":414,"source":"contracts/stakingPool.algo.ts:167","pc":[348]},{"teal":415,"source":"contracts/stakingPool.algo.ts:167","pc":[349,350]},{"teal":418,"source":"contracts/stakingPool.algo.ts:167","pc":[351]},{"teal":421,"source":"contracts/stakingPool.algo.ts:146","pc":[352]},{"teal":426,"source":"contracts/stakingPool.algo.ts:185","pc":[353,354]},{"teal":429,"source":"contracts/stakingPool.algo.ts:185","pc":[355,356,357]},{"teal":430,"source":"contracts/stakingPool.algo.ts:185","pc":[358]},{"teal":431,"source":"contracts/stakingPool.algo.ts:185","pc":[359]},{"teal":432,"source":"contracts/stakingPool.algo.ts:185","pc":[360,361]},{"teal":433,"source":"contracts/stakingPool.algo.ts:185","pc":[362]},{"teal":436,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 0 (staker) for addStake must be a address","pc":[363]},{"teal":439,"source":"contracts/stakingPool.algo.ts:185","pc":[364,365]},{"teal":440,"source":"contracts/stakingPool.algo.ts:185","pc":[366]},{"teal":441,"source":"contracts/stakingPool.algo.ts:185","pc":[367]},{"teal":442,"source":"contracts/stakingPool.algo.ts:185","pc":[368]},{"teal":443,"source":"contracts/stakingPool.algo.ts:185","pc":[369,370]},{"teal":444,"source":"contracts/stakingPool.algo.ts:185","pc":[371]},{"teal":445,"source":"contracts/stakingPool.algo.ts:185","pc":[372]},{"teal":448,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[373]},{"teal":451,"source":"contracts/stakingPool.algo.ts:185","pc":[374,375,376]},{"teal":452,"source":"contracts/stakingPool.algo.ts:185","pc":[377]},{"teal":453,"source":"contracts/stakingPool.algo.ts:185","pc":[378]},{"teal":454,"source":"contracts/stakingPool.algo.ts:185","pc":[379]},{"teal":455,"source":"contracts/stakingPool.algo.ts:185","pc":[380]},{"teal":456,"source":"contracts/stakingPool.algo.ts:185","pc":[381]},{"teal":469,"source":"contracts/stakingPool.algo.ts:185","pc":[382,383,384]},{"teal":472,"source":"contracts/stakingPool.algo.ts:185","pc":[385]},{"teal":473,"source":"contracts/stakingPool.algo.ts:185","pc":[386,387]},{"teal":477,"source":"contracts/stakingPool.algo.ts:186","pc":[388]},{"teal":478,"source":"contracts/stakingPool.algo.ts:186","pc":[389]},{"teal":479,"source":"contracts/stakingPool.algo.ts:186","pc":[390]},{"teal":480,"source":"contracts/stakingPool.algo.ts:186","pc":[391]},{"teal":483,"source":"contracts/stakingPool.algo.ts:186","errorMessage":"staking pool must be initialized first","pc":[392]},{"teal":490,"source":"contracts/stakingPool.algo.ts:190","pc":[393,394]},{"teal":491,"source":"contracts/stakingPool.algo.ts:190","pc":[395]},{"teal":492,"source":"contracts/stakingPool.algo.ts:190","pc":[396]},{"teal":493,"source":"contracts/stakingPool.algo.ts:190","pc":[397,398]},{"teal":494,"source":"contracts/stakingPool.algo.ts:190","pc":[399]},{"teal":495,"source":"contracts/stakingPool.algo.ts:190","pc":[400]},{"teal":498,"source":"contracts/stakingPool.algo.ts:189","errorMessage":"stake can only be added via the validator contract","pc":[401]},{"teal":502,"source":"contracts/stakingPool.algo.ts:193","pc":[402,403]},{"teal":503,"source":"contracts/stakingPool.algo.ts:193","pc":[404,405]},{"teal":504,"source":"contracts/stakingPool.algo.ts:193","pc":[406]},{"teal":505,"source":"contracts/stakingPool.algo.ts:193","pc":[407]},{"teal":509,"source":"contracts/stakingPool.algo.ts:196","pc":[408,409,410]},{"teal":518,"source":"contracts/stakingPool.algo.ts:200","pc":[411,412]},{"teal":519,"source":"contracts/stakingPool.algo.ts:201","pc":[413,414]},{"teal":520,"source":"contracts/stakingPool.algo.ts:201","pc":[415]},{"teal":521,"source":"contracts/stakingPool.algo.ts:201","pc":[416]},{"teal":522,"source":"contracts/stakingPool.algo.ts:201","pc":[417,418]},{"teal":523,"source":"contracts/stakingPool.algo.ts:201","pc":[419]},{"teal":524,"source":"contracts/stakingPool.algo.ts:201","pc":[420]},{"teal":527,"source":"contracts/stakingPool.algo.ts:201","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[421]},{"teal":530,"source":"contracts/stakingPool.algo.ts:200","pc":[422,423]},{"teal":531,"source":"contracts/stakingPool.algo.ts:202","pc":[424,425]},{"teal":532,"source":"contracts/stakingPool.algo.ts:202","pc":[426,427]},{"teal":533,"source":"contracts/stakingPool.algo.ts:202","pc":[428]},{"teal":536,"source":"contracts/stakingPool.algo.ts:202","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[429]},{"teal":539,"source":"contracts/stakingPool.algo.ts:200","pc":[430,431]},{"teal":540,"source":"contracts/stakingPool.algo.ts:203","pc":[432,433]},{"teal":541,"source":"contracts/stakingPool.algo.ts:203","pc":[434,435]},{"teal":542,"source":"contracts/stakingPool.algo.ts:203","pc":[436,437]},{"teal":543,"source":"contracts/stakingPool.algo.ts:203","pc":[438]},{"teal":546,"source":"contracts/stakingPool.algo.ts:203","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[439]},{"teal":550,"source":"contracts/stakingPool.algo.ts:209","pc":[440,441]},{"teal":551,"source":"contracts/stakingPool.algo.ts:209","pc":[442,443,444]},{"teal":552,"source":"contracts/stakingPool.algo.ts:209","pc":[445]},{"teal":553,"source":"contracts/stakingPool.algo.ts:209","pc":[446,447]},{"teal":557,"source":"contracts/stakingPool.algo.ts:210","pc":[448]},{"teal":558,"source":"contracts/stakingPool.algo.ts:210","pc":[449,450]},{"teal":562,"source":"contracts/stakingPool.algo.ts:212","pc":[451,452]},{"teal":563,"source":"contracts/stakingPool.algo.ts:212","pc":[453]},{"teal":564,"source":"contracts/stakingPool.algo.ts:212","pc":[454,455]},{"teal":565,"source":"contracts/stakingPool.algo.ts:212","pc":[456,457]},{"teal":566,"source":"contracts/stakingPool.algo.ts:212","pc":[458]},{"teal":567,"source":"contracts/stakingPool.algo.ts:212","pc":[459,460]},{"teal":568,"source":"contracts/stakingPool.algo.ts:212","pc":[461]},{"teal":569,"source":"contracts/stakingPool.algo.ts:212","pc":[462]},{"teal":573,"source":"contracts/stakingPool.algo.ts:214","pc":[463,464]},{"teal":574,"source":"contracts/stakingPool.algo.ts:214","pc":[465]},{"teal":575,"source":"contracts/stakingPool.algo.ts:214","pc":[466,467]},{"teal":576,"source":"contracts/stakingPool.algo.ts:214","pc":[468]},{"teal":577,"source":"contracts/stakingPool.algo.ts:214","pc":[469]},{"teal":578,"source":"contracts/stakingPool.algo.ts:214","pc":[470,471]},{"teal":579,"source":"contracts/stakingPool.algo.ts:214","pc":[472]},{"teal":580,"source":"contracts/stakingPool.algo.ts:214","pc":[473,474]},{"teal":585,"source":"contracts/stakingPool.algo.ts:215","pc":[475,476]},{"teal":586,"source":"contracts/stakingPool.algo.ts:215","pc":[477]},{"teal":587,"source":"contracts/stakingPool.algo.ts:216","pc":[478]},{"teal":588,"source":"contracts/stakingPool.algo.ts:216","pc":[479,480]},{"teal":589,"source":"contracts/stakingPool.algo.ts:216","pc":[481,482]},{"teal":590,"source":"contracts/stakingPool.algo.ts:216","pc":[483]},{"teal":591,"source":"contracts/stakingPool.algo.ts:216","pc":[484,485]},{"teal":592,"source":"contracts/stakingPool.algo.ts:216","pc":[486]},{"teal":593,"source":"contracts/stakingPool.algo.ts:216","pc":[487]},{"teal":594,"source":"contracts/stakingPool.algo.ts:216","pc":[488]},{"teal":595,"source":"contracts/stakingPool.algo.ts:216","pc":[489]},{"teal":596,"source":"contracts/stakingPool.algo.ts:216","pc":[490]},{"teal":597,"source":"contracts/stakingPool.algo.ts:216","pc":[491,492]},{"teal":598,"source":"contracts/stakingPool.algo.ts:216","pc":[493]},{"teal":601,"source":"contracts/stakingPool.algo.ts:216","errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[494]},{"teal":602,"source":"contracts/stakingPool.algo.ts:216","pc":[495,496]},{"teal":603,"source":"contracts/stakingPool.algo.ts:216","pc":[497]},{"teal":604,"source":"contracts/stakingPool.algo.ts:216","pc":[498]},{"teal":605,"source":"contracts/stakingPool.algo.ts:216","pc":[499]},{"teal":606,"source":"contracts/stakingPool.algo.ts:216","pc":[500]},{"teal":607,"source":"contracts/stakingPool.algo.ts:216","pc":[501,502]},{"teal":608,"source":"contracts/stakingPool.algo.ts:216","pc":[503]},{"teal":609,"source":"contracts/stakingPool.algo.ts:216","pc":[504]},{"teal":610,"source":"contracts/stakingPool.algo.ts:216","pc":[505]},{"teal":611,"source":"contracts/stakingPool.algo.ts:215","pc":[506]},{"teal":615,"source":"contracts/stakingPool.algo.ts:219","pc":[507]},{"teal":616,"source":"contracts/stakingPool.algo.ts:219","pc":[508,509]},{"teal":621,"source":"contracts/stakingPool.algo.ts:219","pc":[510,511]},{"teal":622,"source":"contracts/stakingPool.algo.ts:219","pc":[512,513]},{"teal":623,"source":"contracts/stakingPool.algo.ts:219","pc":[514]},{"teal":624,"source":"contracts/stakingPool.algo.ts:219","pc":[515,516,517]},{"teal":629,"source":"contracts/stakingPool.algo.ts:220","pc":[518,519]},{"teal":630,"source":"contracts/stakingPool.algo.ts:220","pc":[520,521]},{"teal":631,"source":"contracts/stakingPool.algo.ts:220","pc":[522]},{"teal":632,"source":"contracts/stakingPool.algo.ts:220","pc":[523,524,525]},{"teal":637,"source":"contracts/stakingPool.algo.ts:221","pc":[526]},{"teal":638,"source":"contracts/stakingPool.algo.ts:221","pc":[527]},{"teal":639,"source":"contracts/stakingPool.algo.ts:221","pc":[528,529]},{"teal":640,"source":"contracts/stakingPool.algo.ts:221","pc":[530]},{"teal":641,"source":"contracts/stakingPool.algo.ts:221","pc":[531,532]},{"teal":642,"source":"contracts/stakingPool.algo.ts:221","pc":[533,534]},{"teal":643,"source":"contracts/stakingPool.algo.ts:221","pc":[535]},{"teal":644,"source":"contracts/stakingPool.algo.ts:221","pc":[536,537]},{"teal":645,"source":"contracts/stakingPool.algo.ts:221","pc":[538,539]},{"teal":646,"source":"contracts/stakingPool.algo.ts:221","pc":[540,541]},{"teal":647,"source":"contracts/stakingPool.algo.ts:221","pc":[542,543]},{"teal":648,"source":"contracts/stakingPool.algo.ts:221","pc":[544]},{"teal":653,"source":"contracts/stakingPool.algo.ts:223","pc":[545,546]},{"teal":654,"source":"contracts/stakingPool.algo.ts:223","pc":[547]},{"teal":655,"source":"contracts/stakingPool.algo.ts:223","pc":[548]},{"teal":656,"source":"contracts/stakingPool.algo.ts:223","pc":[549]},{"teal":657,"source":"contracts/stakingPool.algo.ts:223","pc":[550]},{"teal":658,"source":"contracts/stakingPool.algo.ts:223","pc":[551,552]},{"teal":659,"source":"contracts/stakingPool.algo.ts:223","pc":[553]},{"teal":660,"source":"contracts/stakingPool.algo.ts:223","pc":[554,555]},{"teal":665,"source":"contracts/stakingPool.algo.ts:224","pc":[556,557]},{"teal":666,"source":"contracts/stakingPool.algo.ts:224","pc":[558,559,560]},{"teal":667,"source":"contracts/stakingPool.algo.ts:224","pc":[561,562]},{"teal":668,"source":"contracts/stakingPool.algo.ts:224","pc":[563]},{"teal":669,"source":"contracts/stakingPool.algo.ts:224","pc":[564,565,566]},{"teal":674,"source":"contracts/stakingPool.algo.ts:226","pc":[567,568]},{"teal":675,"source":"contracts/stakingPool.algo.ts:226","pc":[569,570]},{"teal":676,"source":"contracts/stakingPool.algo.ts:226","pc":[571,572]},{"teal":677,"source":"contracts/stakingPool.algo.ts:226","pc":[573,574,575]},{"teal":678,"source":"contracts/stakingPool.algo.ts:226","pc":[576]},{"teal":679,"source":"contracts/stakingPool.algo.ts:226","pc":[577,578]},{"teal":680,"source":"contracts/stakingPool.algo.ts:226","pc":[579,580]},{"teal":681,"source":"contracts/stakingPool.algo.ts:226","pc":[581]},{"teal":682,"source":"contracts/stakingPool.algo.ts:226","pc":[582]},{"teal":683,"source":"contracts/stakingPool.algo.ts:226","pc":[583]},{"teal":684,"source":"contracts/stakingPool.algo.ts:226","pc":[584,585]},{"teal":688,"source":"contracts/stakingPool.algo.ts:227","pc":[586,587]},{"teal":689,"source":"contracts/stakingPool.algo.ts:227","pc":[588,589]},{"teal":690,"source":"contracts/stakingPool.algo.ts:227","pc":[590,591]},{"teal":691,"source":"contracts/stakingPool.algo.ts:227","pc":[592]},{"teal":692,"source":"contracts/stakingPool.algo.ts:227","pc":[593]},{"teal":693,"source":"contracts/stakingPool.algo.ts:227","pc":[594,595]},{"teal":697,"source":"contracts/stakingPool.algo.ts:230","pc":[596,597]},{"teal":698,"source":"contracts/stakingPool.algo.ts:230","pc":[598]},{"teal":699,"source":"contracts/stakingPool.algo.ts:230","pc":[599]},{"teal":700,"source":"contracts/stakingPool.algo.ts:230","pc":[600,601]},{"teal":701,"source":"contracts/stakingPool.algo.ts:230","pc":[602]},{"teal":702,"source":"contracts/stakingPool.algo.ts:230","pc":[603,604]},{"teal":703,"source":"contracts/stakingPool.algo.ts:230","pc":[605]},{"teal":707,"source":"contracts/stakingPool.algo.ts:232","pc":[606,607]},{"teal":708,"source":"contracts/stakingPool.algo.ts:232","pc":[608,609,610]},{"teal":714,"source":"contracts/stakingPool.algo.ts:234","pc":[611,612]},{"teal":715,"source":"contracts/stakingPool.algo.ts:234","pc":[613]},{"teal":716,"source":"contracts/stakingPool.algo.ts:234","pc":[614]},{"teal":717,"source":"contracts/stakingPool.algo.ts:234","pc":[615]},{"teal":718,"source":"contracts/stakingPool.algo.ts:234","pc":[616,617,618]},{"teal":719,"source":"contracts/stakingPool.algo.ts:234","pc":[619,620]},{"teal":720,"source":"contracts/stakingPool.algo.ts:234","pc":[621,622,623]},{"teal":721,"source":"contracts/stakingPool.algo.ts:234","pc":[624,625]},{"teal":722,"source":"contracts/stakingPool.algo.ts:234","pc":[626]},{"teal":723,"source":"contracts/stakingPool.algo.ts:234","pc":[627]},{"teal":726,"source":"contracts/stakingPool.algo.ts:234","pc":[628,629,630]},{"teal":731,"source":"contracts/stakingPool.algo.ts:235","pc":[631,632]},{"teal":732,"source":"contracts/stakingPool.algo.ts:235","pc":[633]},{"teal":733,"source":"contracts/stakingPool.algo.ts:235","pc":[634]},{"teal":734,"source":"contracts/stakingPool.algo.ts:235","pc":[635,636]},{"teal":741,"source":"contracts/stakingPool.algo.ts:219","pc":[637,638]},{"teal":742,"source":"contracts/stakingPool.algo.ts:219","pc":[639]},{"teal":743,"source":"contracts/stakingPool.algo.ts:219","pc":[640]},{"teal":744,"source":"contracts/stakingPool.algo.ts:219","pc":[641,642]},{"teal":745,"source":"contracts/stakingPool.algo.ts:219","pc":[643,644,645]},{"teal":751,"source":"contracts/stakingPool.algo.ts:239","pc":[646,647]},{"teal":752,"source":"contracts/stakingPool.algo.ts:239","pc":[648]},{"teal":753,"source":"contracts/stakingPool.algo.ts:239","pc":[649]},{"teal":754,"source":"contracts/stakingPool.algo.ts:239","pc":[650,651,652]},{"teal":758,"source":"contracts/stakingPool.algo.ts:241","errorMessage":"Staking pool full","pc":[653]},{"teal":763,"source":"contracts/stakingPool.algo.ts:246","pc":[654,655]},{"teal":764,"source":"contracts/stakingPool.algo.ts:246","pc":[656,657]},{"teal":765,"source":"contracts/stakingPool.algo.ts:246","pc":[658,659]},{"teal":766,"source":"contracts/stakingPool.algo.ts:246","pc":[660]},{"teal":767,"source":"contracts/stakingPool.algo.ts:246","pc":[661]},{"teal":770,"source":"contracts/stakingPool.algo.ts:246","errorMessage":"must stake at least the minimum for this pool","pc":[662]},{"teal":774,"source":"contracts/stakingPool.algo.ts:248","pc":[663,664]},{"teal":775,"source":"contracts/stakingPool.algo.ts:248","pc":[665]},{"teal":776,"source":"contracts/stakingPool.algo.ts:248","pc":[666]},{"teal":777,"source":"contracts/stakingPool.algo.ts:248","pc":[667]},{"teal":778,"source":"contracts/stakingPool.algo.ts:248","pc":[668]},{"teal":779,"source":"contracts/stakingPool.algo.ts:248","pc":[669]},{"teal":780,"source":"contracts/stakingPool.algo.ts:248","pc":[670]},{"teal":781,"source":"contracts/stakingPool.algo.ts:248","pc":[671,672]},{"teal":782,"source":"contracts/stakingPool.algo.ts:248","pc":[673]},{"teal":783,"source":"contracts/stakingPool.algo.ts:248","pc":[674,675]},{"teal":784,"source":"contracts/stakingPool.algo.ts:248","pc":[676]},{"teal":785,"source":"contracts/stakingPool.algo.ts:248","pc":[677,678]},{"teal":786,"source":"contracts/stakingPool.algo.ts:248","pc":[679]},{"teal":787,"source":"contracts/stakingPool.algo.ts:248","pc":[680]},{"teal":797,"source":"contracts/stakingPool.algo.ts:249","pc":[681,682]},{"teal":798,"source":"contracts/stakingPool.algo.ts:249","pc":[683]},{"teal":799,"source":"contracts/stakingPool.algo.ts:249","pc":[684]},{"teal":800,"source":"contracts/stakingPool.algo.ts:249","pc":[685]},{"teal":801,"source":"contracts/stakingPool.algo.ts:249","pc":[686]},{"teal":802,"source":"contracts/stakingPool.algo.ts:250","pc":[687,688]},{"teal":803,"source":"contracts/stakingPool.algo.ts:251","pc":[689,690]},{"teal":804,"source":"contracts/stakingPool.algo.ts:251","pc":[691,692]},{"teal":805,"source":"contracts/stakingPool.algo.ts:251","pc":[693]},{"teal":806,"source":"contracts/stakingPool.algo.ts:251","pc":[694]},{"teal":807,"source":"contracts/stakingPool.algo.ts:252","pc":[695,696]},{"teal":808,"source":"contracts/stakingPool.algo.ts:252","pc":[697]},{"teal":809,"source":"contracts/stakingPool.algo.ts:253","pc":[698,699]},{"teal":810,"source":"contracts/stakingPool.algo.ts:253","pc":[700]},{"teal":811,"source":"contracts/stakingPool.algo.ts:254","pc":[701,702]},{"teal":812,"source":"contracts/stakingPool.algo.ts:254","pc":[703]},{"teal":813,"source":"contracts/stakingPool.algo.ts:254","pc":[704]},{"teal":814,"source":"contracts/stakingPool.algo.ts:249","pc":[705]},{"teal":815,"source":"contracts/stakingPool.algo.ts:249","pc":[706,707]},{"teal":816,"source":"contracts/stakingPool.algo.ts:249","pc":[708]},{"teal":820,"source":"contracts/stakingPool.algo.ts:256","pc":[709,710]},{"teal":821,"source":"contracts/stakingPool.algo.ts:256","pc":[711]},{"teal":822,"source":"contracts/stakingPool.algo.ts:256","pc":[712]},{"teal":823,"source":"contracts/stakingPool.algo.ts:256","pc":[713]},{"teal":824,"source":"contracts/stakingPool.algo.ts:256","pc":[714,715]},{"teal":825,"source":"contracts/stakingPool.algo.ts:256","pc":[716]},{"teal":826,"source":"contracts/stakingPool.algo.ts:256","pc":[717]},{"teal":830,"source":"contracts/stakingPool.algo.ts:257","pc":[718,719]},{"teal":834,"source":"contracts/stakingPool.algo.ts:185","pc":[720,721]},{"teal":837,"source":"contracts/stakingPool.algo.ts:185","pc":[722,723]},{"teal":838,"source":"contracts/stakingPool.algo.ts:185","pc":[724]},{"teal":843,"source":"contracts/stakingPool.algo.ts:271","pc":[725,726,727]},{"teal":844,"source":"contracts/stakingPool.algo.ts:271","pc":[728]},{"teal":847,"source":"contracts/stakingPool.algo.ts:271","pc":[729,730,731]},{"teal":848,"source":"contracts/stakingPool.algo.ts:271","pc":[732]},{"teal":849,"source":"contracts/stakingPool.algo.ts:271","pc":[733]},{"teal":850,"source":"contracts/stakingPool.algo.ts:271","pc":[734,735]},{"teal":851,"source":"contracts/stakingPool.algo.ts:271","pc":[736]},{"teal":854,"source":"contracts/stakingPool.algo.ts:271","errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[737]},{"teal":857,"source":"contracts/stakingPool.algo.ts:271","pc":[738,739,740]},{"teal":858,"source":"contracts/stakingPool.algo.ts:271","pc":[741]},{"teal":859,"source":"contracts/stakingPool.algo.ts:271","pc":[742]},{"teal":873,"source":"contracts/stakingPool.algo.ts:271","pc":[743,744,745]},{"teal":876,"source":"contracts/stakingPool.algo.ts:271","pc":[746]},{"teal":877,"source":"contracts/stakingPool.algo.ts:271","pc":[747,748]},{"teal":882,"source":"contracts/stakingPool.algo.ts:274","pc":[749,750]},{"teal":883,"source":"contracts/stakingPool.algo.ts:274","pc":[751,752]},{"teal":884,"source":"contracts/stakingPool.algo.ts:274","pc":[753]},{"teal":885,"source":"contracts/stakingPool.algo.ts:274","pc":[754,755,756]},{"teal":893,"source":"contracts/stakingPool.algo.ts:276","pc":[757,758,759]},{"teal":896,"source":"contracts/stakingPool.algo.ts:275","errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[760]},{"teal":901,"source":"contracts/stakingPool.algo.ts:281","pc":[761,762,763]},{"teal":905,"source":"contracts/stakingPool.algo.ts:283","pc":[764]},{"teal":906,"source":"contracts/stakingPool.algo.ts:283","pc":[765,766]},{"teal":911,"source":"contracts/stakingPool.algo.ts:283","pc":[767,768]},{"teal":912,"source":"contracts/stakingPool.algo.ts:283","pc":[769,770]},{"teal":913,"source":"contracts/stakingPool.algo.ts:283","pc":[771]},{"teal":914,"source":"contracts/stakingPool.algo.ts:283","pc":[772,773,774]},{"teal":919,"source":"contracts/stakingPool.algo.ts:284","pc":[775,776]},{"teal":920,"source":"contracts/stakingPool.algo.ts:284","pc":[777,778]},{"teal":921,"source":"contracts/stakingPool.algo.ts:284","pc":[779]},{"teal":922,"source":"contracts/stakingPool.algo.ts:284","pc":[780,781,782]},{"teal":927,"source":"contracts/stakingPool.algo.ts:285","pc":[783]},{"teal":928,"source":"contracts/stakingPool.algo.ts:285","pc":[784]},{"teal":929,"source":"contracts/stakingPool.algo.ts:285","pc":[785,786]},{"teal":930,"source":"contracts/stakingPool.algo.ts:285","pc":[787]},{"teal":931,"source":"contracts/stakingPool.algo.ts:285","pc":[788,789]},{"teal":932,"source":"contracts/stakingPool.algo.ts:285","pc":[790,791]},{"teal":933,"source":"contracts/stakingPool.algo.ts:285","pc":[792]},{"teal":934,"source":"contracts/stakingPool.algo.ts:285","pc":[793,794]},{"teal":935,"source":"contracts/stakingPool.algo.ts:285","pc":[795,796]},{"teal":936,"source":"contracts/stakingPool.algo.ts:285","pc":[797,798]},{"teal":937,"source":"contracts/stakingPool.algo.ts:285","pc":[799,800]},{"teal":938,"source":"contracts/stakingPool.algo.ts:285","pc":[801]},{"teal":943,"source":"contracts/stakingPool.algo.ts:287","pc":[802,803]},{"teal":944,"source":"contracts/stakingPool.algo.ts:287","pc":[804]},{"teal":945,"source":"contracts/stakingPool.algo.ts:287","pc":[805]},{"teal":946,"source":"contracts/stakingPool.algo.ts:287","pc":[806]},{"teal":947,"source":"contracts/stakingPool.algo.ts:287","pc":[807]},{"teal":948,"source":"contracts/stakingPool.algo.ts:287","pc":[808,809]},{"teal":949,"source":"contracts/stakingPool.algo.ts:287","pc":[810]},{"teal":950,"source":"contracts/stakingPool.algo.ts:287","pc":[811,812]},{"teal":955,"source":"contracts/stakingPool.algo.ts:288","pc":[813,814]},{"teal":956,"source":"contracts/stakingPool.algo.ts:288","pc":[815,816,817]},{"teal":957,"source":"contracts/stakingPool.algo.ts:288","pc":[818,819]},{"teal":958,"source":"contracts/stakingPool.algo.ts:288","pc":[820]},{"teal":959,"source":"contracts/stakingPool.algo.ts:288","pc":[821,822,823]},{"teal":965,"source":"contracts/stakingPool.algo.ts:289","pc":[824,825]},{"teal":966,"source":"contracts/stakingPool.algo.ts:289","pc":[826]},{"teal":967,"source":"contracts/stakingPool.algo.ts:289","pc":[827]},{"teal":968,"source":"contracts/stakingPool.algo.ts:289","pc":[828,829,830]},{"teal":973,"source":"contracts/stakingPool.algo.ts:291","pc":[831,832]},{"teal":974,"source":"contracts/stakingPool.algo.ts:291","pc":[833,834,835]},{"teal":975,"source":"contracts/stakingPool.algo.ts:291","pc":[836]},{"teal":976,"source":"contracts/stakingPool.algo.ts:291","pc":[837,838]},{"teal":982,"source":"contracts/stakingPool.algo.ts:293","pc":[839,840]},{"teal":983,"source":"contracts/stakingPool.algo.ts:293","pc":[841,842,843]},{"teal":984,"source":"contracts/stakingPool.algo.ts:293","pc":[844]},{"teal":985,"source":"contracts/stakingPool.algo.ts:293","pc":[845,846]},{"teal":986,"source":"contracts/stakingPool.algo.ts:293","pc":[847]},{"teal":987,"source":"contracts/stakingPool.algo.ts:293","pc":[848,849,850]},{"teal":991,"source":"contracts/stakingPool.algo.ts:294","errorMessage":"Insufficient balance","pc":[851]},{"teal":996,"source":"contracts/stakingPool.algo.ts:296","pc":[852,853]},{"teal":997,"source":"contracts/stakingPool.algo.ts:296","pc":[854,855]},{"teal":998,"source":"contracts/stakingPool.algo.ts:296","pc":[856,857]},{"teal":999,"source":"contracts/stakingPool.algo.ts:296","pc":[858,859,860]},{"teal":1000,"source":"contracts/stakingPool.algo.ts:296","pc":[861]},{"teal":1001,"source":"contracts/stakingPool.algo.ts:296","pc":[862,863]},{"teal":1002,"source":"contracts/stakingPool.algo.ts:296","pc":[864]},{"teal":1003,"source":"contracts/stakingPool.algo.ts:296","pc":[865]},{"teal":1004,"source":"contracts/stakingPool.algo.ts:296","pc":[866]},{"teal":1005,"source":"contracts/stakingPool.algo.ts:296","pc":[867,868]},{"teal":1009,"source":"contracts/stakingPool.algo.ts:297","pc":[869,870]},{"teal":1010,"source":"contracts/stakingPool.algo.ts:297","pc":[871]},{"teal":1011,"source":"contracts/stakingPool.algo.ts:297","pc":[872,873]},{"teal":1012,"source":"contracts/stakingPool.algo.ts:297","pc":[874]},{"teal":1013,"source":"contracts/stakingPool.algo.ts:297","pc":[875,876]},{"teal":1014,"source":"contracts/stakingPool.algo.ts:297","pc":[877]},{"teal":1015,"source":"contracts/stakingPool.algo.ts:297","pc":[878]},{"teal":1019,"source":"contracts/stakingPool.algo.ts:299","pc":[879]},{"teal":1020,"source":"contracts/stakingPool.algo.ts:299","pc":[880,881]},{"teal":1025,"source":"contracts/stakingPool.algo.ts:300","pc":[882,883]},{"teal":1026,"source":"contracts/stakingPool.algo.ts:300","pc":[884,885,886]},{"teal":1027,"source":"contracts/stakingPool.algo.ts:300","pc":[887]},{"teal":1028,"source":"contracts/stakingPool.algo.ts:300","pc":[888]},{"teal":1029,"source":"contracts/stakingPool.algo.ts:300","pc":[889]},{"teal":1030,"source":"contracts/stakingPool.algo.ts:300","pc":[890,891,892]},{"teal":1036,"source":"contracts/stakingPool.algo.ts:302","pc":[893,894]},{"teal":1037,"source":"contracts/stakingPool.algo.ts:302","pc":[895]},{"teal":1038,"source":"contracts/stakingPool.algo.ts:302","pc":[896]},{"teal":1039,"source":"contracts/stakingPool.algo.ts:302","pc":[897]},{"teal":1040,"source":"contracts/stakingPool.algo.ts:302","pc":[898,899,900]},{"teal":1048,"source":"contracts/stakingPool.algo.ts:303","pc":[901]},{"teal":1049,"source":"contracts/stakingPool.algo.ts:303","pc":[902]},{"teal":1050,"source":"contracts/stakingPool.algo.ts:303","pc":[903,904]},{"teal":1051,"source":"contracts/stakingPool.algo.ts:303","pc":[905,906]},{"teal":1052,"source":"contracts/stakingPool.algo.ts:303","pc":[907,908]},{"teal":1056,"source":"contracts/stakingPool.algo.ts:304","pc":[909]},{"teal":1057,"source":"contracts/stakingPool.algo.ts:304","pc":[910]},{"teal":1058,"source":"contracts/stakingPool.algo.ts:304","pc":[911,912]},{"teal":1062,"source":"contracts/stakingPool.algo.ts:305","pc":[913]},{"teal":1063,"source":"contracts/stakingPool.algo.ts:305","pc":[914]},{"teal":1064,"source":"contracts/stakingPool.algo.ts:305","pc":[915]},{"teal":1065,"source":"contracts/stakingPool.algo.ts:305","pc":[916,917]},{"teal":1068,"source":"contracts/stakingPool.algo.ts:303","pc":[918]},{"teal":1069,"source":"contracts/stakingPool.algo.ts:303","pc":[919,920]},{"teal":1072,"source":"contracts/stakingPool.algo.ts:303","pc":[921]},{"teal":1073,"source":"contracts/stakingPool.algo.ts:303","pc":[922,923]},{"teal":1074,"source":"contracts/stakingPool.algo.ts:303","pc":[924]},{"teal":1075,"source":"contracts/stakingPool.algo.ts:303","pc":[925]},{"teal":1076,"source":"contracts/stakingPool.algo.ts:303","pc":[926,927]},{"teal":1077,"source":"contracts/stakingPool.algo.ts:303","pc":[928,929,930]},{"teal":1078,"source":"contracts/stakingPool.algo.ts:303","pc":[931,932]},{"teal":1086,"source":"contracts/stakingPool.algo.ts:311","pc":[933]},{"teal":1087,"source":"contracts/stakingPool.algo.ts:311","pc":[934,935]},{"teal":1088,"source":"contracts/stakingPool.algo.ts:311","pc":[936,937]},{"teal":1092,"source":"contracts/stakingPool.algo.ts:312","pc":[938,939]},{"teal":1093,"source":"contracts/stakingPool.algo.ts:312","pc":[940,941,942]},{"teal":1094,"source":"contracts/stakingPool.algo.ts:312","pc":[943]},{"teal":1095,"source":"contracts/stakingPool.algo.ts:312","pc":[944,945]},{"teal":1099,"source":"contracts/stakingPool.algo.ts:313","pc":[946,947]},{"teal":1100,"source":"contracts/stakingPool.algo.ts:313","pc":[948,949]},{"teal":1104,"source":"contracts/stakingPool.algo.ts:314","pc":[950,951]},{"teal":1105,"source":"contracts/stakingPool.algo.ts:314","pc":[952,953,954]},{"teal":1106,"source":"contracts/stakingPool.algo.ts:314","pc":[955]},{"teal":1107,"source":"contracts/stakingPool.algo.ts:314","pc":[956,957]},{"teal":1110,"source":"contracts/stakingPool.algo.ts:311","pc":[958]},{"teal":1111,"source":"contracts/stakingPool.algo.ts:311","pc":[959,960]},{"teal":1114,"source":"contracts/stakingPool.algo.ts:311","pc":[961]},{"teal":1118,"source":"contracts/stakingPool.algo.ts:316","pc":[962,963]},{"teal":1119,"source":"contracts/stakingPool.algo.ts:316","pc":[964,965,966]},{"teal":1120,"source":"contracts/stakingPool.algo.ts:316","pc":[967]},{"teal":1121,"source":"contracts/stakingPool.algo.ts:316","pc":[968,969]},{"teal":1125,"source":"contracts/stakingPool.algo.ts:317","pc":[970,971]},{"teal":1126,"source":"contracts/stakingPool.algo.ts:317","pc":[972,973]},{"teal":1127,"source":"contracts/stakingPool.algo.ts:317","pc":[974,975]},{"teal":1128,"source":"contracts/stakingPool.algo.ts:317","pc":[976,977]},{"teal":1129,"source":"contracts/stakingPool.algo.ts:302","pc":[978,979,980]},{"teal":1134,"source":"contracts/stakingPool.algo.ts:322","pc":[981,982]},{"teal":1135,"source":"contracts/stakingPool.algo.ts:322","pc":[983,984,985]},{"teal":1136,"source":"contracts/stakingPool.algo.ts:322","pc":[986]},{"teal":1137,"source":"contracts/stakingPool.algo.ts:322","pc":[987,988]},{"teal":1141,"source":"contracts/stakingPool.algo.ts:323","pc":[989,990]},{"teal":1142,"source":"contracts/stakingPool.algo.ts:323","pc":[991,992]},{"teal":1143,"source":"contracts/stakingPool.algo.ts:323","pc":[993,994]},{"teal":1144,"source":"contracts/stakingPool.algo.ts:323","pc":[995,996]},{"teal":1154,"source":"contracts/stakingPool.algo.ts:329","pc":[997,998]},{"teal":1155,"source":"contracts/stakingPool.algo.ts:329","pc":[999,1000,1001]},{"teal":1156,"source":"contracts/stakingPool.algo.ts:329","pc":[1002]},{"teal":1157,"source":"contracts/stakingPool.algo.ts:329","pc":[1003]},{"teal":1158,"source":"contracts/stakingPool.algo.ts:329","pc":[1004]},{"teal":1159,"source":"contracts/stakingPool.algo.ts:329","pc":[1005]},{"teal":1160,"source":"contracts/stakingPool.algo.ts:329","pc":[1006,1007,1008]},{"teal":1161,"source":"contracts/stakingPool.algo.ts:329","pc":[1009,1010]},{"teal":1162,"source":"contracts/stakingPool.algo.ts:329","pc":[1011,1012,1013]},{"teal":1163,"source":"contracts/stakingPool.algo.ts:329","pc":[1014]},{"teal":1164,"source":"contracts/stakingPool.algo.ts:329","pc":[1015,1016]},{"teal":1165,"source":"contracts/stakingPool.algo.ts:329","pc":[1017]},{"teal":1166,"source":"contracts/stakingPool.algo.ts:329","pc":[1018]},{"teal":1167,"source":"contracts/stakingPool.algo.ts:329","pc":[1019]},{"teal":1171,"source":"contracts/stakingPool.algo.ts:328","errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1020]},{"teal":1179,"source":"contracts/stakingPool.algo.ts:336","pc":[1021]},{"teal":1180,"source":"contracts/stakingPool.algo.ts:336","pc":[1022]},{"teal":1181,"source":"contracts/stakingPool.algo.ts:336","pc":[1023,1024]},{"teal":1185,"source":"contracts/stakingPool.algo.ts:337","pc":[1025,1026]},{"teal":1186,"source":"contracts/stakingPool.algo.ts:337","pc":[1027,1028]},{"teal":1190,"source":"contracts/stakingPool.algo.ts:338","pc":[1029,1030]},{"teal":1191,"source":"contracts/stakingPool.algo.ts:338","pc":[1031,1032]},{"teal":1195,"source":"contracts/stakingPool.algo.ts:339","pc":[1033,1034,1035,1036,1037,1038,1039,1040,1041,1042]},{"teal":1196,"source":"contracts/stakingPool.algo.ts:339","pc":[1043,1044]},{"teal":1199,"source":"contracts/stakingPool.algo.ts:336","pc":[1045]},{"teal":1200,"source":"contracts/stakingPool.algo.ts:336","pc":[1046,1047]},{"teal":1203,"source":"contracts/stakingPool.algo.ts:336","pc":[1048]},{"teal":1207,"source":"contracts/stakingPool.algo.ts:341","pc":[1049]},{"teal":1208,"source":"contracts/stakingPool.algo.ts:341","pc":[1050,1051]},{"teal":1213,"source":"contracts/stakingPool.algo.ts:342","pc":[1052,1053]},{"teal":1214,"source":"contracts/stakingPool.algo.ts:342","pc":[1054,1055,1056]},{"teal":1215,"source":"contracts/stakingPool.algo.ts:342","pc":[1057]},{"teal":1216,"source":"contracts/stakingPool.algo.ts:342","pc":[1058]},{"teal":1217,"source":"contracts/stakingPool.algo.ts:342","pc":[1059]},{"teal":1218,"source":"contracts/stakingPool.algo.ts:342","pc":[1060,1061,1062]},{"teal":1223,"source":"contracts/stakingPool.algo.ts:344","pc":[1063,1064]},{"teal":1224,"source":"contracts/stakingPool.algo.ts:344","pc":[1065]},{"teal":1225,"source":"contracts/stakingPool.algo.ts:344","pc":[1066]},{"teal":1226,"source":"contracts/stakingPool.algo.ts:344","pc":[1067]},{"teal":1227,"source":"contracts/stakingPool.algo.ts:344","pc":[1068,1069]},{"teal":1228,"source":"contracts/stakingPool.algo.ts:344","pc":[1070]},{"teal":1229,"source":"contracts/stakingPool.algo.ts:344","pc":[1071]},{"teal":1233,"source":"contracts/stakingPool.algo.ts:345","pc":[1072,1073]},{"teal":1234,"source":"contracts/stakingPool.algo.ts:345","pc":[1074]},{"teal":1235,"source":"contracts/stakingPool.algo.ts:345","pc":[1075,1076]},{"teal":1236,"source":"contracts/stakingPool.algo.ts:345","pc":[1077]},{"teal":1237,"source":"contracts/stakingPool.algo.ts:345","pc":[1078,1079]},{"teal":1241,"source":"contracts/stakingPool.algo.ts:346","pc":[1080,1081]},{"teal":1242,"source":"contracts/stakingPool.algo.ts:346","pc":[1082,1083]},{"teal":1243,"source":"contracts/stakingPool.algo.ts:346","pc":[1084,1085]},{"teal":1244,"source":"contracts/stakingPool.algo.ts:346","pc":[1086,1087]},{"teal":1248,"source":"contracts/stakingPool.algo.ts:347","pc":[1088,1089]},{"teal":1249,"source":"contracts/stakingPool.algo.ts:347","pc":[1090,1091]},{"teal":1250,"source":"contracts/stakingPool.algo.ts:347","pc":[1092,1093]},{"teal":1251,"source":"contracts/stakingPool.algo.ts:347","pc":[1094,1095]},{"teal":1255,"source":"contracts/stakingPool.algo.ts:348","pc":[1096]},{"teal":1256,"source":"contracts/stakingPool.algo.ts:348","pc":[1097,1098]},{"teal":1261,"source":"contracts/stakingPool.algo.ts:351","pc":[1099,1100]},{"teal":1262,"source":"contracts/stakingPool.algo.ts:351","pc":[1101]},{"teal":1263,"source":"contracts/stakingPool.algo.ts:351","pc":[1102]},{"teal":1264,"source":"contracts/stakingPool.algo.ts:351","pc":[1103,1104]},{"teal":1265,"source":"contracts/stakingPool.algo.ts:351","pc":[1105]},{"teal":1266,"source":"contracts/stakingPool.algo.ts:351","pc":[1106,1107]},{"teal":1267,"source":"contracts/stakingPool.algo.ts:351","pc":[1108]},{"teal":1271,"source":"contracts/stakingPool.algo.ts:353","pc":[1109,1110]},{"teal":1272,"source":"contracts/stakingPool.algo.ts:353","pc":[1111]},{"teal":1273,"source":"contracts/stakingPool.algo.ts:353","pc":[1112,1113]},{"teal":1274,"source":"contracts/stakingPool.algo.ts:353","pc":[1114]},{"teal":1275,"source":"contracts/stakingPool.algo.ts:353","pc":[1115]},{"teal":1276,"source":"contracts/stakingPool.algo.ts:353","pc":[1116,1117]},{"teal":1277,"source":"contracts/stakingPool.algo.ts:353","pc":[1118]},{"teal":1278,"source":"contracts/stakingPool.algo.ts:353","pc":[1119,1120]},{"teal":1282,"source":"contracts/stakingPool.algo.ts:354","pc":[1121,1122]},{"teal":1283,"source":"contracts/stakingPool.algo.ts:354","pc":[1123]},{"teal":1284,"source":"contracts/stakingPool.algo.ts:354","pc":[1124,1125]},{"teal":1285,"source":"contracts/stakingPool.algo.ts:354","pc":[1126]},{"teal":1286,"source":"contracts/stakingPool.algo.ts:354","pc":[1127]},{"teal":1287,"source":"contracts/stakingPool.algo.ts:354","pc":[1128]},{"teal":1288,"source":"contracts/stakingPool.algo.ts:354","pc":[1129]},{"teal":1289,"source":"contracts/stakingPool.algo.ts:354","pc":[1130,1131]},{"teal":1290,"source":"contracts/stakingPool.algo.ts:354","pc":[1132]},{"teal":1293,"source":"contracts/stakingPool.algo.ts:354","errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1133]},{"teal":1294,"source":"contracts/stakingPool.algo.ts:354","pc":[1134,1135]},{"teal":1295,"source":"contracts/stakingPool.algo.ts:354","pc":[1136]},{"teal":1296,"source":"contracts/stakingPool.algo.ts:354","pc":[1137]},{"teal":1297,"source":"contracts/stakingPool.algo.ts:354","pc":[1138]},{"teal":1298,"source":"contracts/stakingPool.algo.ts:354","pc":[1139]},{"teal":1299,"source":"contracts/stakingPool.algo.ts:354","pc":[1140,1141]},{"teal":1300,"source":"contracts/stakingPool.algo.ts:354","pc":[1142]},{"teal":1301,"source":"contracts/stakingPool.algo.ts:354","pc":[1143]},{"teal":1302,"source":"contracts/stakingPool.algo.ts:354","pc":[1144]},{"teal":1303,"source":"contracts/stakingPool.algo.ts:354","pc":[1145,1146]},{"teal":1307,"source":"contracts/stakingPool.algo.ts:355","pc":[1147,1148]},{"teal":1308,"source":"contracts/stakingPool.algo.ts:355","pc":[1149]},{"teal":1309,"source":"contracts/stakingPool.algo.ts:355","pc":[1150]},{"teal":1310,"source":"contracts/stakingPool.algo.ts:355","pc":[1151,1152]},{"teal":1311,"source":"contracts/stakingPool.algo.ts:355","pc":[1153]},{"teal":1312,"source":"contracts/stakingPool.algo.ts:355","pc":[1154]},{"teal":1313,"source":"contracts/stakingPool.algo.ts:355","pc":[1155]},{"teal":1314,"source":"contracts/stakingPool.algo.ts:355","pc":[1156,1157]},{"teal":1315,"source":"contracts/stakingPool.algo.ts:355","pc":[1158]},{"teal":1318,"source":"contracts/stakingPool.algo.ts:355","errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1159]},{"teal":1319,"source":"contracts/stakingPool.algo.ts:355","pc":[1160,1161]},{"teal":1320,"source":"contracts/stakingPool.algo.ts:355","pc":[1162]},{"teal":1321,"source":"contracts/stakingPool.algo.ts:355","pc":[1163]},{"teal":1322,"source":"contracts/stakingPool.algo.ts:355","pc":[1164]},{"teal":1323,"source":"contracts/stakingPool.algo.ts:355","pc":[1165]},{"teal":1324,"source":"contracts/stakingPool.algo.ts:355","pc":[1166,1167]},{"teal":1325,"source":"contracts/stakingPool.algo.ts:355","pc":[1168]},{"teal":1326,"source":"contracts/stakingPool.algo.ts:355","pc":[1169]},{"teal":1327,"source":"contracts/stakingPool.algo.ts:355","pc":[1170]},{"teal":1328,"source":"contracts/stakingPool.algo.ts:355","pc":[1171]},{"teal":1341,"source":"contracts/stakingPool.algo.ts:360","pc":[1172]},{"teal":1342,"source":"contracts/stakingPool.algo.ts:360","pc":[1173]},{"teal":1343,"source":"contracts/stakingPool.algo.ts:360","pc":[1174,1175]},{"teal":1344,"source":"contracts/stakingPool.algo.ts:360","pc":[1176,1177]},{"teal":1345,"source":"contracts/stakingPool.algo.ts:360","pc":[1178,1179]},{"teal":1349,"source":"contracts/stakingPool.algo.ts:361","pc":[1180]},{"teal":1350,"source":"contracts/stakingPool.algo.ts:361","pc":[1181]},{"teal":1351,"source":"contracts/stakingPool.algo.ts:361","pc":[1182,1183]},{"teal":1361,"source":"contracts/stakingPool.algo.ts:363","pc":[1184]},{"teal":1362,"source":"contracts/stakingPool.algo.ts:363","pc":[1185]},{"teal":1363,"source":"contracts/stakingPool.algo.ts:363","pc":[1186]},{"teal":1364,"source":"contracts/stakingPool.algo.ts:363","pc":[1187,1188]},{"teal":1365,"source":"contracts/stakingPool.algo.ts:363","pc":[1189]},{"teal":1366,"source":"contracts/stakingPool.algo.ts:363","pc":[1190]},{"teal":1367,"source":"contracts/stakingPool.algo.ts:363","pc":[1191]},{"teal":1368,"source":"contracts/stakingPool.algo.ts:363","pc":[1192,1193,1194]},{"teal":1369,"source":"contracts/stakingPool.algo.ts:363","pc":[1195]},{"teal":1370,"source":"contracts/stakingPool.algo.ts:363","pc":[1196]},{"teal":1371,"source":"contracts/stakingPool.algo.ts:363","pc":[1197,1198]},{"teal":1372,"source":"contracts/stakingPool.algo.ts:364","pc":[1199,1200]},{"teal":1373,"source":"contracts/stakingPool.algo.ts:364","pc":[1201,1202]},{"teal":1374,"source":"contracts/stakingPool.algo.ts:365","pc":[1203,1204]},{"teal":1375,"source":"contracts/stakingPool.algo.ts:365","pc":[1205]},{"teal":1376,"source":"contracts/stakingPool.algo.ts:365","pc":[1206,1207]},{"teal":1377,"source":"contracts/stakingPool.algo.ts:366","pc":[1208,1209]},{"teal":1378,"source":"contracts/stakingPool.algo.ts:366","pc":[1210]},{"teal":1379,"source":"contracts/stakingPool.algo.ts:366","pc":[1211,1212]},{"teal":1380,"source":"contracts/stakingPool.algo.ts:367","pc":[1213,1214]},{"teal":1381,"source":"contracts/stakingPool.algo.ts:367","pc":[1215,1216]},{"teal":1382,"source":"contracts/stakingPool.algo.ts:367","pc":[1217]},{"teal":1383,"source":"contracts/stakingPool.algo.ts:367","pc":[1218,1219]},{"teal":1384,"source":"contracts/stakingPool.algo.ts:367","pc":[1220]},{"teal":1385,"source":"contracts/stakingPool.algo.ts:367","pc":[1221,1222]},{"teal":1388,"source":"contracts/stakingPool.algo.ts:360","pc":[1223]},{"teal":1389,"source":"contracts/stakingPool.algo.ts:360","pc":[1224,1225]},{"teal":1392,"source":"contracts/stakingPool.algo.ts:360","pc":[1226]},{"teal":1396,"source":"contracts/stakingPool.algo.ts:370","pc":[1227]},{"teal":1403,"source":"contracts/stakingPool.algo.ts:283","pc":[1228,1229]},{"teal":1404,"source":"contracts/stakingPool.algo.ts:283","pc":[1230]},{"teal":1405,"source":"contracts/stakingPool.algo.ts:283","pc":[1231]},{"teal":1406,"source":"contracts/stakingPool.algo.ts:283","pc":[1232,1233]},{"teal":1407,"source":"contracts/stakingPool.algo.ts:283","pc":[1234,1235,1236]},{"teal":1411,"source":"contracts/stakingPool.algo.ts:373","errorMessage":"account not found","pc":[1237]},{"teal":1412,"source":"contracts/stakingPool.algo.ts:271","pc":[1238]},{"teal":1417,"source":"contracts/stakingPool.algo.ts:381","pc":[1239,1240,1241]},{"teal":1418,"source":"contracts/stakingPool.algo.ts:381","pc":[1242]},{"teal":1419,"source":"contracts/stakingPool.algo.ts:381","pc":[1243]},{"teal":1427,"source":"contracts/stakingPool.algo.ts:381","pc":[1244,1245,1246]},{"teal":1430,"source":"contracts/stakingPool.algo.ts:381","pc":[1247]},{"teal":1431,"source":"contracts/stakingPool.algo.ts:381","pc":[1248,1249]},{"teal":1435,"source":"contracts/stakingPool.algo.ts:385","pc":[1250,1251]},{"teal":1436,"source":"contracts/stakingPool.algo.ts:385","pc":[1252,1253]},{"teal":1440,"source":"contracts/stakingPool.algo.ts:387","pc":[1254]},{"teal":1441,"source":"contracts/stakingPool.algo.ts:387","pc":[1255,1256]},{"teal":1446,"source":"contracts/stakingPool.algo.ts:387","pc":[1257,1258]},{"teal":1447,"source":"contracts/stakingPool.algo.ts:387","pc":[1259,1260]},{"teal":1448,"source":"contracts/stakingPool.algo.ts:387","pc":[1261]},{"teal":1449,"source":"contracts/stakingPool.algo.ts:387","pc":[1262,1263,1264]},{"teal":1454,"source":"contracts/stakingPool.algo.ts:388","pc":[1265,1266]},{"teal":1455,"source":"contracts/stakingPool.algo.ts:388","pc":[1267,1268]},{"teal":1456,"source":"contracts/stakingPool.algo.ts:388","pc":[1269]},{"teal":1457,"source":"contracts/stakingPool.algo.ts:388","pc":[1270,1271,1272]},{"teal":1462,"source":"contracts/stakingPool.algo.ts:389","pc":[1273]},{"teal":1463,"source":"contracts/stakingPool.algo.ts:389","pc":[1274]},{"teal":1464,"source":"contracts/stakingPool.algo.ts:389","pc":[1275,1276]},{"teal":1465,"source":"contracts/stakingPool.algo.ts:389","pc":[1277]},{"teal":1466,"source":"contracts/stakingPool.algo.ts:389","pc":[1278,1279]},{"teal":1467,"source":"contracts/stakingPool.algo.ts:389","pc":[1280,1281]},{"teal":1468,"source":"contracts/stakingPool.algo.ts:389","pc":[1282]},{"teal":1469,"source":"contracts/stakingPool.algo.ts:389","pc":[1283,1284]},{"teal":1470,"source":"contracts/stakingPool.algo.ts:389","pc":[1285,1286]},{"teal":1471,"source":"contracts/stakingPool.algo.ts:389","pc":[1287,1288]},{"teal":1472,"source":"contracts/stakingPool.algo.ts:389","pc":[1289,1290]},{"teal":1473,"source":"contracts/stakingPool.algo.ts:389","pc":[1291]},{"teal":1478,"source":"contracts/stakingPool.algo.ts:391","pc":[1292,1293]},{"teal":1479,"source":"contracts/stakingPool.algo.ts:391","pc":[1294]},{"teal":1480,"source":"contracts/stakingPool.algo.ts:391","pc":[1295]},{"teal":1481,"source":"contracts/stakingPool.algo.ts:391","pc":[1296]},{"teal":1482,"source":"contracts/stakingPool.algo.ts:391","pc":[1297]},{"teal":1483,"source":"contracts/stakingPool.algo.ts:391","pc":[1298,1299]},{"teal":1484,"source":"contracts/stakingPool.algo.ts:391","pc":[1300]},{"teal":1485,"source":"contracts/stakingPool.algo.ts:391","pc":[1301,1302]},{"teal":1490,"source":"contracts/stakingPool.algo.ts:392","pc":[1303,1304]},{"teal":1491,"source":"contracts/stakingPool.algo.ts:392","pc":[1305,1306,1307]},{"teal":1492,"source":"contracts/stakingPool.algo.ts:392","pc":[1308,1309]},{"teal":1493,"source":"contracts/stakingPool.algo.ts:392","pc":[1310]},{"teal":1494,"source":"contracts/stakingPool.algo.ts:392","pc":[1311,1312,1313]},{"teal":1500,"source":"contracts/stakingPool.algo.ts:393","pc":[1314,1315]},{"teal":1501,"source":"contracts/stakingPool.algo.ts:393","pc":[1316,1317,1318]},{"teal":1502,"source":"contracts/stakingPool.algo.ts:393","pc":[1319]},{"teal":1503,"source":"contracts/stakingPool.algo.ts:393","pc":[1320]},{"teal":1504,"source":"contracts/stakingPool.algo.ts:393","pc":[1321]},{"teal":1505,"source":"contracts/stakingPool.algo.ts:393","pc":[1322,1323,1324]},{"teal":1510,"source":"contracts/stakingPool.algo.ts:394","pc":[1325]},{"teal":1515,"source":"contracts/stakingPool.algo.ts:396","pc":[1326]},{"teal":1516,"source":"contracts/stakingPool.algo.ts:396","pc":[1327,1328]},{"teal":1521,"source":"contracts/stakingPool.algo.ts:398","pc":[1329,1330]},{"teal":1522,"source":"contracts/stakingPool.algo.ts:398","pc":[1331]},{"teal":1523,"source":"contracts/stakingPool.algo.ts:398","pc":[1332]},{"teal":1524,"source":"contracts/stakingPool.algo.ts:398","pc":[1333]},{"teal":1525,"source":"contracts/stakingPool.algo.ts:398","pc":[1334,1335,1336]},{"teal":1533,"source":"contracts/stakingPool.algo.ts:399","pc":[1337]},{"teal":1534,"source":"contracts/stakingPool.algo.ts:399","pc":[1338]},{"teal":1535,"source":"contracts/stakingPool.algo.ts:399","pc":[1339,1340]},{"teal":1536,"source":"contracts/stakingPool.algo.ts:399","pc":[1341,1342]},{"teal":1537,"source":"contracts/stakingPool.algo.ts:399","pc":[1343,1344]},{"teal":1541,"source":"contracts/stakingPool.algo.ts:400","pc":[1345]},{"teal":1542,"source":"contracts/stakingPool.algo.ts:400","pc":[1346]},{"teal":1543,"source":"contracts/stakingPool.algo.ts:400","pc":[1347,1348]},{"teal":1547,"source":"contracts/stakingPool.algo.ts:401","pc":[1349]},{"teal":1548,"source":"contracts/stakingPool.algo.ts:401","pc":[1350]},{"teal":1549,"source":"contracts/stakingPool.algo.ts:401","pc":[1351]},{"teal":1550,"source":"contracts/stakingPool.algo.ts:401","pc":[1352,1353]},{"teal":1553,"source":"contracts/stakingPool.algo.ts:399","pc":[1354]},{"teal":1554,"source":"contracts/stakingPool.algo.ts:399","pc":[1355,1356]},{"teal":1557,"source":"contracts/stakingPool.algo.ts:399","pc":[1357]},{"teal":1558,"source":"contracts/stakingPool.algo.ts:399","pc":[1358,1359]},{"teal":1559,"source":"contracts/stakingPool.algo.ts:399","pc":[1360]},{"teal":1560,"source":"contracts/stakingPool.algo.ts:399","pc":[1361]},{"teal":1561,"source":"contracts/stakingPool.algo.ts:399","pc":[1362,1363]},{"teal":1562,"source":"contracts/stakingPool.algo.ts:399","pc":[1364,1365,1366]},{"teal":1563,"source":"contracts/stakingPool.algo.ts:399","pc":[1367,1368]},{"teal":1571,"source":"contracts/stakingPool.algo.ts:406","pc":[1369]},{"teal":1572,"source":"contracts/stakingPool.algo.ts:406","pc":[1370,1371]},{"teal":1573,"source":"contracts/stakingPool.algo.ts:406","pc":[1372,1373]},{"teal":1577,"source":"contracts/stakingPool.algo.ts:407","pc":[1374,1375]},{"teal":1578,"source":"contracts/stakingPool.algo.ts:407","pc":[1376,1377,1378]},{"teal":1579,"source":"contracts/stakingPool.algo.ts:407","pc":[1379]},{"teal":1580,"source":"contracts/stakingPool.algo.ts:407","pc":[1380,1381]},{"teal":1584,"source":"contracts/stakingPool.algo.ts:408","pc":[1382,1383]},{"teal":1585,"source":"contracts/stakingPool.algo.ts:408","pc":[1384,1385]},{"teal":1589,"source":"contracts/stakingPool.algo.ts:409","pc":[1386,1387]},{"teal":1590,"source":"contracts/stakingPool.algo.ts:409","pc":[1388,1389,1390]},{"teal":1591,"source":"contracts/stakingPool.algo.ts:409","pc":[1391]},{"teal":1592,"source":"contracts/stakingPool.algo.ts:409","pc":[1392,1393]},{"teal":1595,"source":"contracts/stakingPool.algo.ts:406","pc":[1394]},{"teal":1596,"source":"contracts/stakingPool.algo.ts:406","pc":[1395,1396]},{"teal":1599,"source":"contracts/stakingPool.algo.ts:406","pc":[1397]},{"teal":1603,"source":"contracts/stakingPool.algo.ts:411","pc":[1398,1399]},{"teal":1604,"source":"contracts/stakingPool.algo.ts:411","pc":[1400,1401,1402]},{"teal":1605,"source":"contracts/stakingPool.algo.ts:411","pc":[1403]},{"teal":1606,"source":"contracts/stakingPool.algo.ts:411","pc":[1404,1405]},{"teal":1610,"source":"contracts/stakingPool.algo.ts:412","pc":[1406,1407]},{"teal":1611,"source":"contracts/stakingPool.algo.ts:412","pc":[1408,1409]},{"teal":1612,"source":"contracts/stakingPool.algo.ts:412","pc":[1410,1411]},{"teal":1613,"source":"contracts/stakingPool.algo.ts:412","pc":[1412,1413]},{"teal":1614,"source":"contracts/stakingPool.algo.ts:398","pc":[1414,1415,1416]},{"teal":1619,"source":"contracts/stakingPool.algo.ts:417","pc":[1417,1418]},{"teal":1620,"source":"contracts/stakingPool.algo.ts:417","pc":[1419,1420,1421]},{"teal":1621,"source":"contracts/stakingPool.algo.ts:417","pc":[1422]},{"teal":1622,"source":"contracts/stakingPool.algo.ts:417","pc":[1423,1424]},{"teal":1626,"source":"contracts/stakingPool.algo.ts:418","pc":[1425,1426]},{"teal":1627,"source":"contracts/stakingPool.algo.ts:418","pc":[1427,1428]},{"teal":1628,"source":"contracts/stakingPool.algo.ts:418","pc":[1429,1430]},{"teal":1629,"source":"contracts/stakingPool.algo.ts:418","pc":[1431,1432]},{"teal":1634,"source":"contracts/stakingPool.algo.ts:422","pc":[1433,1434]},{"teal":1635,"source":"contracts/stakingPool.algo.ts:422","pc":[1435]},{"teal":1636,"source":"contracts/stakingPool.algo.ts:422","pc":[1436]},{"teal":1637,"source":"contracts/stakingPool.algo.ts:422","pc":[1437,1438]},{"teal":1638,"source":"contracts/stakingPool.algo.ts:422","pc":[1439]},{"teal":1639,"source":"contracts/stakingPool.algo.ts:422","pc":[1440,1441]},{"teal":1640,"source":"contracts/stakingPool.algo.ts:422","pc":[1442]},{"teal":1653,"source":"contracts/stakingPool.algo.ts:427","pc":[1443]},{"teal":1654,"source":"contracts/stakingPool.algo.ts:427","pc":[1444]},{"teal":1655,"source":"contracts/stakingPool.algo.ts:427","pc":[1445,1446]},{"teal":1656,"source":"contracts/stakingPool.algo.ts:427","pc":[1447,1448]},{"teal":1657,"source":"contracts/stakingPool.algo.ts:427","pc":[1449,1450]},{"teal":1661,"source":"contracts/stakingPool.algo.ts:428","pc":[1451]},{"teal":1662,"source":"contracts/stakingPool.algo.ts:428","pc":[1452]},{"teal":1663,"source":"contracts/stakingPool.algo.ts:428","pc":[1453,1454]},{"teal":1673,"source":"contracts/stakingPool.algo.ts:430","pc":[1455]},{"teal":1674,"source":"contracts/stakingPool.algo.ts:430","pc":[1456]},{"teal":1675,"source":"contracts/stakingPool.algo.ts:430","pc":[1457]},{"teal":1676,"source":"contracts/stakingPool.algo.ts:430","pc":[1458,1459]},{"teal":1677,"source":"contracts/stakingPool.algo.ts:430","pc":[1460]},{"teal":1678,"source":"contracts/stakingPool.algo.ts:430","pc":[1461]},{"teal":1679,"source":"contracts/stakingPool.algo.ts:430","pc":[1462]},{"teal":1680,"source":"contracts/stakingPool.algo.ts:430","pc":[1463,1464,1465]},{"teal":1681,"source":"contracts/stakingPool.algo.ts:430","pc":[1466]},{"teal":1682,"source":"contracts/stakingPool.algo.ts:430","pc":[1467]},{"teal":1683,"source":"contracts/stakingPool.algo.ts:430","pc":[1468,1469]},{"teal":1684,"source":"contracts/stakingPool.algo.ts:431","pc":[1470,1471]},{"teal":1685,"source":"contracts/stakingPool.algo.ts:431","pc":[1472,1473]},{"teal":1686,"source":"contracts/stakingPool.algo.ts:432","pc":[1474,1475]},{"teal":1687,"source":"contracts/stakingPool.algo.ts:432","pc":[1476,1477]},{"teal":1688,"source":"contracts/stakingPool.algo.ts:433","pc":[1478,1479]},{"teal":1689,"source":"contracts/stakingPool.algo.ts:433","pc":[1480]},{"teal":1690,"source":"contracts/stakingPool.algo.ts:433","pc":[1481,1482]},{"teal":1691,"source":"contracts/stakingPool.algo.ts:434","pc":[1483]},{"teal":1692,"source":"contracts/stakingPool.algo.ts:434","pc":[1484,1485]},{"teal":1693,"source":"contracts/stakingPool.algo.ts:434","pc":[1486]},{"teal":1694,"source":"contracts/stakingPool.algo.ts:434","pc":[1487,1488]},{"teal":1695,"source":"contracts/stakingPool.algo.ts:434","pc":[1489]},{"teal":1696,"source":"contracts/stakingPool.algo.ts:434","pc":[1490,1491]},{"teal":1699,"source":"contracts/stakingPool.algo.ts:427","pc":[1492]},{"teal":1700,"source":"contracts/stakingPool.algo.ts:427","pc":[1493,1494]},{"teal":1703,"source":"contracts/stakingPool.algo.ts:427","pc":[1495]},{"teal":1707,"source":"contracts/stakingPool.algo.ts:437","pc":[1496]},{"teal":1714,"source":"contracts/stakingPool.algo.ts:387","pc":[1497,1498]},{"teal":1715,"source":"contracts/stakingPool.algo.ts:387","pc":[1499]},{"teal":1716,"source":"contracts/stakingPool.algo.ts:387","pc":[1500]},{"teal":1717,"source":"contracts/stakingPool.algo.ts:387","pc":[1501,1502]},{"teal":1718,"source":"contracts/stakingPool.algo.ts:387","pc":[1503,1504,1505]},{"teal":1722,"source":"contracts/stakingPool.algo.ts:440","errorMessage":"account not found","pc":[1506]},{"teal":1723,"source":"contracts/stakingPool.algo.ts:381","pc":[1507]},{"teal":1728,"source":"contracts/stakingPool.algo.ts:450","pc":[1508,1509]},{"teal":1731,"source":"contracts/stakingPool.algo.ts:451","pc":[1510,1511,1512]},{"teal":1732,"source":"contracts/stakingPool.algo.ts:451","pc":[1513]},{"teal":1733,"source":"contracts/stakingPool.algo.ts:451","pc":[1514]},{"teal":1734,"source":"contracts/stakingPool.algo.ts:451","pc":[1515,1516]},{"teal":1735,"source":"contracts/stakingPool.algo.ts:451","pc":[1517]},{"teal":1738,"source":"contracts/stakingPool.algo.ts:451","errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1518]},{"teal":1741,"source":"contracts/stakingPool.algo.ts:450","pc":[1519,1520,1521]},{"teal":1742,"source":"contracts/stakingPool.algo.ts:450","pc":[1522]},{"teal":1743,"source":"contracts/stakingPool.algo.ts:450","pc":[1523]},{"teal":1744,"source":"contracts/stakingPool.algo.ts:450","pc":[1524]},{"teal":1745,"source":"contracts/stakingPool.algo.ts:450","pc":[1525]},{"teal":1755,"source":"contracts/stakingPool.algo.ts:450","pc":[1526,1527,1528]},{"teal":1758,"source":"contracts/stakingPool.algo.ts:450","pc":[1529]},{"teal":1762,"source":"contracts/stakingPool.algo.ts:452","pc":[1530]},{"teal":1763,"source":"contracts/stakingPool.algo.ts:452","pc":[1531,1532]},{"teal":1768,"source":"contracts/stakingPool.algo.ts:452","pc":[1533,1534]},{"teal":1769,"source":"contracts/stakingPool.algo.ts:452","pc":[1535,1536]},{"teal":1770,"source":"contracts/stakingPool.algo.ts:452","pc":[1537]},{"teal":1771,"source":"contracts/stakingPool.algo.ts:452","pc":[1538,1539,1540]},{"teal":1776,"source":"contracts/stakingPool.algo.ts:453","pc":[1541,1542]},{"teal":1777,"source":"contracts/stakingPool.algo.ts:453","pc":[1543,1544]},{"teal":1778,"source":"contracts/stakingPool.algo.ts:453","pc":[1545]},{"teal":1779,"source":"contracts/stakingPool.algo.ts:453","pc":[1546,1547,1548]},{"teal":1784,"source":"contracts/stakingPool.algo.ts:454","pc":[1549]},{"teal":1785,"source":"contracts/stakingPool.algo.ts:454","pc":[1550]},{"teal":1786,"source":"contracts/stakingPool.algo.ts:454","pc":[1551,1552]},{"teal":1787,"source":"contracts/stakingPool.algo.ts:454","pc":[1553]},{"teal":1788,"source":"contracts/stakingPool.algo.ts:454","pc":[1554,1555]},{"teal":1789,"source":"contracts/stakingPool.algo.ts:454","pc":[1556,1557]},{"teal":1790,"source":"contracts/stakingPool.algo.ts:454","pc":[1558]},{"teal":1791,"source":"contracts/stakingPool.algo.ts:454","pc":[1559,1560]},{"teal":1792,"source":"contracts/stakingPool.algo.ts:454","pc":[1561,1562]},{"teal":1793,"source":"contracts/stakingPool.algo.ts:454","pc":[1563,1564]},{"teal":1794,"source":"contracts/stakingPool.algo.ts:454","pc":[1565,1566]},{"teal":1795,"source":"contracts/stakingPool.algo.ts:454","pc":[1567]},{"teal":1801,"source":"contracts/stakingPool.algo.ts:456","pc":[1568,1569]},{"teal":1802,"source":"contracts/stakingPool.algo.ts:456","pc":[1570]},{"teal":1803,"source":"contracts/stakingPool.algo.ts:456","pc":[1571]},{"teal":1804,"source":"contracts/stakingPool.algo.ts:456","pc":[1572]},{"teal":1805,"source":"contracts/stakingPool.algo.ts:456","pc":[1573]},{"teal":1806,"source":"contracts/stakingPool.algo.ts:456","pc":[1574,1575]},{"teal":1807,"source":"contracts/stakingPool.algo.ts:456","pc":[1576]},{"teal":1808,"source":"contracts/stakingPool.algo.ts:456","pc":[1577,1578]},{"teal":1809,"source":"contracts/stakingPool.algo.ts:456","pc":[1579]},{"teal":1810,"source":"contracts/stakingPool.algo.ts:456","pc":[1580,1581]},{"teal":1811,"source":"contracts/stakingPool.algo.ts:456","pc":[1582]},{"teal":1812,"source":"contracts/stakingPool.algo.ts:456","pc":[1583,1584,1585]},{"teal":1817,"source":"contracts/stakingPool.algo.ts:457","pc":[1586,1587]},{"teal":1818,"source":"contracts/stakingPool.algo.ts:457","pc":[1588]},{"teal":1819,"source":"contracts/stakingPool.algo.ts:457","pc":[1589]},{"teal":1820,"source":"contracts/stakingPool.algo.ts:457","pc":[1590]},{"teal":1821,"source":"contracts/stakingPool.algo.ts:457","pc":[1591]},{"teal":1822,"source":"contracts/stakingPool.algo.ts:457","pc":[1592,1593]},{"teal":1823,"source":"contracts/stakingPool.algo.ts:457","pc":[1594]},{"teal":1824,"source":"contracts/stakingPool.algo.ts:457","pc":[1595,1596,1597]},{"teal":1831,"source":"contracts/stakingPool.algo.ts:452","pc":[1598,1599]},{"teal":1832,"source":"contracts/stakingPool.algo.ts:452","pc":[1600]},{"teal":1833,"source":"contracts/stakingPool.algo.ts:452","pc":[1601]},{"teal":1834,"source":"contracts/stakingPool.algo.ts:452","pc":[1602,1603]},{"teal":1835,"source":"contracts/stakingPool.algo.ts:452","pc":[1604,1605,1606]},{"teal":1839,"source":"contracts/stakingPool.algo.ts:460","errorMessage":"account not found","pc":[1607]},{"teal":1843,"source":"contracts/stakingPool.algo.ts:450","pc":[1608,1609]},{"teal":1844,"source":"contracts/stakingPool.algo.ts:450","pc":[1610]},{"teal":1849,"source":"contracts/stakingPool.algo.ts:473","pc":[1611,1612,1613]},{"teal":1850,"source":"contracts/stakingPool.algo.ts:473","pc":[1614]},{"teal":1853,"source":"contracts/stakingPool.algo.ts:473","pc":[1615,1616,1617]},{"teal":1854,"source":"contracts/stakingPool.algo.ts:473","pc":[1618]},{"teal":1857,"source":"contracts/stakingPool.algo.ts:473","pc":[1619,1620,1621]},{"teal":1858,"source":"contracts/stakingPool.algo.ts:473","pc":[1622]},{"teal":1859,"source":"contracts/stakingPool.algo.ts:473","pc":[1623]},{"teal":1860,"source":"contracts/stakingPool.algo.ts:473","pc":[1624,1625]},{"teal":1861,"source":"contracts/stakingPool.algo.ts:473","pc":[1626]},{"teal":1864,"source":"contracts/stakingPool.algo.ts:473","errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1627]},{"teal":1867,"source":"contracts/stakingPool.algo.ts:473","pc":[1628,1629,1630]},{"teal":1868,"source":"contracts/stakingPool.algo.ts:473","pc":[1631]},{"teal":1869,"source":"contracts/stakingPool.algo.ts:473","pc":[1632]},{"teal":1882,"source":"contracts/stakingPool.algo.ts:473","pc":[1633,1634,1635]},{"teal":1889,"source":"contracts/stakingPool.algo.ts:476","pc":[1636,1637]},{"teal":1890,"source":"contracts/stakingPool.algo.ts:476","pc":[1638]},{"teal":1891,"source":"contracts/stakingPool.algo.ts:476","pc":[1639]},{"teal":1892,"source":"contracts/stakingPool.algo.ts:476","pc":[1640,1641]},{"teal":1893,"source":"contracts/stakingPool.algo.ts:476","pc":[1642]},{"teal":1894,"source":"contracts/stakingPool.algo.ts:476","pc":[1643]},{"teal":1897,"source":"contracts/stakingPool.algo.ts:475","errorMessage":"this can only be called via the validator contract","pc":[1644]},{"teal":1901,"source":"contracts/stakingPool.algo.ts:479","pc":[1645,1646]},{"teal":1902,"source":"contracts/stakingPool.algo.ts:479","pc":[1647]},{"teal":1903,"source":"contracts/stakingPool.algo.ts:479","pc":[1648]},{"teal":1904,"source":"contracts/stakingPool.algo.ts:479","pc":[1649]},{"teal":1907,"source":"contracts/stakingPool.algo.ts:479","errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1650]},{"teal":1911,"source":"contracts/stakingPool.algo.ts:480","pc":[1651,1652]},{"teal":1912,"source":"contracts/stakingPool.algo.ts:480","pc":[1653]},{"teal":1913,"source":"contracts/stakingPool.algo.ts:480","pc":[1654]},{"teal":1916,"source":"contracts/stakingPool.algo.ts:480","errorMessage":"can only claim token rewards from validator that has them","pc":[1655]},{"teal":1924,"source":"contracts/stakingPool.algo.ts:483","pc":[1656]},{"teal":1925,"source":"contracts/stakingPool.algo.ts:483","pc":[1657,1658]},{"teal":1926,"source":"contracts/stakingPool.algo.ts:483","pc":[1659,1660]},{"teal":1930,"source":"contracts/stakingPool.algo.ts:484","pc":[1661,1662]},{"teal":1931,"source":"contracts/stakingPool.algo.ts:484","pc":[1663,1664]},{"teal":1935,"source":"contracts/stakingPool.algo.ts:485","pc":[1665,1666]},{"teal":1936,"source":"contracts/stakingPool.algo.ts:485","pc":[1667,1668]},{"teal":1940,"source":"contracts/stakingPool.algo.ts:486","pc":[1669,1670]},{"teal":1941,"source":"contracts/stakingPool.algo.ts:486","pc":[1671,1672]},{"teal":1944,"source":"contracts/stakingPool.algo.ts:483","pc":[1673]},{"teal":1945,"source":"contracts/stakingPool.algo.ts:483","pc":[1674,1675]},{"teal":1948,"source":"contracts/stakingPool.algo.ts:483","pc":[1676]},{"teal":1949,"source":"contracts/stakingPool.algo.ts:473","pc":[1677]},{"teal":1954,"source":"contracts/stakingPool.algo.ts:499","pc":[1678,1679,1680]},{"teal":1955,"source":"contracts/stakingPool.algo.ts:499","pc":[1681,1682,1683]},{"teal":1958,"source":"contracts/stakingPool.algo.ts:499","pc":[1684,1685,1686]},{"teal":1959,"source":"contracts/stakingPool.algo.ts:499","pc":[1687]},{"teal":1960,"source":"contracts/stakingPool.algo.ts:499","pc":[1688]},{"teal":1972,"source":"contracts/stakingPool.algo.ts:499","pc":[1689,1690,1691]},{"teal":1976,"source":"contracts/stakingPool.algo.ts:500","pc":[1692,1693,1694]},{"teal":1979,"source":"contracts/stakingPool.algo.ts:500","errorMessage":"can only be called by owner or manager of validator","pc":[1695]},{"teal":1983,"source":"contracts/stakingPool.algo.ts:501","pc":[1696,1697,1698,1699,1700,1701,1702,1703,1704,1705]},{"teal":1984,"source":"contracts/stakingPool.algo.ts:501","pc":[1706,1707]},{"teal":1985,"source":"contracts/stakingPool.algo.ts:501","pc":[1708]},{"teal":1986,"source":"contracts/stakingPool.algo.ts:499","pc":[1709]},{"teal":1991,"source":"contracts/stakingPool.algo.ts:512","pc":[1710,1711,1712]},{"teal":1992,"source":"contracts/stakingPool.algo.ts:512","pc":[1713]},{"teal":1993,"source":"contracts/stakingPool.algo.ts:512","pc":[1714]},{"teal":2004,"source":"contracts/stakingPool.algo.ts:512","pc":[1715,1716,1717]},{"teal":2007,"source":"contracts/stakingPool.algo.ts:512","pc":[1718]},{"teal":2008,"source":"contracts/stakingPool.algo.ts:512","pc":[1719,1720]},{"teal":2015,"source":"contracts/stakingPool.algo.ts:514","pc":[1721]},{"teal":2016,"source":"contracts/stakingPool.algo.ts:514","pc":[1722]},{"teal":2017,"source":"contracts/stakingPool.algo.ts:514","pc":[1723,1724]},{"teal":2018,"source":"contracts/stakingPool.algo.ts:514","pc":[1725,1726]},{"teal":2019,"source":"contracts/stakingPool.algo.ts:514","pc":[1727,1728]},{"teal":2023,"source":"contracts/stakingPool.algo.ts:515","pc":[1729]},{"teal":2024,"source":"contracts/stakingPool.algo.ts:515","pc":[1730]},{"teal":2025,"source":"contracts/stakingPool.algo.ts:515","pc":[1731,1732]},{"teal":2029,"source":"contracts/stakingPool.algo.ts:516","pc":[1733]},{"teal":2030,"source":"contracts/stakingPool.algo.ts:516","pc":[1734]},{"teal":2031,"source":"contracts/stakingPool.algo.ts:516","pc":[1735]},{"teal":2032,"source":"contracts/stakingPool.algo.ts:516","pc":[1736,1737]},{"teal":2035,"source":"contracts/stakingPool.algo.ts:514","pc":[1738]},{"teal":2036,"source":"contracts/stakingPool.algo.ts:514","pc":[1739,1740]},{"teal":2039,"source":"contracts/stakingPool.algo.ts:514","pc":[1741]},{"teal":2040,"source":"contracts/stakingPool.algo.ts:514","pc":[1742,1743]},{"teal":2041,"source":"contracts/stakingPool.algo.ts:514","pc":[1744]},{"teal":2042,"source":"contracts/stakingPool.algo.ts:514","pc":[1745]},{"teal":2043,"source":"contracts/stakingPool.algo.ts:514","pc":[1746,1747]},{"teal":2044,"source":"contracts/stakingPool.algo.ts:514","pc":[1748,1749,1750]},{"teal":2045,"source":"contracts/stakingPool.algo.ts:514","pc":[1751,1752]},{"teal":2049,"source":"contracts/stakingPool.algo.ts:523","pc":[1753,1754]},{"teal":2050,"source":"contracts/stakingPool.algo.ts:523","pc":[1755,1756,1757]},{"teal":2051,"source":"contracts/stakingPool.algo.ts:523","pc":[1758]},{"teal":2052,"source":"contracts/stakingPool.algo.ts:523","pc":[1759,1760]},{"teal":2056,"source":"contracts/stakingPool.algo.ts:524","pc":[1761,1762]},{"teal":2057,"source":"contracts/stakingPool.algo.ts:524","pc":[1763,1764]},{"teal":2061,"source":"contracts/stakingPool.algo.ts:525","pc":[1765,1766]},{"teal":2062,"source":"contracts/stakingPool.algo.ts:525","pc":[1767,1768]},{"teal":2063,"source":"contracts/stakingPool.algo.ts:525","pc":[1769,1770]},{"teal":2064,"source":"contracts/stakingPool.algo.ts:525","pc":[1771]},{"teal":2065,"source":"contracts/stakingPool.algo.ts:525","pc":[1772]},{"teal":2066,"source":"contracts/stakingPool.algo.ts:525","pc":[1773,1774]},{"teal":2070,"source":"contracts/stakingPool.algo.ts:528","pc":[1775,1776]},{"teal":2071,"source":"contracts/stakingPool.algo.ts:528","pc":[1777]},{"teal":2072,"source":"contracts/stakingPool.algo.ts:528","pc":[1778,1779]},{"teal":2073,"source":"contracts/stakingPool.algo.ts:528","pc":[1780]},{"teal":2074,"source":"contracts/stakingPool.algo.ts:528","pc":[1781,1782]},{"teal":2075,"source":"contracts/stakingPool.algo.ts:528","pc":[1783]},{"teal":2076,"source":"contracts/stakingPool.algo.ts:528","pc":[1784]},{"teal":2077,"source":"contracts/stakingPool.algo.ts:528","pc":[1785,1786]},{"teal":2081,"source":"contracts/stakingPool.algo.ts:530","pc":[1787,1788]},{"teal":2082,"source":"contracts/stakingPool.algo.ts:530","pc":[1789,1790]},{"teal":2083,"source":"contracts/stakingPool.algo.ts:530","pc":[1791]},{"teal":2086,"source":"contracts/stakingPool.algo.ts:530","errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[1792]},{"teal":2090,"source":"contracts/stakingPool.algo.ts:532","pc":[1793,1794,1795]},{"teal":2094,"source":"contracts/stakingPool.algo.ts:535","pc":[1796,1797]},{"teal":2095,"source":"contracts/stakingPool.algo.ts:535","pc":[1798,1799]},{"teal":2096,"source":"contracts/stakingPool.algo.ts:535","pc":[1800]},{"teal":2100,"source":"contracts/stakingPool.algo.ts:536","pc":[1801,1802]},{"teal":2101,"source":"contracts/stakingPool.algo.ts:536","pc":[1803]},{"teal":2102,"source":"contracts/stakingPool.algo.ts:536","pc":[1804]},{"teal":2103,"source":"contracts/stakingPool.algo.ts:536","pc":[1805]},{"teal":2104,"source":"contracts/stakingPool.algo.ts:536","pc":[1806,1807]},{"teal":2105,"source":"contracts/stakingPool.algo.ts:536","pc":[1808]},{"teal":2106,"source":"contracts/stakingPool.algo.ts:536","pc":[1809]},{"teal":2110,"source":"contracts/stakingPool.algo.ts:541","pc":[1810,1811]},{"teal":2111,"source":"contracts/stakingPool.algo.ts:541","pc":[1812,1813,1814]},{"teal":2112,"source":"contracts/stakingPool.algo.ts:541","pc":[1815]},{"teal":2113,"source":"contracts/stakingPool.algo.ts:541","pc":[1816]},{"teal":2114,"source":"contracts/stakingPool.algo.ts:541","pc":[1817]},{"teal":2115,"source":"contracts/stakingPool.algo.ts:541","pc":[1818,1819]},{"teal":2119,"source":"contracts/stakingPool.algo.ts:542","pc":[1820,1821,1822]},{"teal":2120,"source":"contracts/stakingPool.algo.ts:542","pc":[1823,1824]},{"teal":2124,"source":"contracts/stakingPool.algo.ts:543","pc":[1825,1826]},{"teal":2125,"source":"contracts/stakingPool.algo.ts:543","pc":[1827,1828]},{"teal":2130,"source":"contracts/stakingPool.algo.ts:548","pc":[1829,1830]},{"teal":2131,"source":"contracts/stakingPool.algo.ts:548","pc":[1831,1832,1833]},{"teal":2137,"source":"contracts/stakingPool.algo.ts:549","pc":[1834,1835]},{"teal":2138,"source":"contracts/stakingPool.algo.ts:549","pc":[1836]},{"teal":2139,"source":"contracts/stakingPool.algo.ts:549","pc":[1837]},{"teal":2140,"source":"contracts/stakingPool.algo.ts:549","pc":[1838]},{"teal":2141,"source":"contracts/stakingPool.algo.ts:549","pc":[1839,1840,1841]},{"teal":2149,"source":"contracts/stakingPool.algo.ts:551","pc":[1842]},{"teal":2150,"source":"contracts/stakingPool.algo.ts:551","pc":[1843]},{"teal":2151,"source":"contracts/stakingPool.algo.ts:551","pc":[1844,1845]},{"teal":2152,"source":"contracts/stakingPool.algo.ts:551","pc":[1846,1847]},{"teal":2153,"source":"contracts/stakingPool.algo.ts:551","pc":[1848,1849]},{"teal":2157,"source":"contracts/stakingPool.algo.ts:552","pc":[1850]},{"teal":2158,"source":"contracts/stakingPool.algo.ts:552","pc":[1851]},{"teal":2159,"source":"contracts/stakingPool.algo.ts:552","pc":[1852,1853]},{"teal":2163,"source":"contracts/stakingPool.algo.ts:553","pc":[1854]},{"teal":2164,"source":"contracts/stakingPool.algo.ts:553","pc":[1855]},{"teal":2165,"source":"contracts/stakingPool.algo.ts:553","pc":[1856]},{"teal":2166,"source":"contracts/stakingPool.algo.ts:553","pc":[1857,1858]},{"teal":2167,"source":"contracts/stakingPool.algo.ts:553","pc":[1859,1860,1861,1862,1863,1864,1865,1866,1867,1868]},{"teal":2168,"source":"contracts/stakingPool.algo.ts:553","pc":[1869,1870]},{"teal":2171,"source":"contracts/stakingPool.algo.ts:551","pc":[1871]},{"teal":2172,"source":"contracts/stakingPool.algo.ts:551","pc":[1872,1873]},{"teal":2175,"source":"contracts/stakingPool.algo.ts:551","pc":[1874]},{"teal":2176,"source":"contracts/stakingPool.algo.ts:551","pc":[1875,1876]},{"teal":2177,"source":"contracts/stakingPool.algo.ts:551","pc":[1877]},{"teal":2178,"source":"contracts/stakingPool.algo.ts:551","pc":[1878]},{"teal":2179,"source":"contracts/stakingPool.algo.ts:551","pc":[1879,1880]},{"teal":2180,"source":"contracts/stakingPool.algo.ts:551","pc":[1881,1882,1883]},{"teal":2181,"source":"contracts/stakingPool.algo.ts:551","pc":[1884]},{"teal":2182,"source":"contracts/stakingPool.algo.ts:551","pc":[1885,1886]},{"teal":2186,"source":"contracts/stakingPool.algo.ts:555","pc":[1887,1888]},{"teal":2187,"source":"contracts/stakingPool.algo.ts:555","pc":[1889,1890]},{"teal":2188,"source":"contracts/stakingPool.algo.ts:555","pc":[1891]},{"teal":2189,"source":"contracts/stakingPool.algo.ts:555","pc":[1892,1893]},{"teal":2195,"source":"contracts/stakingPool.algo.ts:560","pc":[1894,1895]},{"teal":2196,"source":"contracts/stakingPool.algo.ts:560","pc":[1896]},{"teal":2197,"source":"contracts/stakingPool.algo.ts:560","pc":[1897]},{"teal":2198,"source":"contracts/stakingPool.algo.ts:560","pc":[1898]},{"teal":2199,"source":"contracts/stakingPool.algo.ts:560","pc":[1899,1900,1901]},{"teal":2207,"source":"contracts/stakingPool.algo.ts:561","pc":[1902]},{"teal":2208,"source":"contracts/stakingPool.algo.ts:561","pc":[1903]},{"teal":2209,"source":"contracts/stakingPool.algo.ts:561","pc":[1904,1905]},{"teal":2210,"source":"contracts/stakingPool.algo.ts:561","pc":[1906,1907]},{"teal":2211,"source":"contracts/stakingPool.algo.ts:561","pc":[1908,1909]},{"teal":2215,"source":"contracts/stakingPool.algo.ts:562","pc":[1910]},{"teal":2216,"source":"contracts/stakingPool.algo.ts:562","pc":[1911]},{"teal":2217,"source":"contracts/stakingPool.algo.ts:562","pc":[1912,1913]},{"teal":2221,"source":"contracts/stakingPool.algo.ts:563","pc":[1914]},{"teal":2222,"source":"contracts/stakingPool.algo.ts:563","pc":[1915]},{"teal":2223,"source":"contracts/stakingPool.algo.ts:563","pc":[1916]},{"teal":2224,"source":"contracts/stakingPool.algo.ts:563","pc":[1917,1918]},{"teal":2227,"source":"contracts/stakingPool.algo.ts:561","pc":[1919]},{"teal":2228,"source":"contracts/stakingPool.algo.ts:561","pc":[1920,1921]},{"teal":2231,"source":"contracts/stakingPool.algo.ts:561","pc":[1922]},{"teal":2232,"source":"contracts/stakingPool.algo.ts:561","pc":[1923,1924]},{"teal":2233,"source":"contracts/stakingPool.algo.ts:561","pc":[1925]},{"teal":2234,"source":"contracts/stakingPool.algo.ts:561","pc":[1926]},{"teal":2235,"source":"contracts/stakingPool.algo.ts:561","pc":[1927,1928]},{"teal":2236,"source":"contracts/stakingPool.algo.ts:561","pc":[1929,1930,1931]},{"teal":2237,"source":"contracts/stakingPool.algo.ts:561","pc":[1932,1933]},{"teal":2238,"source":"contracts/stakingPool.algo.ts:560","pc":[1934,1935,1936]},{"teal":2246,"source":"contracts/stakingPool.algo.ts:567","pc":[1937]},{"teal":2247,"source":"contracts/stakingPool.algo.ts:567","pc":[1938]},{"teal":2248,"source":"contracts/stakingPool.algo.ts:567","pc":[1939,1940]},{"teal":2249,"source":"contracts/stakingPool.algo.ts:567","pc":[1941,1942]},{"teal":2250,"source":"contracts/stakingPool.algo.ts:567","pc":[1943,1944]},{"teal":2254,"source":"contracts/stakingPool.algo.ts:568","pc":[1945,1946]},{"teal":2255,"source":"contracts/stakingPool.algo.ts:568","pc":[1947,1948]},{"teal":2259,"source":"contracts/stakingPool.algo.ts:569","pc":[1949]},{"teal":2260,"source":"contracts/stakingPool.algo.ts:569","pc":[1950]},{"teal":2261,"source":"contracts/stakingPool.algo.ts:569","pc":[1951]},{"teal":2262,"source":"contracts/stakingPool.algo.ts:569","pc":[1952,1953]},{"teal":2263,"source":"contracts/stakingPool.algo.ts:569","pc":[1954]},{"teal":2264,"source":"contracts/stakingPool.algo.ts:569","pc":[1955]},{"teal":2265,"source":"contracts/stakingPool.algo.ts:569","pc":[1956]},{"teal":2266,"source":"contracts/stakingPool.algo.ts:569","pc":[1957,1958,1959]},{"teal":2267,"source":"contracts/stakingPool.algo.ts:569","pc":[1960]},{"teal":2268,"source":"contracts/stakingPool.algo.ts:569","pc":[1961]},{"teal":2269,"source":"contracts/stakingPool.algo.ts:569","pc":[1962,1963]},{"teal":2272,"source":"contracts/stakingPool.algo.ts:567","pc":[1964]},{"teal":2273,"source":"contracts/stakingPool.algo.ts:567","pc":[1965,1966]},{"teal":2276,"source":"contracts/stakingPool.algo.ts:567","pc":[1967]},{"teal":2277,"source":"contracts/stakingPool.algo.ts:567","pc":[1968,1969]},{"teal":2278,"source":"contracts/stakingPool.algo.ts:567","pc":[1970]},{"teal":2279,"source":"contracts/stakingPool.algo.ts:567","pc":[1971]},{"teal":2280,"source":"contracts/stakingPool.algo.ts:567","pc":[1972,1973]},{"teal":2281,"source":"contracts/stakingPool.algo.ts:567","pc":[1974,1975,1976]},{"teal":2282,"source":"contracts/stakingPool.algo.ts:567","pc":[1977,1978]},{"teal":2292,"source":"contracts/stakingPool.algo.ts:576","pc":[1979]},{"teal":2293,"source":"contracts/stakingPool.algo.ts:576","pc":[1980]},{"teal":2294,"source":"contracts/stakingPool.algo.ts:576","pc":[1981,1982]},{"teal":2295,"source":"contracts/stakingPool.algo.ts:576","pc":[1983,1984,1985,1986,1987,1988]},{"teal":2296,"source":"contracts/stakingPool.algo.ts:576","pc":[1989,1990]},{"teal":2300,"source":"contracts/stakingPool.algo.ts:577","pc":[1991]},{"teal":2301,"source":"contracts/stakingPool.algo.ts:577","pc":[1992]},{"teal":2302,"source":"contracts/stakingPool.algo.ts:577","pc":[1993,1994]},{"teal":2306,"source":"contracts/stakingPool.algo.ts:578","pc":[1995]},{"teal":2307,"source":"contracts/stakingPool.algo.ts:578","pc":[1996]},{"teal":2308,"source":"contracts/stakingPool.algo.ts:578","pc":[1997]},{"teal":2309,"source":"contracts/stakingPool.algo.ts:578","pc":[1998,1999]},{"teal":2312,"source":"contracts/stakingPool.algo.ts:576","pc":[2000]},{"teal":2313,"source":"contracts/stakingPool.algo.ts:576","pc":[2001,2002]},{"teal":2316,"source":"contracts/stakingPool.algo.ts:576","pc":[2003]},{"teal":2317,"source":"contracts/stakingPool.algo.ts:576","pc":[2004,2005]},{"teal":2318,"source":"contracts/stakingPool.algo.ts:576","pc":[2006]},{"teal":2319,"source":"contracts/stakingPool.algo.ts:576","pc":[2007]},{"teal":2320,"source":"contracts/stakingPool.algo.ts:576","pc":[2008,2009]},{"teal":2321,"source":"contracts/stakingPool.algo.ts:576","pc":[2010,2011,2012]},{"teal":2322,"source":"contracts/stakingPool.algo.ts:576","pc":[2013,2014]},{"teal":2326,"source":"contracts/stakingPool.algo.ts:580","pc":[2015,2016]},{"teal":2327,"source":"contracts/stakingPool.algo.ts:580","pc":[2017,2018,2019]},{"teal":2328,"source":"contracts/stakingPool.algo.ts:580","pc":[2020]},{"teal":2329,"source":"contracts/stakingPool.algo.ts:580","pc":[2021,2022]},{"teal":2333,"source":"contracts/stakingPool.algo.ts:586","pc":[2023,2024]},{"teal":2334,"source":"contracts/stakingPool.algo.ts:586","pc":[2025,2026]},{"teal":2335,"source":"contracts/stakingPool.algo.ts:586","pc":[2027]},{"teal":2336,"source":"contracts/stakingPool.algo.ts:586","pc":[2028,2029]},{"teal":2337,"source":"contracts/stakingPool.algo.ts:586","pc":[2030]},{"teal":2338,"source":"contracts/stakingPool.algo.ts:586","pc":[2031]},{"teal":2339,"source":"contracts/stakingPool.algo.ts:586","pc":[2032,2033]},{"teal":2340,"source":"contracts/stakingPool.algo.ts:586","pc":[2034,2035]},{"teal":2341,"source":"contracts/stakingPool.algo.ts:586","pc":[2036]},{"teal":2342,"source":"contracts/stakingPool.algo.ts:586","pc":[2037]},{"teal":2343,"source":"contracts/stakingPool.algo.ts:586","pc":[2038,2039]},{"teal":2347,"source":"contracts/stakingPool.algo.ts:587","pc":[2040]},{"teal":2348,"source":"contracts/stakingPool.algo.ts:587","pc":[2041,2042]},{"teal":2352,"source":"contracts/stakingPool.algo.ts:588","pc":[2043,2044,2045]},{"teal":2353,"source":"contracts/stakingPool.algo.ts:588","pc":[2046,2047]},{"teal":2358,"source":"contracts/stakingPool.algo.ts:596","pc":[2048,2049]},{"teal":2359,"source":"contracts/stakingPool.algo.ts:596","pc":[2050,2051,2052]},{"teal":2360,"source":"contracts/stakingPool.algo.ts:596","pc":[2053]},{"teal":2361,"source":"contracts/stakingPool.algo.ts:596","pc":[2054,2055]},{"teal":2362,"source":"contracts/stakingPool.algo.ts:596","pc":[2056]},{"teal":2363,"source":"contracts/stakingPool.algo.ts:596","pc":[2057,2058,2059]},{"teal":2368,"source":"contracts/stakingPool.algo.ts:597","pc":[2060]},{"teal":2369,"source":"contracts/stakingPool.algo.ts:597","pc":[2061,2062]},{"teal":2374,"source":"contracts/stakingPool.algo.ts:603","pc":[2063]},{"teal":2375,"source":"contracts/stakingPool.algo.ts:603","pc":[2064,2065]},{"teal":2379,"source":"contracts/stakingPool.algo.ts:604","pc":[2066]},{"teal":2380,"source":"contracts/stakingPool.algo.ts:604","pc":[2067,2068]},{"teal":2384,"source":"contracts/stakingPool.algo.ts:605","pc":[2069]},{"teal":2385,"source":"contracts/stakingPool.algo.ts:605","pc":[2070,2071]},{"teal":2389,"source":"contracts/stakingPool.algo.ts:606","pc":[2072]},{"teal":2390,"source":"contracts/stakingPool.algo.ts:606","pc":[2073,2074]},{"teal":2395,"source":"contracts/stakingPool.algo.ts:607","pc":[2075,2076]},{"teal":2396,"source":"contracts/stakingPool.algo.ts:607","pc":[2077,2078,2079]},{"teal":2402,"source":"contracts/stakingPool.algo.ts:609","pc":[2080,2081]},{"teal":2403,"source":"contracts/stakingPool.algo.ts:609","pc":[2082,2083]},{"teal":2404,"source":"contracts/stakingPool.algo.ts:609","pc":[2084,2085,2086]},{"teal":2405,"source":"contracts/stakingPool.algo.ts:609","pc":[2087]},{"teal":2406,"source":"contracts/stakingPool.algo.ts:609","pc":[2088,2089]},{"teal":2407,"source":"contracts/stakingPool.algo.ts:609","pc":[2090]},{"teal":2408,"source":"contracts/stakingPool.algo.ts:609","pc":[2091,2092]},{"teal":2409,"source":"contracts/stakingPool.algo.ts:609","pc":[2093]},{"teal":2410,"source":"contracts/stakingPool.algo.ts:608","pc":[2094,2095]},{"teal":2415,"source":"contracts/stakingPool.algo.ts:613","pc":[2096,2097]},{"teal":2416,"source":"contracts/stakingPool.algo.ts:613","pc":[2098,2099]},{"teal":2417,"source":"contracts/stakingPool.algo.ts:613","pc":[2100,2101,2102]},{"teal":2418,"source":"contracts/stakingPool.algo.ts:613","pc":[2103]},{"teal":2419,"source":"contracts/stakingPool.algo.ts:613","pc":[2104]},{"teal":2420,"source":"contracts/stakingPool.algo.ts:613","pc":[2105,2106,2107]},{"teal":2425,"source":"contracts/stakingPool.algo.ts:619","pc":[2108,2109]},{"teal":2426,"source":"contracts/stakingPool.algo.ts:619","pc":[2110]},{"teal":2427,"source":"contracts/stakingPool.algo.ts:619","pc":[2111,2112]},{"teal":2428,"source":"contracts/stakingPool.algo.ts:619","pc":[2113]},{"teal":2429,"source":"contracts/stakingPool.algo.ts:619","pc":[2114]},{"teal":2430,"source":"contracts/stakingPool.algo.ts:619","pc":[2115]},{"teal":2431,"source":"contracts/stakingPool.algo.ts:619","pc":[2116,2117]},{"teal":2432,"source":"contracts/stakingPool.algo.ts:619","pc":[2118]},{"teal":2433,"source":"contracts/stakingPool.algo.ts:619","pc":[2119]},{"teal":2434,"source":"contracts/stakingPool.algo.ts:619","pc":[2120,2121]},{"teal":2435,"source":"contracts/stakingPool.algo.ts:619","pc":[2122]},{"teal":2436,"source":"contracts/stakingPool.algo.ts:619","pc":[2123]},{"teal":2437,"source":"contracts/stakingPool.algo.ts:619","pc":[2124,2125]},{"teal":2441,"source":"contracts/stakingPool.algo.ts:622","pc":[2126,2127]},{"teal":2442,"source":"contracts/stakingPool.algo.ts:622","pc":[2128,2129,2130]},{"teal":2443,"source":"contracts/stakingPool.algo.ts:622","pc":[2131]},{"teal":2444,"source":"contracts/stakingPool.algo.ts:622","pc":[2132,2133]},{"teal":2445,"source":"contracts/stakingPool.algo.ts:622","pc":[2134]},{"teal":2446,"source":"contracts/stakingPool.algo.ts:622","pc":[2135]},{"teal":2447,"source":"contracts/stakingPool.algo.ts:622","pc":[2136,2137]},{"teal":2448,"source":"contracts/stakingPool.algo.ts:622","pc":[2138]},{"teal":2449,"source":"contracts/stakingPool.algo.ts:622","pc":[2139]},{"teal":2450,"source":"contracts/stakingPool.algo.ts:622","pc":[2140]},{"teal":2451,"source":"contracts/stakingPool.algo.ts:622","pc":[2141]},{"teal":2452,"source":"contracts/stakingPool.algo.ts:622","pc":[2142]},{"teal":2455,"source":"contracts/stakingPool.algo.ts:622","errorMessage":"wideRatio failed","pc":[2143]},{"teal":2456,"source":"contracts/stakingPool.algo.ts:622","pc":[2144,2145]},{"teal":2464,"source":"contracts/stakingPool.algo.ts:625","pc":[2146,2147]},{"teal":2465,"source":"contracts/stakingPool.algo.ts:625","pc":[2148]},{"teal":2466,"source":"contracts/stakingPool.algo.ts:625","pc":[2149]},{"teal":2467,"source":"contracts/stakingPool.algo.ts:625","pc":[2150,2151,2152]},{"teal":2473,"source":"contracts/stakingPool.algo.ts:630","pc":[2153,2154]},{"teal":2474,"source":"contracts/stakingPool.algo.ts:630","pc":[2155,2156]},{"teal":2475,"source":"contracts/stakingPool.algo.ts:630","pc":[2157]},{"teal":2476,"source":"contracts/stakingPool.algo.ts:630","pc":[2158,2159,2160]},{"teal":2481,"source":"contracts/stakingPool.algo.ts:631","pc":[2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184]},{"teal":2482,"source":"contracts/stakingPool.algo.ts:631","pc":[2185]},{"teal":2486,"source":"contracts/stakingPool.algo.ts:632","pc":[2186]},{"teal":2494,"source":"contracts/stakingPool.algo.ts:636","pc":[2187,2188]},{"teal":2495,"source":"contracts/stakingPool.algo.ts:636","pc":[2189,2190,2191]},{"teal":2503,"source":"contracts/stakingPool.algo.ts:643","pc":[2192,2193]},{"teal":2504,"source":"contracts/stakingPool.algo.ts:643","pc":[2194,2195]},{"teal":2505,"source":"contracts/stakingPool.algo.ts:643","pc":[2196,2197,2198]},{"teal":2506,"source":"contracts/stakingPool.algo.ts:643","pc":[2199]},{"teal":2507,"source":"contracts/stakingPool.algo.ts:642","pc":[2200]},{"teal":2508,"source":"contracts/stakingPool.algo.ts:642","pc":[2201]},{"teal":2509,"source":"contracts/stakingPool.algo.ts:644","pc":[2202,2203]},{"teal":2510,"source":"contracts/stakingPool.algo.ts:642","pc":[2204]},{"teal":2511,"source":"contracts/stakingPool.algo.ts:642","pc":[2205]},{"teal":2512,"source":"contracts/stakingPool.algo.ts:642","pc":[2206]},{"teal":2513,"source":"contracts/stakingPool.algo.ts:642","pc":[2207]},{"teal":2514,"source":"contracts/stakingPool.algo.ts:642","pc":[2208]},{"teal":2517,"source":"contracts/stakingPool.algo.ts:642","errorMessage":"wideRatio failed","pc":[2209]},{"teal":2518,"source":"contracts/stakingPool.algo.ts:642","pc":[2210,2211]},{"teal":2522,"source":"contracts/stakingPool.algo.ts:647","pc":[2212,2213]},{"teal":2523,"source":"contracts/stakingPool.algo.ts:647","pc":[2214,2215]},{"teal":2524,"source":"contracts/stakingPool.algo.ts:647","pc":[2216]},{"teal":2525,"source":"contracts/stakingPool.algo.ts:647","pc":[2217]},{"teal":2526,"source":"contracts/stakingPool.algo.ts:647","pc":[2218,2219]},{"teal":2527,"source":"contracts/stakingPool.algo.ts:647","pc":[2220,2221,2222]},{"teal":2528,"source":"contracts/stakingPool.algo.ts:647","pc":[2223]},{"teal":2529,"source":"contracts/stakingPool.algo.ts:647","pc":[2224]},{"teal":2530,"source":"contracts/stakingPool.algo.ts:647","pc":[2225]},{"teal":2531,"source":"contracts/stakingPool.algo.ts:647","pc":[2226]},{"teal":2532,"source":"contracts/stakingPool.algo.ts:647","pc":[2227]},{"teal":2533,"source":"contracts/stakingPool.algo.ts:647","pc":[2228]},{"teal":2536,"source":"contracts/stakingPool.algo.ts:647","errorMessage":"wideRatio failed","pc":[2229]},{"teal":2537,"source":"contracts/stakingPool.algo.ts:647","pc":[2230,2231]},{"teal":2542,"source":"contracts/stakingPool.algo.ts:649","pc":[2232,2233]},{"teal":2543,"source":"contracts/stakingPool.algo.ts:649","pc":[2234,2235]},{"teal":2544,"source":"contracts/stakingPool.algo.ts:649","pc":[2236,2237]},{"teal":2545,"source":"contracts/stakingPool.algo.ts:649","pc":[2238]},{"teal":2546,"source":"contracts/stakingPool.algo.ts:649","pc":[2239]},{"teal":2547,"source":"contracts/stakingPool.algo.ts:649","pc":[2240,2241,2242]},{"teal":2552,"source":"contracts/stakingPool.algo.ts:650","pc":[2243,2244]},{"teal":2553,"source":"contracts/stakingPool.algo.ts:650","pc":[2245,2246]},{"teal":2554,"source":"contracts/stakingPool.algo.ts:650","pc":[2247]},{"teal":2555,"source":"contracts/stakingPool.algo.ts:650","pc":[2248,2249]},{"teal":2560,"source":"contracts/stakingPool.algo.ts:653","pc":[2250,2251]},{"teal":2561,"source":"contracts/stakingPool.algo.ts:653","pc":[2252,2253]},{"teal":2562,"source":"contracts/stakingPool.algo.ts:653","pc":[2254]},{"teal":2563,"source":"contracts/stakingPool.algo.ts:653","pc":[2255,2256]},{"teal":2571,"source":"contracts/stakingPool.algo.ts:654","pc":[2257]},{"teal":2572,"source":"contracts/stakingPool.algo.ts:654","pc":[2258]},{"teal":2573,"source":"contracts/stakingPool.algo.ts:654","pc":[2259,2260]},{"teal":2577,"source":"contracts/stakingPool.algo.ts:655","pc":[2261,2262]},{"teal":2578,"source":"contracts/stakingPool.algo.ts:655","pc":[2263,2264]},{"teal":2582,"source":"contracts/stakingPool.algo.ts:656","pc":[2265,2266]},{"teal":2583,"source":"contracts/stakingPool.algo.ts:656","pc":[2267]},{"teal":2584,"source":"contracts/stakingPool.algo.ts:656","pc":[2268]},{"teal":2585,"source":"contracts/stakingPool.algo.ts:656","pc":[2269,2270]},{"teal":2586,"source":"contracts/stakingPool.algo.ts:656","pc":[2271,2272]},{"teal":2590,"source":"contracts/stakingPool.algo.ts:657","pc":[2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308]},{"teal":2591,"source":"contracts/stakingPool.algo.ts:657","pc":[2309,2310]},{"teal":2594,"source":"contracts/stakingPool.algo.ts:654","pc":[2311]},{"teal":2595,"source":"contracts/stakingPool.algo.ts:654","pc":[2312,2313]},{"teal":2598,"source":"contracts/stakingPool.algo.ts:654","pc":[2314]},{"teal":2602,"source":"contracts/stakingPool.algo.ts:660","pc":[2315,2316]},{"teal":2603,"source":"contracts/stakingPool.algo.ts:660","pc":[2317,2318]},{"teal":2604,"source":"contracts/stakingPool.algo.ts:636","pc":[2319,2320,2321]},{"teal":2609,"source":"contracts/stakingPool.algo.ts:661","pc":[2322,2323]},{"teal":2610,"source":"contracts/stakingPool.algo.ts:661","pc":[2324,2325,2326]},{"teal":2611,"source":"contracts/stakingPool.algo.ts:661","pc":[2327]},{"teal":2612,"source":"contracts/stakingPool.algo.ts:661","pc":[2328]},{"teal":2613,"source":"contracts/stakingPool.algo.ts:661","pc":[2329]},{"teal":2614,"source":"contracts/stakingPool.algo.ts:661","pc":[2330,2331,2332]},{"teal":2622,"source":"contracts/stakingPool.algo.ts:665","pc":[2333,2334]},{"teal":2623,"source":"contracts/stakingPool.algo.ts:665","pc":[2335,2336]},{"teal":2624,"source":"contracts/stakingPool.algo.ts:665","pc":[2337,2338,2339]},{"teal":2625,"source":"contracts/stakingPool.algo.ts:665","pc":[2340]},{"teal":2626,"source":"contracts/stakingPool.algo.ts:664","pc":[2341]},{"teal":2627,"source":"contracts/stakingPool.algo.ts:664","pc":[2342]},{"teal":2628,"source":"contracts/stakingPool.algo.ts:666","pc":[2343,2344]},{"teal":2629,"source":"contracts/stakingPool.algo.ts:664","pc":[2345]},{"teal":2630,"source":"contracts/stakingPool.algo.ts:664","pc":[2346]},{"teal":2631,"source":"contracts/stakingPool.algo.ts:664","pc":[2347]},{"teal":2632,"source":"contracts/stakingPool.algo.ts:664","pc":[2348]},{"teal":2633,"source":"contracts/stakingPool.algo.ts:664","pc":[2349]},{"teal":2636,"source":"contracts/stakingPool.algo.ts:664","errorMessage":"wideRatio failed","pc":[2350]},{"teal":2637,"source":"contracts/stakingPool.algo.ts:664","pc":[2351,2352]},{"teal":2641,"source":"contracts/stakingPool.algo.ts:670","pc":[2353,2354]},{"teal":2642,"source":"contracts/stakingPool.algo.ts:670","pc":[2355,2356]},{"teal":2643,"source":"contracts/stakingPool.algo.ts:670","pc":[2357]},{"teal":2644,"source":"contracts/stakingPool.algo.ts:670","pc":[2358,2359]},{"teal":2649,"source":"contracts/stakingPool.algo.ts:677","pc":[2360,2361]},{"teal":2650,"source":"contracts/stakingPool.algo.ts:677","pc":[2362]},{"teal":2651,"source":"contracts/stakingPool.algo.ts:677","pc":[2363]},{"teal":2652,"source":"contracts/stakingPool.algo.ts:677","pc":[2364,2365,2366]},{"teal":2657,"source":"contracts/stakingPool.algo.ts:680","pc":[2367]},{"teal":2658,"source":"contracts/stakingPool.algo.ts:680","pc":[2368,2369]},{"teal":2664,"source":"contracts/stakingPool.algo.ts:682","pc":[2370,2371]},{"teal":2665,"source":"contracts/stakingPool.algo.ts:682","pc":[2372,2373,2374]},{"teal":2666,"source":"contracts/stakingPool.algo.ts:682","pc":[2375,2376]},{"teal":2667,"source":"contracts/stakingPool.algo.ts:682","pc":[2377,2378,2379]},{"teal":2668,"source":"contracts/stakingPool.algo.ts:682","pc":[2380]},{"teal":2669,"source":"contracts/stakingPool.algo.ts:682","pc":[2381]},{"teal":2670,"source":"contracts/stakingPool.algo.ts:682","pc":[2382,2383,2384]},{"teal":2671,"source":"contracts/stakingPool.algo.ts:683","pc":[2385,2386]},{"teal":2672,"source":"contracts/stakingPool.algo.ts:683","pc":[2387,2388,2389]},{"teal":2673,"source":"contracts/stakingPool.algo.ts:683","pc":[2390,2391]},{"teal":2674,"source":"contracts/stakingPool.algo.ts:683","pc":[2392]},{"teal":2675,"source":"contracts/stakingPool.algo.ts:683","pc":[2393,2394]},{"teal":2676,"source":"contracts/stakingPool.algo.ts:683","pc":[2395,2396,2397]},{"teal":2677,"source":"contracts/stakingPool.algo.ts:683","pc":[2398,2399]},{"teal":2678,"source":"contracts/stakingPool.algo.ts:683","pc":[2400]},{"teal":2679,"source":"contracts/stakingPool.algo.ts:683","pc":[2401]},{"teal":2680,"source":"contracts/stakingPool.algo.ts:683","pc":[2402,2403]},{"teal":2681,"source":"contracts/stakingPool.algo.ts:683","pc":[2404]},{"teal":2682,"source":"contracts/stakingPool.algo.ts:682","pc":[2405]},{"teal":2685,"source":"contracts/stakingPool.algo.ts:681","pc":[2406,2407,2408]},{"teal":2690,"source":"contracts/stakingPool.algo.ts:685","pc":[2409,2410]},{"teal":2691,"source":"contracts/stakingPool.algo.ts:685","pc":[2411,2412]},{"teal":2692,"source":"contracts/stakingPool.algo.ts:685","pc":[2413]},{"teal":2693,"source":"contracts/stakingPool.algo.ts:685","pc":[2414,2415,2416]},{"teal":2694,"source":"contracts/stakingPool.algo.ts:685","pc":[2417,2418]},{"teal":2695,"source":"contracts/stakingPool.algo.ts:685","pc":[2419,2420,2421]},{"teal":2698,"source":"contracts/stakingPool.algo.ts:685","pc":[2422,2423]},{"teal":2701,"source":"contracts/stakingPool.algo.ts:685","pc":[2424,2425]},{"teal":2709,"source":"contracts/stakingPool.algo.ts:686","pc":[2426]},{"teal":2710,"source":"contracts/stakingPool.algo.ts:686","pc":[2427]},{"teal":2711,"source":"contracts/stakingPool.algo.ts:686","pc":[2428,2429]},{"teal":2715,"source":"contracts/stakingPool.algo.ts:687","pc":[2430,2431]},{"teal":2716,"source":"contracts/stakingPool.algo.ts:687","pc":[2432,2433]},{"teal":2720,"source":"contracts/stakingPool.algo.ts:688","pc":[2434,2435]},{"teal":2721,"source":"contracts/stakingPool.algo.ts:688","pc":[2436,2437,2438]},{"teal":2722,"source":"contracts/stakingPool.algo.ts:688","pc":[2439,2440]},{"teal":2726,"source":"contracts/stakingPool.algo.ts:689","pc":[2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495]},{"teal":2727,"source":"contracts/stakingPool.algo.ts:689","pc":[2496,2497]},{"teal":2730,"source":"contracts/stakingPool.algo.ts:686","pc":[2498]},{"teal":2731,"source":"contracts/stakingPool.algo.ts:686","pc":[2499,2500]},{"teal":2734,"source":"contracts/stakingPool.algo.ts:686","pc":[2501]},{"teal":2740,"source":"contracts/stakingPool.algo.ts:692","pc":[2502,2503]},{"teal":2741,"source":"contracts/stakingPool.algo.ts:692","pc":[2504,2505]},{"teal":2742,"source":"contracts/stakingPool.algo.ts:692","pc":[2506]},{"teal":2743,"source":"contracts/stakingPool.algo.ts:692","pc":[2507]},{"teal":2744,"source":"contracts/stakingPool.algo.ts:692","pc":[2508]},{"teal":2745,"source":"contracts/stakingPool.algo.ts:692","pc":[2509,2510,2511]},{"teal":2754,"source":"contracts/stakingPool.algo.ts:693","pc":[2512]},{"teal":2755,"source":"contracts/stakingPool.algo.ts:693","pc":[2513]},{"teal":2756,"source":"contracts/stakingPool.algo.ts:693","pc":[2514,2515]},{"teal":2760,"source":"contracts/stakingPool.algo.ts:694","pc":[2516,2517]},{"teal":2761,"source":"contracts/stakingPool.algo.ts:694","pc":[2518,2519]},{"teal":2762,"source":"contracts/stakingPool.algo.ts:694","pc":[2520]},{"teal":2763,"source":"contracts/stakingPool.algo.ts:694","pc":[2521,2522]},{"teal":2767,"source":"contracts/stakingPool.algo.ts:695","pc":[2523,2524]},{"teal":2768,"source":"contracts/stakingPool.algo.ts:695","pc":[2525,2526,2527]},{"teal":2769,"source":"contracts/stakingPool.algo.ts:695","pc":[2528,2529]},{"teal":2773,"source":"contracts/stakingPool.algo.ts:696","pc":[2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547]},{"teal":2774,"source":"contracts/stakingPool.algo.ts:696","pc":[2548,2549]},{"teal":2777,"source":"contracts/stakingPool.algo.ts:693","pc":[2550]},{"teal":2778,"source":"contracts/stakingPool.algo.ts:693","pc":[2551,2552]},{"teal":2781,"source":"contracts/stakingPool.algo.ts:693","pc":[2553]},{"teal":2790,"source":"contracts/stakingPool.algo.ts:708","pc":[2554]},{"teal":2791,"source":"contracts/stakingPool.algo.ts:708","pc":[2555,2556]},{"teal":2796,"source":"contracts/stakingPool.algo.ts:732","pc":[2557,2558]},{"teal":2797,"source":"contracts/stakingPool.algo.ts:732","pc":[2559]},{"teal":2798,"source":"contracts/stakingPool.algo.ts:732","pc":[2560]},{"teal":2799,"source":"contracts/stakingPool.algo.ts:732","pc":[2561]},{"teal":2800,"source":"contracts/stakingPool.algo.ts:732","pc":[2562,2563,2564]},{"teal":2801,"source":"contracts/stakingPool.algo.ts:732","pc":[2565,2566]},{"teal":2802,"source":"contracts/stakingPool.algo.ts:732","pc":[2567]},{"teal":2803,"source":"contracts/stakingPool.algo.ts:732","pc":[2568]},{"teal":2804,"source":"contracts/stakingPool.algo.ts:732","pc":[2569]},{"teal":2807,"source":"contracts/stakingPool.algo.ts:732","pc":[2570,2571,2572]},{"teal":2812,"source":"contracts/stakingPool.algo.ts:733","pc":[2573]},{"teal":2813,"source":"contracts/stakingPool.algo.ts:733","pc":[2574,2575]},{"teal":2817,"source":"contracts/stakingPool.algo.ts:734","pc":[2576,2577]},{"teal":2818,"source":"contracts/stakingPool.algo.ts:734","pc":[2578,2579]},{"teal":2822,"source":"contracts/stakingPool.algo.ts:736","pc":[2580,2581]},{"teal":2823,"source":"contracts/stakingPool.algo.ts:736","pc":[2582,2583]},{"teal":2827,"source":"contracts/stakingPool.algo.ts:737","pc":[2584]},{"teal":2828,"source":"contracts/stakingPool.algo.ts:737","pc":[2585,2586]},{"teal":2833,"source":"contracts/stakingPool.algo.ts:737","pc":[2587,2588]},{"teal":2834,"source":"contracts/stakingPool.algo.ts:737","pc":[2589,2590]},{"teal":2835,"source":"contracts/stakingPool.algo.ts:737","pc":[2591]},{"teal":2836,"source":"contracts/stakingPool.algo.ts:737","pc":[2592,2593,2594]},{"teal":2841,"source":"contracts/stakingPool.algo.ts:738","pc":[2595,2596]},{"teal":2842,"source":"contracts/stakingPool.algo.ts:738","pc":[2597,2598]},{"teal":2843,"source":"contracts/stakingPool.algo.ts:738","pc":[2599]},{"teal":2844,"source":"contracts/stakingPool.algo.ts:738","pc":[2600,2601,2602]},{"teal":2849,"source":"contracts/stakingPool.algo.ts:739","pc":[2603]},{"teal":2850,"source":"contracts/stakingPool.algo.ts:739","pc":[2604]},{"teal":2851,"source":"contracts/stakingPool.algo.ts:739","pc":[2605,2606]},{"teal":2852,"source":"contracts/stakingPool.algo.ts:739","pc":[2607]},{"teal":2853,"source":"contracts/stakingPool.algo.ts:739","pc":[2608,2609]},{"teal":2854,"source":"contracts/stakingPool.algo.ts:739","pc":[2610,2611]},{"teal":2855,"source":"contracts/stakingPool.algo.ts:739","pc":[2612]},{"teal":2856,"source":"contracts/stakingPool.algo.ts:739","pc":[2613,2614]},{"teal":2857,"source":"contracts/stakingPool.algo.ts:739","pc":[2615,2616]},{"teal":2858,"source":"contracts/stakingPool.algo.ts:739","pc":[2617,2618]},{"teal":2859,"source":"contracts/stakingPool.algo.ts:739","pc":[2619,2620]},{"teal":2860,"source":"contracts/stakingPool.algo.ts:739","pc":[2621]},{"teal":2865,"source":"contracts/stakingPool.algo.ts:741","pc":[2622,2623]},{"teal":2866,"source":"contracts/stakingPool.algo.ts:741","pc":[2624]},{"teal":2867,"source":"contracts/stakingPool.algo.ts:741","pc":[2625]},{"teal":2868,"source":"contracts/stakingPool.algo.ts:741","pc":[2626]},{"teal":2869,"source":"contracts/stakingPool.algo.ts:741","pc":[2627]},{"teal":2870,"source":"contracts/stakingPool.algo.ts:741","pc":[2628,2629]},{"teal":2871,"source":"contracts/stakingPool.algo.ts:741","pc":[2630]},{"teal":2872,"source":"contracts/stakingPool.algo.ts:741","pc":[2631,2632]},{"teal":2877,"source":"contracts/stakingPool.algo.ts:742","pc":[2633,2634]},{"teal":2878,"source":"contracts/stakingPool.algo.ts:742","pc":[2635,2636,2637]},{"teal":2879,"source":"contracts/stakingPool.algo.ts:742","pc":[2638,2639]},{"teal":2880,"source":"contracts/stakingPool.algo.ts:742","pc":[2640]},{"teal":2881,"source":"contracts/stakingPool.algo.ts:742","pc":[2641,2642,2643]},{"teal":2887,"source":"contracts/stakingPool.algo.ts:743","pc":[2644,2645]},{"teal":2888,"source":"contracts/stakingPool.algo.ts:743","pc":[2646,2647,2648]},{"teal":2889,"source":"contracts/stakingPool.algo.ts:743","pc":[2649]},{"teal":2890,"source":"contracts/stakingPool.algo.ts:743","pc":[2650,2651]},{"teal":2891,"source":"contracts/stakingPool.algo.ts:743","pc":[2652]},{"teal":2892,"source":"contracts/stakingPool.algo.ts:743","pc":[2653,2654,2655]},{"teal":2897,"source":"contracts/stakingPool.algo.ts:746","pc":[2656,2657]},{"teal":2898,"source":"contracts/stakingPool.algo.ts:746","pc":[2658,2659]},{"teal":2899,"source":"contracts/stakingPool.algo.ts:746","pc":[2660,2661,2662]},{"teal":2900,"source":"contracts/stakingPool.algo.ts:746","pc":[2663]},{"teal":2901,"source":"contracts/stakingPool.algo.ts:746","pc":[2664]},{"teal":2902,"source":"contracts/stakingPool.algo.ts:746","pc":[2665,2666]},{"teal":2903,"source":"contracts/stakingPool.algo.ts:743","pc":[2667,2668,2669]},{"teal":2908,"source":"contracts/stakingPool.algo.ts:750","pc":[2670,2671]},{"teal":2909,"source":"contracts/stakingPool.algo.ts:750","pc":[2672,2673]},{"teal":2910,"source":"contracts/stakingPool.algo.ts:750","pc":[2674,2675,2676]},{"teal":2911,"source":"contracts/stakingPool.algo.ts:750","pc":[2677]},{"teal":2912,"source":"contracts/stakingPool.algo.ts:750","pc":[2678]},{"teal":2913,"source":"contracts/stakingPool.algo.ts:750","pc":[2679,2680]},{"teal":2918,"source":"contracts/stakingPool.algo.ts:754","pc":[2681,2682]},{"teal":2919,"source":"contracts/stakingPool.algo.ts:754","pc":[2683,2684]},{"teal":2920,"source":"contracts/stakingPool.algo.ts:754","pc":[2685]},{"teal":2921,"source":"contracts/stakingPool.algo.ts:754","pc":[2686,2687,2688]},{"teal":2926,"source":"contracts/stakingPool.algo.ts:755","pc":[2689,2690]},{"teal":2927,"source":"contracts/stakingPool.algo.ts:755","pc":[2691,2692]},{"teal":2928,"source":"contracts/stakingPool.algo.ts:755","pc":[2693,2694,2695]},{"teal":2929,"source":"contracts/stakingPool.algo.ts:755","pc":[2696]},{"teal":2930,"source":"contracts/stakingPool.algo.ts:755","pc":[2697]},{"teal":2931,"source":"contracts/stakingPool.algo.ts:755","pc":[2698,2699]},{"teal":2935,"source":"contracts/stakingPool.algo.ts:756","pc":[2700,2701]},{"teal":2936,"source":"contracts/stakingPool.algo.ts:756","pc":[2702,2703]},{"teal":2937,"source":"contracts/stakingPool.algo.ts:756","pc":[2704]},{"teal":2938,"source":"contracts/stakingPool.algo.ts:756","pc":[2705,2706]},{"teal":2939,"source":"contracts/stakingPool.algo.ts:756","pc":[2707]},{"teal":2940,"source":"contracts/stakingPool.algo.ts:756","pc":[2708,2709]},{"teal":2945,"source":"contracts/stakingPool.algo.ts:758","pc":[2710,2711]},{"teal":2946,"source":"contracts/stakingPool.algo.ts:758","pc":[2712]},{"teal":2947,"source":"contracts/stakingPool.algo.ts:758","pc":[2713]},{"teal":2948,"source":"contracts/stakingPool.algo.ts:758","pc":[2714,2715,2716]},{"teal":2956,"source":"contracts/stakingPool.algo.ts:761","pc":[2717,2718]},{"teal":2957,"source":"contracts/stakingPool.algo.ts:761","pc":[2719,2720,2721]},{"teal":2958,"source":"contracts/stakingPool.algo.ts:761","pc":[2722]},{"teal":2959,"source":"contracts/stakingPool.algo.ts:761","pc":[2723,2724]},{"teal":2960,"source":"contracts/stakingPool.algo.ts:760","pc":[2725]},{"teal":2961,"source":"contracts/stakingPool.algo.ts:761","pc":[2726,2727]},{"teal":2962,"source":"contracts/stakingPool.algo.ts:760","pc":[2728,2729]},{"teal":2963,"source":"contracts/stakingPool.algo.ts:760","pc":[2730,2731]},{"teal":2964,"source":"contracts/stakingPool.algo.ts:760","pc":[2732]},{"teal":2965,"source":"contracts/stakingPool.algo.ts:760","pc":[2733,2734]},{"teal":2966,"source":"contracts/stakingPool.algo.ts:760","pc":[2735]},{"teal":2967,"source":"contracts/stakingPool.algo.ts:760","pc":[2736,2737]},{"teal":2968,"source":"contracts/stakingPool.algo.ts:760","pc":[2738]},{"teal":2969,"source":"contracts/stakingPool.algo.ts:760","pc":[2739]},{"teal":2970,"source":"contracts/stakingPool.algo.ts:762","pc":[2740,2741]},{"teal":2971,"source":"contracts/stakingPool.algo.ts:762","pc":[2742]},{"teal":2972,"source":"contracts/stakingPool.algo.ts:762","pc":[2743,2744]},{"teal":2973,"source":"contracts/stakingPool.algo.ts:760","pc":[2745]},{"teal":2974,"source":"contracts/stakingPool.algo.ts:760","pc":[2746]},{"teal":2975,"source":"contracts/stakingPool.algo.ts:760","pc":[2747]},{"teal":2976,"source":"contracts/stakingPool.algo.ts:760","pc":[2748]},{"teal":2977,"source":"contracts/stakingPool.algo.ts:760","pc":[2749]},{"teal":2978,"source":"contracts/stakingPool.algo.ts:760","pc":[2750]},{"teal":2981,"source":"contracts/stakingPool.algo.ts:760","errorMessage":"wideRatio failed","pc":[2751]},{"teal":2982,"source":"contracts/stakingPool.algo.ts:760","pc":[2752,2753]},{"teal":2986,"source":"contracts/stakingPool.algo.ts:767","pc":[2754,2755]},{"teal":2987,"source":"contracts/stakingPool.algo.ts:767","pc":[2756,2757]},{"teal":2988,"source":"contracts/stakingPool.algo.ts:767","pc":[2758]},{"teal":2989,"source":"contracts/stakingPool.algo.ts:767","pc":[2759,2760]},{"teal":2993,"source":"contracts/stakingPool.algo.ts:768","pc":[2761,2762]},{"teal":2994,"source":"contracts/stakingPool.algo.ts:768","pc":[2763,2764]},{"teal":2995,"source":"contracts/stakingPool.algo.ts:768","pc":[2765,2766]},{"teal":2996,"source":"contracts/stakingPool.algo.ts:768","pc":[2767,2768,2769]},{"teal":2997,"source":"contracts/stakingPool.algo.ts:768","pc":[2770]},{"teal":2998,"source":"contracts/stakingPool.algo.ts:768","pc":[2771,2772]},{"teal":2999,"source":"contracts/stakingPool.algo.ts:768","pc":[2773]},{"teal":3000,"source":"contracts/stakingPool.algo.ts:768","pc":[2774]},{"teal":3001,"source":"contracts/stakingPool.algo.ts:768","pc":[2775]},{"teal":3002,"source":"contracts/stakingPool.algo.ts:768","pc":[2776,2777]},{"teal":3006,"source":"contracts/stakingPool.algo.ts:769","pc":[2778,2779]},{"teal":3007,"source":"contracts/stakingPool.algo.ts:769","pc":[2780,2781]},{"teal":3008,"source":"contracts/stakingPool.algo.ts:769","pc":[2782]},{"teal":3009,"source":"contracts/stakingPool.algo.ts:769","pc":[2783,2784]},{"teal":3017,"source":"contracts/stakingPool.algo.ts:773","pc":[2785,2786]},{"teal":3018,"source":"contracts/stakingPool.algo.ts:773","pc":[2787,2788,2789]},{"teal":3019,"source":"contracts/stakingPool.algo.ts:773","pc":[2790]},{"teal":3020,"source":"contracts/stakingPool.algo.ts:773","pc":[2791,2792]},{"teal":3021,"source":"contracts/stakingPool.algo.ts:772","pc":[2793]},{"teal":3022,"source":"contracts/stakingPool.algo.ts:773","pc":[2794,2795]},{"teal":3023,"source":"contracts/stakingPool.algo.ts:772","pc":[2796,2797]},{"teal":3024,"source":"contracts/stakingPool.algo.ts:772","pc":[2798,2799]},{"teal":3025,"source":"contracts/stakingPool.algo.ts:772","pc":[2800]},{"teal":3026,"source":"contracts/stakingPool.algo.ts:772","pc":[2801,2802]},{"teal":3027,"source":"contracts/stakingPool.algo.ts:772","pc":[2803]},{"teal":3028,"source":"contracts/stakingPool.algo.ts:772","pc":[2804,2805]},{"teal":3029,"source":"contracts/stakingPool.algo.ts:772","pc":[2806]},{"teal":3030,"source":"contracts/stakingPool.algo.ts:772","pc":[2807]},{"teal":3031,"source":"contracts/stakingPool.algo.ts:774","pc":[2808,2809]},{"teal":3032,"source":"contracts/stakingPool.algo.ts:774","pc":[2810]},{"teal":3033,"source":"contracts/stakingPool.algo.ts:774","pc":[2811,2812]},{"teal":3034,"source":"contracts/stakingPool.algo.ts:772","pc":[2813]},{"teal":3035,"source":"contracts/stakingPool.algo.ts:772","pc":[2814]},{"teal":3036,"source":"contracts/stakingPool.algo.ts:772","pc":[2815]},{"teal":3037,"source":"contracts/stakingPool.algo.ts:772","pc":[2816]},{"teal":3038,"source":"contracts/stakingPool.algo.ts:772","pc":[2817]},{"teal":3039,"source":"contracts/stakingPool.algo.ts:772","pc":[2818]},{"teal":3042,"source":"contracts/stakingPool.algo.ts:772","errorMessage":"wideRatio failed","pc":[2819]},{"teal":3043,"source":"contracts/stakingPool.algo.ts:772","pc":[2820,2821]},{"teal":3047,"source":"contracts/stakingPool.algo.ts:778","pc":[2822,2823]},{"teal":3048,"source":"contracts/stakingPool.algo.ts:778","pc":[2824,2825]},{"teal":3049,"source":"contracts/stakingPool.algo.ts:778","pc":[2826]},{"teal":3050,"source":"contracts/stakingPool.algo.ts:778","pc":[2827,2828]},{"teal":3054,"source":"contracts/stakingPool.algo.ts:781","pc":[2829,2830]},{"teal":3055,"source":"contracts/stakingPool.algo.ts:781","pc":[2831,2832]},{"teal":3056,"source":"contracts/stakingPool.algo.ts:781","pc":[2833,2834]},{"teal":3057,"source":"contracts/stakingPool.algo.ts:781","pc":[2835,2836,2837]},{"teal":3058,"source":"contracts/stakingPool.algo.ts:781","pc":[2838]},{"teal":3059,"source":"contracts/stakingPool.algo.ts:781","pc":[2839,2840]},{"teal":3060,"source":"contracts/stakingPool.algo.ts:781","pc":[2841]},{"teal":3061,"source":"contracts/stakingPool.algo.ts:781","pc":[2842]},{"teal":3062,"source":"contracts/stakingPool.algo.ts:781","pc":[2843]},{"teal":3063,"source":"contracts/stakingPool.algo.ts:781","pc":[2844,2845]},{"teal":3067,"source":"contracts/stakingPool.algo.ts:782","pc":[2846,2847]},{"teal":3068,"source":"contracts/stakingPool.algo.ts:782","pc":[2848,2849]},{"teal":3069,"source":"contracts/stakingPool.algo.ts:782","pc":[2850,2851]},{"teal":3070,"source":"contracts/stakingPool.algo.ts:782","pc":[2852,2853,2854]},{"teal":3071,"source":"contracts/stakingPool.algo.ts:782","pc":[2855]},{"teal":3072,"source":"contracts/stakingPool.algo.ts:782","pc":[2856,2857]},{"teal":3073,"source":"contracts/stakingPool.algo.ts:782","pc":[2858]},{"teal":3074,"source":"contracts/stakingPool.algo.ts:782","pc":[2859]},{"teal":3075,"source":"contracts/stakingPool.algo.ts:782","pc":[2860]},{"teal":3076,"source":"contracts/stakingPool.algo.ts:782","pc":[2861,2862]},{"teal":3080,"source":"contracts/stakingPool.algo.ts:783","pc":[2863,2864]},{"teal":3081,"source":"contracts/stakingPool.algo.ts:783","pc":[2865,2866]},{"teal":3082,"source":"contracts/stakingPool.algo.ts:783","pc":[2867]},{"teal":3083,"source":"contracts/stakingPool.algo.ts:783","pc":[2868,2869]},{"teal":3087,"source":"contracts/stakingPool.algo.ts:785","pc":[2870,2871]},{"teal":3088,"source":"contracts/stakingPool.algo.ts:785","pc":[2872]},{"teal":3089,"source":"contracts/stakingPool.algo.ts:785","pc":[2873]},{"teal":3090,"source":"contracts/stakingPool.algo.ts:785","pc":[2874,2875]},{"teal":3091,"source":"contracts/stakingPool.algo.ts:785","pc":[2876]},{"teal":3092,"source":"contracts/stakingPool.algo.ts:785","pc":[2877,2878]},{"teal":3093,"source":"contracts/stakingPool.algo.ts:785","pc":[2879]},{"teal":3104,"source":"contracts/stakingPool.algo.ts:737","pc":[2880,2881]},{"teal":3105,"source":"contracts/stakingPool.algo.ts:737","pc":[2882]},{"teal":3106,"source":"contracts/stakingPool.algo.ts:737","pc":[2883]},{"teal":3107,"source":"contracts/stakingPool.algo.ts:737","pc":[2884,2885]},{"teal":3108,"source":"contracts/stakingPool.algo.ts:737","pc":[2886,2887,2888]},{"teal":3113,"source":"contracts/stakingPool.algo.ts:793","pc":[2889,2890]},{"teal":3114,"source":"contracts/stakingPool.algo.ts:793","pc":[2891]},{"teal":3115,"source":"contracts/stakingPool.algo.ts:793","pc":[2892,2893]},{"teal":3116,"source":"contracts/stakingPool.algo.ts:793","pc":[2894]},{"teal":3117,"source":"contracts/stakingPool.algo.ts:793","pc":[2895,2896]},{"teal":3122,"source":"contracts/stakingPool.algo.ts:797","pc":[2897,2898]},{"teal":3123,"source":"contracts/stakingPool.algo.ts:797","pc":[2899]},{"teal":3124,"source":"contracts/stakingPool.algo.ts:797","pc":[2900]},{"teal":3125,"source":"contracts/stakingPool.algo.ts:797","pc":[2901,2902,2903]},{"teal":3130,"source":"contracts/stakingPool.algo.ts:799","pc":[2904]},{"teal":3131,"source":"contracts/stakingPool.algo.ts:799","pc":[2905,2906]},{"teal":3136,"source":"contracts/stakingPool.algo.ts:799","pc":[2907,2908]},{"teal":3137,"source":"contracts/stakingPool.algo.ts:799","pc":[2909,2910]},{"teal":3138,"source":"contracts/stakingPool.algo.ts:799","pc":[2911]},{"teal":3139,"source":"contracts/stakingPool.algo.ts:799","pc":[2912,2913,2914]},{"teal":3144,"source":"contracts/stakingPool.algo.ts:800","pc":[2915,2916]},{"teal":3145,"source":"contracts/stakingPool.algo.ts:800","pc":[2917,2918]},{"teal":3146,"source":"contracts/stakingPool.algo.ts:800","pc":[2919]},{"teal":3147,"source":"contracts/stakingPool.algo.ts:800","pc":[2920,2921,2922]},{"teal":3152,"source":"contracts/stakingPool.algo.ts:801","pc":[2923]},{"teal":3153,"source":"contracts/stakingPool.algo.ts:801","pc":[2924]},{"teal":3154,"source":"contracts/stakingPool.algo.ts:801","pc":[2925,2926]},{"teal":3155,"source":"contracts/stakingPool.algo.ts:801","pc":[2927]},{"teal":3156,"source":"contracts/stakingPool.algo.ts:801","pc":[2928,2929]},{"teal":3157,"source":"contracts/stakingPool.algo.ts:801","pc":[2930,2931]},{"teal":3158,"source":"contracts/stakingPool.algo.ts:801","pc":[2932]},{"teal":3159,"source":"contracts/stakingPool.algo.ts:801","pc":[2933,2934]},{"teal":3160,"source":"contracts/stakingPool.algo.ts:801","pc":[2935,2936]},{"teal":3161,"source":"contracts/stakingPool.algo.ts:801","pc":[2937,2938]},{"teal":3162,"source":"contracts/stakingPool.algo.ts:801","pc":[2939,2940]},{"teal":3163,"source":"contracts/stakingPool.algo.ts:801","pc":[2941]},{"teal":3168,"source":"contracts/stakingPool.algo.ts:803","pc":[2942,2943]},{"teal":3169,"source":"contracts/stakingPool.algo.ts:803","pc":[2944]},{"teal":3170,"source":"contracts/stakingPool.algo.ts:803","pc":[2945]},{"teal":3171,"source":"contracts/stakingPool.algo.ts:803","pc":[2946]},{"teal":3172,"source":"contracts/stakingPool.algo.ts:803","pc":[2947]},{"teal":3173,"source":"contracts/stakingPool.algo.ts:803","pc":[2948,2949]},{"teal":3174,"source":"contracts/stakingPool.algo.ts:803","pc":[2950]},{"teal":3175,"source":"contracts/stakingPool.algo.ts:803","pc":[2951,2952]},{"teal":3180,"source":"contracts/stakingPool.algo.ts:804","pc":[2953,2954]},{"teal":3181,"source":"contracts/stakingPool.algo.ts:804","pc":[2955,2956,2957]},{"teal":3182,"source":"contracts/stakingPool.algo.ts:804","pc":[2958,2959]},{"teal":3183,"source":"contracts/stakingPool.algo.ts:804","pc":[2960]},{"teal":3184,"source":"contracts/stakingPool.algo.ts:804","pc":[2961]},{"teal":3185,"source":"contracts/stakingPool.algo.ts:804","pc":[2962,2963,2964]},{"teal":3186,"source":"contracts/stakingPool.algo.ts:804","pc":[2965,2966]},{"teal":3187,"source":"contracts/stakingPool.algo.ts:804","pc":[2967,2968,2969]},{"teal":3188,"source":"contracts/stakingPool.algo.ts:804","pc":[2970]},{"teal":3189,"source":"contracts/stakingPool.algo.ts:804","pc":[2971,2972]},{"teal":3190,"source":"contracts/stakingPool.algo.ts:804","pc":[2973]},{"teal":3191,"source":"contracts/stakingPool.algo.ts:804","pc":[2974]},{"teal":3194,"source":"contracts/stakingPool.algo.ts:804","pc":[2975,2976,2977]},{"teal":3199,"source":"contracts/stakingPool.algo.ts:805","pc":[2978,2979]},{"teal":3200,"source":"contracts/stakingPool.algo.ts:805","pc":[2980,2981]},{"teal":3201,"source":"contracts/stakingPool.algo.ts:805","pc":[2982,2983,2984]},{"teal":3202,"source":"contracts/stakingPool.algo.ts:805","pc":[2985]},{"teal":3203,"source":"contracts/stakingPool.algo.ts:805","pc":[2986]},{"teal":3204,"source":"contracts/stakingPool.algo.ts:805","pc":[2987,2988]},{"teal":3209,"source":"contracts/stakingPool.algo.ts:807","pc":[2989,2990]},{"teal":3210,"source":"contracts/stakingPool.algo.ts:807","pc":[2991,2992]},{"teal":3211,"source":"contracts/stakingPool.algo.ts:807","pc":[2993]},{"teal":3212,"source":"contracts/stakingPool.algo.ts:807","pc":[2994,2995,2996]},{"teal":3218,"source":"contracts/stakingPool.algo.ts:812","pc":[2997,2998]},{"teal":3219,"source":"contracts/stakingPool.algo.ts:812","pc":[2999]},{"teal":3220,"source":"contracts/stakingPool.algo.ts:812","pc":[3000]},{"teal":3221,"source":"contracts/stakingPool.algo.ts:812","pc":[3001,3002,3003]},{"teal":3229,"source":"contracts/stakingPool.algo.ts:814","pc":[3004,3005]},{"teal":3230,"source":"contracts/stakingPool.algo.ts:814","pc":[3006,3007,3008]},{"teal":3231,"source":"contracts/stakingPool.algo.ts:814","pc":[3009]},{"teal":3232,"source":"contracts/stakingPool.algo.ts:814","pc":[3010,3011]},{"teal":3233,"source":"contracts/stakingPool.algo.ts:813","pc":[3012]},{"teal":3234,"source":"contracts/stakingPool.algo.ts:813","pc":[3013]},{"teal":3235,"source":"contracts/stakingPool.algo.ts:815","pc":[3014,3015]},{"teal":3236,"source":"contracts/stakingPool.algo.ts:813","pc":[3016]},{"teal":3237,"source":"contracts/stakingPool.algo.ts:813","pc":[3017]},{"teal":3238,"source":"contracts/stakingPool.algo.ts:813","pc":[3018]},{"teal":3239,"source":"contracts/stakingPool.algo.ts:813","pc":[3019]},{"teal":3240,"source":"contracts/stakingPool.algo.ts:813","pc":[3020]},{"teal":3243,"source":"contracts/stakingPool.algo.ts:813","errorMessage":"wideRatio failed","pc":[3021]},{"teal":3244,"source":"contracts/stakingPool.algo.ts:813","pc":[3022,3023]},{"teal":3248,"source":"contracts/stakingPool.algo.ts:818","pc":[3024,3025]},{"teal":3249,"source":"contracts/stakingPool.algo.ts:818","pc":[3026,3027]},{"teal":3250,"source":"contracts/stakingPool.algo.ts:818","pc":[3028,3029]},{"teal":3251,"source":"contracts/stakingPool.algo.ts:818","pc":[3030,3031,3032]},{"teal":3252,"source":"contracts/stakingPool.algo.ts:818","pc":[3033]},{"teal":3253,"source":"contracts/stakingPool.algo.ts:818","pc":[3034,3035]},{"teal":3254,"source":"contracts/stakingPool.algo.ts:818","pc":[3036]},{"teal":3255,"source":"contracts/stakingPool.algo.ts:818","pc":[3037]},{"teal":3256,"source":"contracts/stakingPool.algo.ts:818","pc":[3038]},{"teal":3257,"source":"contracts/stakingPool.algo.ts:818","pc":[3039,3040]},{"teal":3261,"source":"contracts/stakingPool.algo.ts:819","pc":[3041,3042]},{"teal":3262,"source":"contracts/stakingPool.algo.ts:819","pc":[3043,3044]},{"teal":3263,"source":"contracts/stakingPool.algo.ts:819","pc":[3045]},{"teal":3264,"source":"contracts/stakingPool.algo.ts:819","pc":[3046,3047]},{"teal":3270,"source":"contracts/stakingPool.algo.ts:821","pc":[3048,3049]},{"teal":3271,"source":"contracts/stakingPool.algo.ts:821","pc":[3050]},{"teal":3272,"source":"contracts/stakingPool.algo.ts:821","pc":[3051]},{"teal":3273,"source":"contracts/stakingPool.algo.ts:821","pc":[3052,3053,3054]},{"teal":3281,"source":"contracts/stakingPool.algo.ts:823","pc":[3055,3056]},{"teal":3282,"source":"contracts/stakingPool.algo.ts:823","pc":[3057,3058,3059]},{"teal":3283,"source":"contracts/stakingPool.algo.ts:823","pc":[3060]},{"teal":3284,"source":"contracts/stakingPool.algo.ts:823","pc":[3061,3062]},{"teal":3285,"source":"contracts/stakingPool.algo.ts:822","pc":[3063]},{"teal":3286,"source":"contracts/stakingPool.algo.ts:822","pc":[3064]},{"teal":3287,"source":"contracts/stakingPool.algo.ts:824","pc":[3065,3066]},{"teal":3288,"source":"contracts/stakingPool.algo.ts:822","pc":[3067]},{"teal":3289,"source":"contracts/stakingPool.algo.ts:822","pc":[3068]},{"teal":3290,"source":"contracts/stakingPool.algo.ts:822","pc":[3069]},{"teal":3291,"source":"contracts/stakingPool.algo.ts:822","pc":[3070]},{"teal":3292,"source":"contracts/stakingPool.algo.ts:822","pc":[3071]},{"teal":3295,"source":"contracts/stakingPool.algo.ts:822","errorMessage":"wideRatio failed","pc":[3072]},{"teal":3296,"source":"contracts/stakingPool.algo.ts:822","pc":[3073,3074]},{"teal":3300,"source":"contracts/stakingPool.algo.ts:828","pc":[3075,3076]},{"teal":3301,"source":"contracts/stakingPool.algo.ts:828","pc":[3077,3078]},{"teal":3302,"source":"contracts/stakingPool.algo.ts:828","pc":[3079,3080]},{"teal":3303,"source":"contracts/stakingPool.algo.ts:828","pc":[3081,3082,3083]},{"teal":3304,"source":"contracts/stakingPool.algo.ts:828","pc":[3084]},{"teal":3305,"source":"contracts/stakingPool.algo.ts:828","pc":[3085,3086]},{"teal":3306,"source":"contracts/stakingPool.algo.ts:828","pc":[3087]},{"teal":3307,"source":"contracts/stakingPool.algo.ts:828","pc":[3088]},{"teal":3308,"source":"contracts/stakingPool.algo.ts:828","pc":[3089]},{"teal":3309,"source":"contracts/stakingPool.algo.ts:828","pc":[3090,3091]},{"teal":3313,"source":"contracts/stakingPool.algo.ts:829","pc":[3092,3093]},{"teal":3314,"source":"contracts/stakingPool.algo.ts:829","pc":[3094,3095]},{"teal":3315,"source":"contracts/stakingPool.algo.ts:829","pc":[3096,3097]},{"teal":3316,"source":"contracts/stakingPool.algo.ts:829","pc":[3098,3099,3100]},{"teal":3317,"source":"contracts/stakingPool.algo.ts:829","pc":[3101]},{"teal":3318,"source":"contracts/stakingPool.algo.ts:829","pc":[3102,3103]},{"teal":3319,"source":"contracts/stakingPool.algo.ts:829","pc":[3104]},{"teal":3320,"source":"contracts/stakingPool.algo.ts:829","pc":[3105]},{"teal":3321,"source":"contracts/stakingPool.algo.ts:829","pc":[3106]},{"teal":3322,"source":"contracts/stakingPool.algo.ts:829","pc":[3107,3108]},{"teal":3326,"source":"contracts/stakingPool.algo.ts:830","pc":[3109,3110]},{"teal":3327,"source":"contracts/stakingPool.algo.ts:830","pc":[3111,3112]},{"teal":3328,"source":"contracts/stakingPool.algo.ts:830","pc":[3113]},{"teal":3329,"source":"contracts/stakingPool.algo.ts:830","pc":[3114,3115]},{"teal":3334,"source":"contracts/stakingPool.algo.ts:834","pc":[3116,3117]},{"teal":3335,"source":"contracts/stakingPool.algo.ts:834","pc":[3118]},{"teal":3336,"source":"contracts/stakingPool.algo.ts:834","pc":[3119]},{"teal":3337,"source":"contracts/stakingPool.algo.ts:834","pc":[3120,3121]},{"teal":3338,"source":"contracts/stakingPool.algo.ts:834","pc":[3122]},{"teal":3339,"source":"contracts/stakingPool.algo.ts:834","pc":[3123,3124]},{"teal":3340,"source":"contracts/stakingPool.algo.ts:834","pc":[3125]},{"teal":3349,"source":"contracts/stakingPool.algo.ts:799","pc":[3126,3127]},{"teal":3350,"source":"contracts/stakingPool.algo.ts:799","pc":[3128]},{"teal":3351,"source":"contracts/stakingPool.algo.ts:799","pc":[3129]},{"teal":3352,"source":"contracts/stakingPool.algo.ts:799","pc":[3130,3131]},{"teal":3353,"source":"contracts/stakingPool.algo.ts:799","pc":[3132,3133,3134]},{"teal":3362,"source":"contracts/stakingPool.algo.ts:844","pc":[3135,3136]},{"teal":3363,"source":"contracts/stakingPool.algo.ts:844","pc":[3137]},{"teal":3364,"source":"contracts/stakingPool.algo.ts:844","pc":[3138,3139]},{"teal":3365,"source":"contracts/stakingPool.algo.ts:844","pc":[3140]},{"teal":3366,"source":"contracts/stakingPool.algo.ts:844","pc":[3141]},{"teal":3367,"source":"contracts/stakingPool.algo.ts:844","pc":[3142,3143]},{"teal":3368,"source":"contracts/stakingPool.algo.ts:844","pc":[3144]},{"teal":3369,"source":"contracts/stakingPool.algo.ts:844","pc":[3145,3146]},{"teal":3373,"source":"contracts/stakingPool.algo.ts:845","pc":[3147,3148]},{"teal":3374,"source":"contracts/stakingPool.algo.ts:845","pc":[3149]},{"teal":3375,"source":"contracts/stakingPool.algo.ts:845","pc":[3150,3151]},{"teal":3376,"source":"contracts/stakingPool.algo.ts:845","pc":[3152]},{"teal":3377,"source":"contracts/stakingPool.algo.ts:845","pc":[3153,3154]},{"teal":3378,"source":"contracts/stakingPool.algo.ts:845","pc":[3155]},{"teal":3379,"source":"contracts/stakingPool.algo.ts:845","pc":[3156]},{"teal":3384,"source":"contracts/stakingPool.algo.ts:846","pc":[3157,3158]},{"teal":3385,"source":"contracts/stakingPool.algo.ts:846","pc":[3159]},{"teal":3386,"source":"contracts/stakingPool.algo.ts:847","pc":[3160]},{"teal":3387,"source":"contracts/stakingPool.algo.ts:847","pc":[3161,3162]},{"teal":3388,"source":"contracts/stakingPool.algo.ts:847","pc":[3163]},{"teal":3389,"source":"contracts/stakingPool.algo.ts:847","pc":[3164,3165]},{"teal":3390,"source":"contracts/stakingPool.algo.ts:847","pc":[3166]},{"teal":3391,"source":"contracts/stakingPool.algo.ts:847","pc":[3167]},{"teal":3392,"source":"contracts/stakingPool.algo.ts:847","pc":[3168]},{"teal":3393,"source":"contracts/stakingPool.algo.ts:847","pc":[3169]},{"teal":3394,"source":"contracts/stakingPool.algo.ts:847","pc":[3170]},{"teal":3395,"source":"contracts/stakingPool.algo.ts:847","pc":[3171,3172]},{"teal":3396,"source":"contracts/stakingPool.algo.ts:847","pc":[3173]},{"teal":3399,"source":"contracts/stakingPool.algo.ts:847","errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3174]},{"teal":3400,"source":"contracts/stakingPool.algo.ts:847","pc":[3175,3176]},{"teal":3401,"source":"contracts/stakingPool.algo.ts:847","pc":[3177]},{"teal":3402,"source":"contracts/stakingPool.algo.ts:847","pc":[3178]},{"teal":3403,"source":"contracts/stakingPool.algo.ts:847","pc":[3179]},{"teal":3404,"source":"contracts/stakingPool.algo.ts:847","pc":[3180]},{"teal":3405,"source":"contracts/stakingPool.algo.ts:847","pc":[3181,3182]},{"teal":3406,"source":"contracts/stakingPool.algo.ts:847","pc":[3183]},{"teal":3407,"source":"contracts/stakingPool.algo.ts:847","pc":[3184]},{"teal":3408,"source":"contracts/stakingPool.algo.ts:847","pc":[3185]},{"teal":3409,"source":"contracts/stakingPool.algo.ts:846","pc":[3186]},{"teal":3413,"source":"contracts/stakingPool.algo.ts:848","pc":[3187,3188]},{"teal":3414,"source":"contracts/stakingPool.algo.ts:848","pc":[3189]},{"teal":3415,"source":"contracts/stakingPool.algo.ts:848","pc":[3190]},{"teal":3416,"source":"contracts/stakingPool.algo.ts:848","pc":[3191,3192]},{"teal":3417,"source":"contracts/stakingPool.algo.ts:848","pc":[3193]},{"teal":3418,"source":"contracts/stakingPool.algo.ts:848","pc":[3194]},{"teal":3431,"source":"contracts/stakingPool.algo.ts:854","pc":[3195]},{"teal":3432,"source":"contracts/stakingPool.algo.ts:854","pc":[3196]},{"teal":3433,"source":"contracts/stakingPool.algo.ts:854","pc":[3197,3198]},{"teal":3434,"source":"contracts/stakingPool.algo.ts:854","pc":[3199,3200,3201,3202,3203,3204]},{"teal":3435,"source":"contracts/stakingPool.algo.ts:854","pc":[3205,3206]},{"teal":3439,"source":"contracts/stakingPool.algo.ts:855","pc":[3207]},{"teal":3440,"source":"contracts/stakingPool.algo.ts:855","pc":[3208]},{"teal":3441,"source":"contracts/stakingPool.algo.ts:855","pc":[3209,3210]},{"teal":3451,"source":"contracts/stakingPool.algo.ts:857","pc":[3211]},{"teal":3452,"source":"contracts/stakingPool.algo.ts:857","pc":[3212]},{"teal":3453,"source":"contracts/stakingPool.algo.ts:857","pc":[3213]},{"teal":3454,"source":"contracts/stakingPool.algo.ts:857","pc":[3214,3215]},{"teal":3455,"source":"contracts/stakingPool.algo.ts:857","pc":[3216]},{"teal":3456,"source":"contracts/stakingPool.algo.ts:857","pc":[3217]},{"teal":3457,"source":"contracts/stakingPool.algo.ts:857","pc":[3218]},{"teal":3458,"source":"contracts/stakingPool.algo.ts:857","pc":[3219,3220,3221]},{"teal":3459,"source":"contracts/stakingPool.algo.ts:857","pc":[3222]},{"teal":3460,"source":"contracts/stakingPool.algo.ts:857","pc":[3223]},{"teal":3461,"source":"contracts/stakingPool.algo.ts:857","pc":[3224,3225]},{"teal":3462,"source":"contracts/stakingPool.algo.ts:858","pc":[3226,3227]},{"teal":3463,"source":"contracts/stakingPool.algo.ts:858","pc":[3228]},{"teal":3464,"source":"contracts/stakingPool.algo.ts:858","pc":[3229,3230]},{"teal":3465,"source":"contracts/stakingPool.algo.ts:859","pc":[3231,3232]},{"teal":3466,"source":"contracts/stakingPool.algo.ts:859","pc":[3233]},{"teal":3467,"source":"contracts/stakingPool.algo.ts:859","pc":[3234,3235]},{"teal":3468,"source":"contracts/stakingPool.algo.ts:860","pc":[3236,3237]},{"teal":3469,"source":"contracts/stakingPool.algo.ts:860","pc":[3238]},{"teal":3470,"source":"contracts/stakingPool.algo.ts:860","pc":[3239,3240]},{"teal":3471,"source":"contracts/stakingPool.algo.ts:861","pc":[3241,3242]},{"teal":3472,"source":"contracts/stakingPool.algo.ts:861","pc":[3243]},{"teal":3473,"source":"contracts/stakingPool.algo.ts:861","pc":[3244,3245]},{"teal":3476,"source":"contracts/stakingPool.algo.ts:854","pc":[3246]},{"teal":3477,"source":"contracts/stakingPool.algo.ts:854","pc":[3247,3248]},{"teal":3480,"source":"contracts/stakingPool.algo.ts:854","pc":[3249]},{"teal":3481,"source":"contracts/stakingPool.algo.ts:512","pc":[3250]},{"teal":3486,"source":"contracts/stakingPool.algo.ts:886","pc":[3251,3252,3253]},{"teal":3487,"source":"contracts/stakingPool.algo.ts:886","pc":[3254]},{"teal":3490,"source":"contracts/stakingPool.algo.ts:885","pc":[3255,3256,3257]},{"teal":3491,"source":"contracts/stakingPool.algo.ts:885","pc":[3258]},{"teal":3494,"source":"contracts/stakingPool.algo.ts:884","pc":[3259,3260,3261]},{"teal":3495,"source":"contracts/stakingPool.algo.ts:884","pc":[3262]},{"teal":3498,"source":"contracts/stakingPool.algo.ts:883","pc":[3263,3264,3265]},{"teal":3499,"source":"contracts/stakingPool.algo.ts:883","pc":[3266,3267,3268]},{"teal":3502,"source":"contracts/stakingPool.algo.ts:882","pc":[3269,3270,3271]},{"teal":3503,"source":"contracts/stakingPool.algo.ts:882","pc":[3272,3273,3274]},{"teal":3506,"source":"contracts/stakingPool.algo.ts:881","pc":[3275,3276,3277]},{"teal":3507,"source":"contracts/stakingPool.algo.ts:881","pc":[3278,3279,3280]},{"teal":3510,"source":"contracts/stakingPool.algo.ts:880","pc":[3281,3282]},{"teal":3511,"source":"contracts/stakingPool.algo.ts:880","pc":[3283]},{"teal":3512,"source":"contracts/stakingPool.algo.ts:880","pc":[3284]},{"teal":3513,"source":"contracts/stakingPool.algo.ts:880","pc":[3285]},{"teal":3514,"source":"contracts/stakingPool.algo.ts:880","pc":[3286,3287]},{"teal":3515,"source":"contracts/stakingPool.algo.ts:880","pc":[3288]},{"teal":3516,"source":"contracts/stakingPool.algo.ts:880","pc":[3289]},{"teal":3519,"source":"contracts/stakingPool.algo.ts:880","errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3290]},{"teal":3522,"source":"contracts/stakingPool.algo.ts:879","pc":[3291,3292,3293]},{"teal":3523,"source":"contracts/stakingPool.algo.ts:879","pc":[3294]},{"teal":3524,"source":"contracts/stakingPool.algo.ts:879","pc":[3295]},{"teal":3540,"source":"contracts/stakingPool.algo.ts:879","pc":[3296,3297,3298]},{"teal":3543,"source":"contracts/stakingPool.algo.ts:879","pc":[3299]},{"teal":3547,"source":"contracts/stakingPool.algo.ts:888","pc":[3300,3301,3302]},{"teal":3550,"source":"contracts/stakingPool.algo.ts:888","errorMessage":"can only be called by owner or manager of validator","pc":[3303]},{"teal":3554,"source":"contracts/stakingPool.algo.ts:889","pc":[3304,3305,3306]},{"teal":3555,"source":"contracts/stakingPool.algo.ts:889","pc":[3307,3308]},{"teal":3560,"source":"contracts/stakingPool.algo.ts:890","pc":[3309,3310]},{"teal":3561,"source":"contracts/stakingPool.algo.ts:890","pc":[3311,3312]},{"teal":3562,"source":"contracts/stakingPool.algo.ts:890","pc":[3313,3314]},{"teal":3563,"source":"contracts/stakingPool.algo.ts:890","pc":[3315]},{"teal":3566,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3316]},{"teal":3569,"source":"contracts/stakingPool.algo.ts:890","pc":[3317,3318]},{"teal":3570,"source":"contracts/stakingPool.algo.ts:890","pc":[3319,3320]},{"teal":3571,"source":"contracts/stakingPool.algo.ts:890","pc":[3321,3322]},{"teal":3572,"source":"contracts/stakingPool.algo.ts:890","pc":[3323]},{"teal":3575,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3324]},{"teal":3587,"source":"contracts/stakingPool.algo.ts:891","pc":[3325]},{"teal":3588,"source":"contracts/stakingPool.algo.ts:891","pc":[3326,3327]},{"teal":3589,"source":"contracts/stakingPool.algo.ts:891","pc":[3328,3329]},{"teal":3593,"source":"contracts/stakingPool.algo.ts:892","pc":[3330,3331]},{"teal":3594,"source":"contracts/stakingPool.algo.ts:892","pc":[3332,3333]},{"teal":3598,"source":"contracts/stakingPool.algo.ts:893","pc":[3334,3335]},{"teal":3599,"source":"contracts/stakingPool.algo.ts:893","pc":[3336,3337]},{"teal":3603,"source":"contracts/stakingPool.algo.ts:894","pc":[3338,3339]},{"teal":3604,"source":"contracts/stakingPool.algo.ts:894","pc":[3340,3341]},{"teal":3608,"source":"contracts/stakingPool.algo.ts:895","pc":[3342,3343]},{"teal":3609,"source":"contracts/stakingPool.algo.ts:895","pc":[3344,3345]},{"teal":3613,"source":"contracts/stakingPool.algo.ts:896","pc":[3346,3347]},{"teal":3614,"source":"contracts/stakingPool.algo.ts:896","pc":[3348,3349]},{"teal":3618,"source":"contracts/stakingPool.algo.ts:897","pc":[3350,3351]},{"teal":3619,"source":"contracts/stakingPool.algo.ts:897","pc":[3352,3353]},{"teal":3623,"source":"contracts/stakingPool.algo.ts:898","pc":[3354,3355]},{"teal":3624,"source":"contracts/stakingPool.algo.ts:898","pc":[3356,3357]},{"teal":3627,"source":"contracts/stakingPool.algo.ts:891","pc":[3358]},{"teal":3628,"source":"contracts/stakingPool.algo.ts:879","pc":[3359]},{"teal":3633,"source":"contracts/stakingPool.algo.ts:907","pc":[3360,3361,3362]},{"teal":3634,"source":"contracts/stakingPool.algo.ts:907","pc":[3363]},{"teal":3635,"source":"contracts/stakingPool.algo.ts:907","pc":[3364]},{"teal":3642,"source":"contracts/stakingPool.algo.ts:907","pc":[3365,3366,3367]},{"teal":3647,"source":"contracts/stakingPool.algo.ts:910","pc":[3368,3369]},{"teal":3648,"source":"contracts/stakingPool.algo.ts:910","pc":[3370]},{"teal":3649,"source":"contracts/stakingPool.algo.ts:910","pc":[3371]},{"teal":3650,"source":"contracts/stakingPool.algo.ts:910","pc":[3372,3373]},{"teal":3651,"source":"contracts/stakingPool.algo.ts:910","pc":[3374]},{"teal":3652,"source":"contracts/stakingPool.algo.ts:910","pc":[3375]},{"teal":3653,"source":"contracts/stakingPool.algo.ts:910","pc":[3376,3377,3378]},{"teal":3658,"source":"contracts/stakingPool.algo.ts:911","pc":[3379,3380,3381]},{"teal":3661,"source":"contracts/stakingPool.algo.ts:911","errorMessage":"can only be called by owner or manager of validator","pc":[3382]},{"teal":3666,"source":"contracts/stakingPool.algo.ts:914","pc":[3383]},{"teal":3667,"source":"contracts/stakingPool.algo.ts:914","pc":[3384,3385]},{"teal":3668,"source":"contracts/stakingPool.algo.ts:914","pc":[3386,3387]},{"teal":3671,"source":"contracts/stakingPool.algo.ts:914","pc":[3388]},{"teal":3672,"source":"contracts/stakingPool.algo.ts:914","pc":[3389,3390]},{"teal":3675,"source":"contracts/stakingPool.algo.ts:914","pc":[3391]},{"teal":3676,"source":"contracts/stakingPool.algo.ts:907","pc":[3392]},{"teal":3681,"source":"contracts/stakingPool.algo.ts:920","pc":[3393,3394,3395]},{"teal":3682,"source":"contracts/stakingPool.algo.ts:920","pc":[3396,3397,3398]},{"teal":3685,"source":"contracts/stakingPool.algo.ts:920","pc":[3399,3400,3401]},{"teal":3686,"source":"contracts/stakingPool.algo.ts:920","pc":[3402]},{"teal":3689,"source":"contracts/stakingPool.algo.ts:920","pc":[3403,3404,3405]},{"teal":3690,"source":"contracts/stakingPool.algo.ts:920","pc":[3406]},{"teal":3691,"source":"contracts/stakingPool.algo.ts:920","pc":[3407]},{"teal":3695,"source":"contracts/stakingPool.algo.ts:920","pc":[3408,3409,3410]},{"teal":3699,"source":"contracts/stakingPool.algo.ts:921","pc":[3411,3412,3413]},{"teal":3702,"source":"contracts/stakingPool.algo.ts:921","errorMessage":"can only be called by owner or manager of validator","pc":[3414]},{"teal":3710,"source":"contracts/stakingPool.algo.ts:923","pc":[3415]},{"teal":3711,"source":"contracts/stakingPool.algo.ts:923","pc":[3416]},{"teal":3712,"source":"contracts/stakingPool.algo.ts:923","pc":[3417,3418]},{"teal":3716,"source":"contracts/stakingPool.algo.ts:924","pc":[3419,3420]},{"teal":3717,"source":"contracts/stakingPool.algo.ts:924","pc":[3421,3422]},{"teal":3721,"source":"contracts/stakingPool.algo.ts:925","pc":[3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439]},{"teal":3722,"source":"contracts/stakingPool.algo.ts:925","pc":[3440,3441]},{"teal":3723,"source":"contracts/stakingPool.algo.ts:925","pc":[3442,3443]},{"teal":3724,"source":"contracts/stakingPool.algo.ts:925","pc":[3444,3445]},{"teal":3725,"source":"contracts/stakingPool.algo.ts:925","pc":[3446,3447]},{"teal":3726,"source":"contracts/stakingPool.algo.ts:925","pc":[3448]},{"teal":3727,"source":"contracts/stakingPool.algo.ts:925","pc":[3449,3450]},{"teal":3728,"source":"contracts/stakingPool.algo.ts:925","pc":[3451,3452]},{"teal":3729,"source":"contracts/stakingPool.algo.ts:925","pc":[3453,3454]},{"teal":3733,"source":"contracts/stakingPool.algo.ts:926","pc":[3455,3456]},{"teal":3734,"source":"contracts/stakingPool.algo.ts:926","pc":[3457,3458]},{"teal":3737,"source":"contracts/stakingPool.algo.ts:923","pc":[3459]},{"teal":3738,"source":"contracts/stakingPool.algo.ts:923","pc":[3460,3461]},{"teal":3741,"source":"contracts/stakingPool.algo.ts:923","pc":[3462]},{"teal":3742,"source":"contracts/stakingPool.algo.ts:920","pc":[3463]},{"teal":3747,"source":"contracts/stakingPool.algo.ts:936","pc":[3464,3465]},{"teal":3750,"source":"contracts/stakingPool.algo.ts:936","pc":[3466,3467,3468]},{"teal":3751,"source":"contracts/stakingPool.algo.ts:936","pc":[3469]},{"teal":3752,"source":"contracts/stakingPool.algo.ts:936","pc":[3470]},{"teal":3753,"source":"contracts/stakingPool.algo.ts:936","pc":[3471,3472]},{"teal":3754,"source":"contracts/stakingPool.algo.ts:936","pc":[3473]},{"teal":3757,"source":"contracts/stakingPool.algo.ts:936","errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3474]},{"teal":3760,"source":"contracts/stakingPool.algo.ts:936","pc":[3475,3476,3477]},{"teal":3761,"source":"contracts/stakingPool.algo.ts:936","pc":[3478]},{"teal":3762,"source":"contracts/stakingPool.algo.ts:936","pc":[3479]},{"teal":3763,"source":"contracts/stakingPool.algo.ts:936","pc":[3480]},{"teal":3764,"source":"contracts/stakingPool.algo.ts:936","pc":[3481]},{"teal":3773,"source":"contracts/stakingPool.algo.ts:936","pc":[3482,3483,3484]},{"teal":3776,"source":"contracts/stakingPool.algo.ts:936","pc":[3485]},{"teal":3780,"source":"contracts/stakingPool.algo.ts:937","pc":[3486]},{"teal":3781,"source":"contracts/stakingPool.algo.ts:937","pc":[3487]},{"teal":3782,"source":"contracts/stakingPool.algo.ts:937","pc":[3488,3489]},{"teal":3783,"source":"contracts/stakingPool.algo.ts:937","pc":[3490,3491,3492]},{"teal":3784,"source":"contracts/stakingPool.algo.ts:937","pc":[3493]},{"teal":3785,"source":"contracts/stakingPool.algo.ts:937","pc":[3494]},{"teal":3788,"source":"contracts/stakingPool.algo.ts:937","errorMessage":"caller must be part of same validator set!","pc":[3495]},{"teal":3792,"source":"contracts/stakingPool.algo.ts:938","pc":[3496,3497]},{"teal":3793,"source":"contracts/stakingPool.algo.ts:938","pc":[3498]},{"teal":3794,"source":"contracts/stakingPool.algo.ts:938","pc":[3499]},{"teal":3795,"source":"contracts/stakingPool.algo.ts:938","pc":[3500]},{"teal":3798,"source":"contracts/stakingPool.algo.ts:938","errorMessage":"callee must be pool 1","pc":[3501]},{"teal":3802,"source":"contracts/stakingPool.algo.ts:939","pc":[3502,3503]},{"teal":3803,"source":"contracts/stakingPool.algo.ts:939","pc":[3504,3505,3506]},{"teal":3804,"source":"contracts/stakingPool.algo.ts:939","pc":[3507]},{"teal":3805,"source":"contracts/stakingPool.algo.ts:939","pc":[3508]},{"teal":3806,"source":"contracts/stakingPool.algo.ts:939","pc":[3509]},{"teal":3809,"source":"contracts/stakingPool.algo.ts:939","errorMessage":"caller must NOT be pool 1","pc":[3510]},{"teal":3816,"source":"contracts/stakingPool.algo.ts:941","pc":[3511]},{"teal":3817,"source":"contracts/stakingPool.algo.ts:941","pc":[3512]},{"teal":3818,"source":"contracts/stakingPool.algo.ts:941","pc":[3513,3514]},{"teal":3819,"source":"contracts/stakingPool.algo.ts:941","pc":[3515,3516]},{"teal":3820,"source":"contracts/stakingPool.algo.ts:941","pc":[3517,3518]},{"teal":3824,"source":"contracts/stakingPool.algo.ts:942","pc":[3519]},{"teal":3825,"source":"contracts/stakingPool.algo.ts:942","pc":[3520]},{"teal":3826,"source":"contracts/stakingPool.algo.ts:942","pc":[3521,3522]},{"teal":3830,"source":"contracts/stakingPool.algo.ts:943","pc":[3523,3524]},{"teal":3831,"source":"contracts/stakingPool.algo.ts:943","pc":[3525,3526,3527]},{"teal":3832,"source":"contracts/stakingPool.algo.ts:943","pc":[3528]},{"teal":3833,"source":"contracts/stakingPool.algo.ts:943","pc":[3529]},{"teal":3834,"source":"contracts/stakingPool.algo.ts:943","pc":[3530,3531]},{"teal":3835,"source":"contracts/stakingPool.algo.ts:943","pc":[3532,3533]},{"teal":3836,"source":"contracts/stakingPool.algo.ts:943","pc":[3534,3535,3536]},{"teal":3837,"source":"contracts/stakingPool.algo.ts:943","pc":[3537]},{"teal":3838,"source":"contracts/stakingPool.algo.ts:943","pc":[3538]},{"teal":3839,"source":"contracts/stakingPool.algo.ts:943","pc":[3539,3540]},{"teal":3842,"source":"contracts/stakingPool.algo.ts:941","pc":[3541]},{"teal":3843,"source":"contracts/stakingPool.algo.ts:941","pc":[3542,3543]},{"teal":3846,"source":"contracts/stakingPool.algo.ts:941","pc":[3544]},{"teal":3847,"source":"contracts/stakingPool.algo.ts:941","pc":[3545,3546]},{"teal":3848,"source":"contracts/stakingPool.algo.ts:941","pc":[3547]},{"teal":3849,"source":"contracts/stakingPool.algo.ts:941","pc":[3548]},{"teal":3850,"source":"contracts/stakingPool.algo.ts:941","pc":[3549,3550]},{"teal":3851,"source":"contracts/stakingPool.algo.ts:941","pc":[3551,3552,3553]},{"teal":3852,"source":"contracts/stakingPool.algo.ts:941","pc":[3554]},{"teal":3853,"source":"contracts/stakingPool.algo.ts:941","pc":[3555,3556]},{"teal":3857,"source":"contracts/stakingPool.algo.ts:945","pc":[3557,3558]},{"teal":3858,"source":"contracts/stakingPool.algo.ts:945","pc":[3559,3560]},{"teal":3859,"source":"contracts/stakingPool.algo.ts:945","pc":[3561,3562,3563]},{"teal":3860,"source":"contracts/stakingPool.algo.ts:945","pc":[3564]},{"teal":3861,"source":"contracts/stakingPool.algo.ts:945","pc":[3565]},{"teal":3862,"source":"contracts/stakingPool.algo.ts:945","pc":[3566]},{"teal":3866,"source":"contracts/stakingPool.algo.ts:946","pc":[3567,3568]},{"teal":3867,"source":"contracts/stakingPool.algo.ts:946","pc":[3569,3570]},{"teal":3868,"source":"contracts/stakingPool.algo.ts:946","pc":[3571,3572,3573]},{"teal":3869,"source":"contracts/stakingPool.algo.ts:946","pc":[3574]},{"teal":3870,"source":"contracts/stakingPool.algo.ts:946","pc":[3575,3576]},{"teal":3871,"source":"contracts/stakingPool.algo.ts:946","pc":[3577]},{"teal":3872,"source":"contracts/stakingPool.algo.ts:946","pc":[3578]},{"teal":3873,"source":"contracts/stakingPool.algo.ts:946","pc":[3579]},{"teal":3880,"source":"contracts/stakingPool.algo.ts:948","pc":[3580]},{"teal":3881,"source":"contracts/stakingPool.algo.ts:948","pc":[3581]},{"teal":3882,"source":"contracts/stakingPool.algo.ts:948","pc":[3582,3583]},{"teal":3883,"source":"contracts/stakingPool.algo.ts:948","pc":[3584,3585]},{"teal":3884,"source":"contracts/stakingPool.algo.ts:948","pc":[3586,3587]},{"teal":3888,"source":"contracts/stakingPool.algo.ts:949","pc":[3588]},{"teal":3889,"source":"contracts/stakingPool.algo.ts:949","pc":[3589]},{"teal":3890,"source":"contracts/stakingPool.algo.ts:949","pc":[3590,3591]},{"teal":3894,"source":"contracts/stakingPool.algo.ts:950","pc":[3592]},{"teal":3895,"source":"contracts/stakingPool.algo.ts:950","pc":[3593]},{"teal":3896,"source":"contracts/stakingPool.algo.ts:950","pc":[3594]},{"teal":3897,"source":"contracts/stakingPool.algo.ts:950","pc":[3595,3596]},{"teal":3900,"source":"contracts/stakingPool.algo.ts:948","pc":[3597]},{"teal":3901,"source":"contracts/stakingPool.algo.ts:948","pc":[3598,3599]},{"teal":3904,"source":"contracts/stakingPool.algo.ts:948","pc":[3600]},{"teal":3905,"source":"contracts/stakingPool.algo.ts:948","pc":[3601,3602]},{"teal":3906,"source":"contracts/stakingPool.algo.ts:948","pc":[3603]},{"teal":3907,"source":"contracts/stakingPool.algo.ts:948","pc":[3604]},{"teal":3908,"source":"contracts/stakingPool.algo.ts:948","pc":[3605,3606]},{"teal":3909,"source":"contracts/stakingPool.algo.ts:948","pc":[3607,3608,3609]},{"teal":3912,"source":"contracts/stakingPool.algo.ts:936","pc":[3610,3611]},{"teal":3913,"source":"contracts/stakingPool.algo.ts:936","pc":[3612]},{"teal":3917,"source":"contracts/stakingPool.algo.ts:954","pc":[3613,3614,3615]},{"teal":3920,"source":"contracts/stakingPool.algo.ts:954","pc":[3616]},{"teal":3927,"source":"contracts/stakingPool.algo.ts:955","pc":[3617]},{"teal":3928,"source":"contracts/stakingPool.algo.ts:955","pc":[3618]},{"teal":3929,"source":"contracts/stakingPool.algo.ts:955","pc":[3619,3620]},{"teal":3930,"source":"contracts/stakingPool.algo.ts:955","pc":[3621,3622,3623,3624,3625,3626]},{"teal":3931,"source":"contracts/stakingPool.algo.ts:955","pc":[3627,3628]},{"teal":3935,"source":"contracts/stakingPool.algo.ts:956","pc":[3629]},{"teal":3936,"source":"contracts/stakingPool.algo.ts:956","pc":[3630]},{"teal":3937,"source":"contracts/stakingPool.algo.ts:956","pc":[3631,3632]},{"teal":3941,"source":"contracts/stakingPool.algo.ts:957","pc":[3633]},{"teal":3942,"source":"contracts/stakingPool.algo.ts:957","pc":[3634]},{"teal":3943,"source":"contracts/stakingPool.algo.ts:957","pc":[3635]},{"teal":3944,"source":"contracts/stakingPool.algo.ts:957","pc":[3636,3637]},{"teal":3947,"source":"contracts/stakingPool.algo.ts:955","pc":[3638]},{"teal":3948,"source":"contracts/stakingPool.algo.ts:955","pc":[3639,3640]},{"teal":3951,"source":"contracts/stakingPool.algo.ts:955","pc":[3641]},{"teal":3952,"source":"contracts/stakingPool.algo.ts:955","pc":[3642,3643]},{"teal":3953,"source":"contracts/stakingPool.algo.ts:955","pc":[3644]},{"teal":3954,"source":"contracts/stakingPool.algo.ts:955","pc":[3645]},{"teal":3955,"source":"contracts/stakingPool.algo.ts:955","pc":[3646,3647]},{"teal":3956,"source":"contracts/stakingPool.algo.ts:955","pc":[3648,3649,3650]},{"teal":3957,"source":"contracts/stakingPool.algo.ts:955","pc":[3651,3652]},{"teal":3961,"source":"contracts/stakingPool.algo.ts:959","pc":[3653,3654]},{"teal":3962,"source":"contracts/stakingPool.algo.ts:959","pc":[3655,3656]},{"teal":3963,"source":"contracts/stakingPool.algo.ts:959","pc":[3657,3658,3659]},{"teal":3964,"source":"contracts/stakingPool.algo.ts:959","pc":[3660]},{"teal":3965,"source":"contracts/stakingPool.algo.ts:959","pc":[3661]},{"teal":3966,"source":"contracts/stakingPool.algo.ts:959","pc":[3662,3663,3664]},{"teal":3967,"source":"contracts/stakingPool.algo.ts:959","pc":[3665,3666]},{"teal":3968,"source":"contracts/stakingPool.algo.ts:959","pc":[3667,3668]},{"teal":3969,"source":"contracts/stakingPool.algo.ts:959","pc":[3669,3670,3671]},{"teal":3970,"source":"contracts/stakingPool.algo.ts:959","pc":[3672]},{"teal":3971,"source":"contracts/stakingPool.algo.ts:959","pc":[3673]},{"teal":3975,"source":"contracts/stakingPool.algo.ts:954","pc":[3674,3675]},{"teal":3976,"source":"contracts/stakingPool.algo.ts:954","pc":[3676]},{"teal":3983,"source":"contracts/stakingPool.algo.ts:966","pc":[3677,3678,3679]},{"teal":3986,"source":"contracts/stakingPool.algo.ts:966","pc":[3680]},{"teal":3990,"source":"contracts/stakingPool.algo.ts:967","pc":[3681,3682,3683]},{"teal":3991,"source":"contracts/stakingPool.algo.ts:967","pc":[3684,3685]},{"teal":3995,"source":"contracts/stakingPool.algo.ts:969","pc":[3686,3687]},{"teal":3996,"source":"contracts/stakingPool.algo.ts:969","pc":[3688,3689]},{"teal":3997,"source":"contracts/stakingPool.algo.ts:969","pc":[3690]},{"teal":3998,"source":"contracts/stakingPool.algo.ts:969","pc":[3691]},{"teal":3999,"source":"contracts/stakingPool.algo.ts:969","pc":[3692,3693]},{"teal":4000,"source":"contracts/stakingPool.algo.ts:969","pc":[3694]},{"teal":4001,"source":"contracts/stakingPool.algo.ts:969","pc":[3695]},{"teal":4002,"source":"contracts/stakingPool.algo.ts:969","pc":[3696]},{"teal":4003,"source":"contracts/stakingPool.algo.ts:969","pc":[3697]},{"teal":4004,"source":"contracts/stakingPool.algo.ts:969","pc":[3698]},{"teal":4007,"source":"contracts/stakingPool.algo.ts:969","errorMessage":"wideRatio failed","pc":[3699]},{"teal":4010,"source":"contracts/stakingPool.algo.ts:966","pc":[3700,3701]},{"teal":4011,"source":"contracts/stakingPool.algo.ts:966","pc":[3702]},{"teal":4015,"source":"contracts/stakingPool.algo.ts:972","pc":[3703,3704,3705]},{"teal":4020,"source":"contracts/stakingPool.algo.ts:974","pc":[3706,3707]},{"teal":4021,"source":"contracts/stakingPool.algo.ts:974","pc":[3708,3709]},{"teal":4022,"source":"contracts/stakingPool.algo.ts:974","pc":[3710]},{"teal":4023,"source":"contracts/stakingPool.algo.ts:974","pc":[3711]},{"teal":4024,"source":"contracts/stakingPool.algo.ts:974","pc":[3712,3713,3714]},{"teal":4029,"source":"contracts/stakingPool.algo.ts:975","pc":[3715,3716]},{"teal":4030,"source":"contracts/stakingPool.algo.ts:975","pc":[3717]},{"teal":4035,"source":"contracts/stakingPool.algo.ts:977","pc":[3718]},{"teal":4036,"source":"contracts/stakingPool.algo.ts:972","pc":[3719]},{"teal":4040,"source":"contracts/stakingPool.algo.ts:980","pc":[3720,3721,3722]},{"teal":4044,"source":"contracts/stakingPool.algo.ts:981","pc":[3723]},{"teal":4045,"source":"contracts/stakingPool.algo.ts:980","pc":[3724]},{"teal":4051,"source":"contracts/stakingPool.algo.ts:987","pc":[3725,3726,3727]},{"teal":4054,"source":"contracts/stakingPool.algo.ts:987","pc":[3728]},{"teal":4055,"source":"contracts/stakingPool.algo.ts:987","pc":[3729,3730]},{"teal":4059,"source":"contracts/stakingPool.algo.ts:988","pc":[3731,3732]},{"teal":4060,"source":"contracts/stakingPool.algo.ts:988","pc":[3733]},{"teal":4061,"source":"contracts/stakingPool.algo.ts:988","pc":[3734]},{"teal":4062,"source":"contracts/stakingPool.algo.ts:988","pc":[3735,3736]},{"teal":4067,"source":"contracts/stakingPool.algo.ts:989","pc":[3737,3738]},{"teal":4068,"source":"contracts/stakingPool.algo.ts:989","pc":[3739,3740]},{"teal":4069,"source":"contracts/stakingPool.algo.ts:989","pc":[3741]},{"teal":4070,"source":"contracts/stakingPool.algo.ts:989","pc":[3742,3743]},{"teal":4071,"source":"contracts/stakingPool.algo.ts:989","pc":[3744]},{"teal":4072,"source":"contracts/stakingPool.algo.ts:989","pc":[3745]},{"teal":4073,"source":"contracts/stakingPool.algo.ts:989","pc":[3746]},{"teal":4074,"source":"contracts/stakingPool.algo.ts:989","pc":[3747]},{"teal":4077,"source":"contracts/stakingPool.algo.ts:989","errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[3748]},{"teal":4078,"source":"contracts/stakingPool.algo.ts:989","pc":[3749,3750,3751,3752,3753,3754,3755,3756,3757,3758]},{"teal":4079,"source":"contracts/stakingPool.algo.ts:989","pc":[3759]},{"teal":4080,"source":"contracts/stakingPool.algo.ts:989","pc":[3760]},{"teal":4081,"source":"contracts/stakingPool.algo.ts:989","pc":[3761]},{"teal":4082,"source":"contracts/stakingPool.algo.ts:989","pc":[3762]},{"teal":4083,"source":"contracts/stakingPool.algo.ts:989","pc":[3763,3764]},{"teal":4084,"source":"contracts/stakingPool.algo.ts:989","pc":[3765]},{"teal":4085,"source":"contracts/stakingPool.algo.ts:989","pc":[3766]},{"teal":4086,"source":"contracts/stakingPool.algo.ts:989","pc":[3767]},{"teal":4087,"source":"contracts/stakingPool.algo.ts:989","pc":[3768]},{"teal":4088,"source":"contracts/stakingPool.algo.ts:989","pc":[3769]},{"teal":4089,"source":"contracts/stakingPool.algo.ts:989","pc":[3770]},{"teal":4090,"source":"contracts/stakingPool.algo.ts:989","pc":[3771,3772,3773]},{"teal":4096,"source":"contracts/stakingPool.algo.ts:990","pc":[3774,3775]},{"teal":4097,"source":"contracts/stakingPool.algo.ts:990","pc":[3776,3777]},{"teal":4098,"source":"contracts/stakingPool.algo.ts:990","pc":[3778]},{"teal":4099,"source":"contracts/stakingPool.algo.ts:990","pc":[3779,3780,3781]},{"teal":4104,"source":"contracts/stakingPool.algo.ts:991","pc":[3782]},{"teal":4105,"source":"contracts/stakingPool.algo.ts:991","pc":[3783]},{"teal":4106,"source":"contracts/stakingPool.algo.ts:991","pc":[3784,3785]},{"teal":4107,"source":"contracts/stakingPool.algo.ts:991","pc":[3786]},{"teal":4108,"source":"contracts/stakingPool.algo.ts:991","pc":[3787,3788]},{"teal":4109,"source":"contracts/stakingPool.algo.ts:991","pc":[3789,3790]},{"teal":4110,"source":"contracts/stakingPool.algo.ts:991","pc":[3791]},{"teal":4111,"source":"contracts/stakingPool.algo.ts:991","pc":[3792,3793]},{"teal":4112,"source":"contracts/stakingPool.algo.ts:991","pc":[3794,3795]},{"teal":4113,"source":"contracts/stakingPool.algo.ts:991","pc":[3796,3797]},{"teal":4114,"source":"contracts/stakingPool.algo.ts:991","pc":[3798,3799]},{"teal":4115,"source":"contracts/stakingPool.algo.ts:991","pc":[3800]},{"teal":4120,"source":"contracts/stakingPool.algo.ts:993","pc":[3801,3802]},{"teal":4121,"source":"contracts/stakingPool.algo.ts:993","pc":[3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820]},{"teal":4122,"source":"contracts/stakingPool.algo.ts:993","pc":[3821]},{"teal":4123,"source":"contracts/stakingPool.algo.ts:993","pc":[3822]},{"teal":4124,"source":"contracts/stakingPool.algo.ts:993","pc":[3823]},{"teal":4125,"source":"contracts/stakingPool.algo.ts:993","pc":[3824,3825]},{"teal":4126,"source":"contracts/stakingPool.algo.ts:993","pc":[3826]},{"teal":4129,"source":"contracts/stakingPool.algo.ts:993","errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[3827]},{"teal":4130,"source":"contracts/stakingPool.algo.ts:993","pc":[3828,3829]},{"teal":4131,"source":"contracts/stakingPool.algo.ts:993","pc":[3830]},{"teal":4132,"source":"contracts/stakingPool.algo.ts:993","pc":[3831]},{"teal":4133,"source":"contracts/stakingPool.algo.ts:993","pc":[3832]},{"teal":4134,"source":"contracts/stakingPool.algo.ts:993","pc":[3833]},{"teal":4135,"source":"contracts/stakingPool.algo.ts:993","pc":[3834,3835]},{"teal":4136,"source":"contracts/stakingPool.algo.ts:993","pc":[3836]},{"teal":4137,"source":"contracts/stakingPool.algo.ts:993","pc":[3837]},{"teal":4138,"source":"contracts/stakingPool.algo.ts:993","pc":[3838]},{"teal":4139,"source":"contracts/stakingPool.algo.ts:993","pc":[3839,3840]},{"teal":4143,"source":"contracts/stakingPool.algo.ts:994","pc":[3841,3842]},{"teal":4144,"source":"contracts/stakingPool.algo.ts:994","pc":[3843]},{"teal":4145,"source":"contracts/stakingPool.algo.ts:994","pc":[3844,3845]},{"teal":4146,"source":"contracts/stakingPool.algo.ts:994","pc":[3846]},{"teal":4147,"source":"contracts/stakingPool.algo.ts:994","pc":[3847]},{"teal":4148,"source":"contracts/stakingPool.algo.ts:994","pc":[3848]},{"teal":4149,"source":"contracts/stakingPool.algo.ts:994","pc":[3849,3850]},{"teal":4150,"source":"contracts/stakingPool.algo.ts:994","pc":[3851]},{"teal":4153,"source":"contracts/stakingPool.algo.ts:994","errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[3852]},{"teal":4154,"source":"contracts/stakingPool.algo.ts:994","pc":[3853,3854]},{"teal":4155,"source":"contracts/stakingPool.algo.ts:994","pc":[3855]},{"teal":4156,"source":"contracts/stakingPool.algo.ts:994","pc":[3856]},{"teal":4157,"source":"contracts/stakingPool.algo.ts:994","pc":[3857]},{"teal":4158,"source":"contracts/stakingPool.algo.ts:994","pc":[3858]},{"teal":4159,"source":"contracts/stakingPool.algo.ts:994","pc":[3859,3860]},{"teal":4160,"source":"contracts/stakingPool.algo.ts:994","pc":[3861]},{"teal":4161,"source":"contracts/stakingPool.algo.ts:994","pc":[3862]},{"teal":4162,"source":"contracts/stakingPool.algo.ts:994","pc":[3863]},{"teal":4163,"source":"contracts/stakingPool.algo.ts:994","pc":[3864,3865]},{"teal":4168,"source":"contracts/stakingPool.algo.ts:995","pc":[3866,3867]},{"teal":4169,"source":"contracts/stakingPool.algo.ts:995","pc":[3868,3869]},{"teal":4170,"source":"contracts/stakingPool.algo.ts:995","pc":[3870]},{"teal":4171,"source":"contracts/stakingPool.algo.ts:995","pc":[3871,3872,3873]},{"teal":4178,"source":"contracts/stakingPool.algo.ts:1000","pc":[3874,3875]},{"teal":4179,"source":"contracts/stakingPool.algo.ts:1000","pc":[3876]},{"teal":4180,"source":"contracts/stakingPool.algo.ts:1000","pc":[3877]},{"teal":4181,"source":"contracts/stakingPool.algo.ts:1000","pc":[3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895]},{"teal":4182,"source":"contracts/stakingPool.algo.ts:1000","pc":[3896]},{"teal":4183,"source":"contracts/stakingPool.algo.ts:1000","pc":[3897,3898]},{"teal":4184,"source":"contracts/stakingPool.algo.ts:1000","pc":[3899]},{"teal":4185,"source":"contracts/stakingPool.algo.ts:1001","pc":[3900,3901]},{"teal":4186,"source":"contracts/stakingPool.algo.ts:1001","pc":[3902,3903]},{"teal":4187,"source":"contracts/stakingPool.algo.ts:1001","pc":[3904]},{"teal":4188,"source":"contracts/stakingPool.algo.ts:1000","pc":[3905]},{"teal":4189,"source":"contracts/stakingPool.algo.ts:1000","pc":[3906]},{"teal":4190,"source":"contracts/stakingPool.algo.ts:1000","pc":[3907]},{"teal":4191,"source":"contracts/stakingPool.algo.ts:1000","pc":[3908,3909]},{"teal":4192,"source":"contracts/stakingPool.algo.ts:1000","pc":[3910]},{"teal":4195,"source":"contracts/stakingPool.algo.ts:1000","errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[3911]},{"teal":4196,"source":"contracts/stakingPool.algo.ts:1000","pc":[3912,3913]},{"teal":4197,"source":"contracts/stakingPool.algo.ts:1000","pc":[3914]},{"teal":4198,"source":"contracts/stakingPool.algo.ts:1000","pc":[3915]},{"teal":4199,"source":"contracts/stakingPool.algo.ts:1000","pc":[3916]},{"teal":4200,"source":"contracts/stakingPool.algo.ts:1000","pc":[3917]},{"teal":4201,"source":"contracts/stakingPool.algo.ts:1000","pc":[3918,3919]},{"teal":4202,"source":"contracts/stakingPool.algo.ts:1000","pc":[3920]},{"teal":4203,"source":"contracts/stakingPool.algo.ts:1000","pc":[3921]},{"teal":4204,"source":"contracts/stakingPool.algo.ts:1000","pc":[3922]},{"teal":4205,"source":"contracts/stakingPool.algo.ts:999","pc":[3923,3924]},{"teal":4209,"source":"contracts/stakingPool.algo.ts:1003","pc":[3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942]},{"teal":4210,"source":"contracts/stakingPool.algo.ts:1003","pc":[3943,3944]},{"teal":4215,"source":"contracts/stakingPool.algo.ts:1005","pc":[3945,3946]},{"teal":4216,"source":"contracts/stakingPool.algo.ts:1005","pc":[3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964]},{"teal":4217,"source":"contracts/stakingPool.algo.ts:1005","pc":[3965]},{"teal":4218,"source":"contracts/stakingPool.algo.ts:1005","pc":[3966,3967,3968]},{"teal":4223,"source":"contracts/stakingPool.algo.ts:1006","pc":[3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986]},{"teal":4224,"source":"contracts/stakingPool.algo.ts:1006","pc":[3987,3988]},{"teal":4231,"source":"contracts/stakingPool.algo.ts:1008","pc":[3989,3990]},{"teal":4232,"source":"contracts/stakingPool.algo.ts:1008","pc":[3991]},{"teal":4233,"source":"contracts/stakingPool.algo.ts:1009","pc":[3992]},{"teal":4234,"source":"contracts/stakingPool.algo.ts:1009","pc":[3993,3994]},{"teal":4235,"source":"contracts/stakingPool.algo.ts:1009","pc":[3995,3996]},{"teal":4236,"source":"contracts/stakingPool.algo.ts:1009","pc":[3997]},{"teal":4237,"source":"contracts/stakingPool.algo.ts:1009","pc":[3998]},{"teal":4238,"source":"contracts/stakingPool.algo.ts:1009","pc":[3999,4000]},{"teal":4239,"source":"contracts/stakingPool.algo.ts:1009","pc":[4001]},{"teal":4240,"source":"contracts/stakingPool.algo.ts:1010","pc":[4002,4003]},{"teal":4241,"source":"contracts/stakingPool.algo.ts:1010","pc":[4004,4005]},{"teal":4242,"source":"contracts/stakingPool.algo.ts:1010","pc":[4006]},{"teal":4243,"source":"contracts/stakingPool.algo.ts:1010","pc":[4007,4008]},{"teal":4244,"source":"contracts/stakingPool.algo.ts:1010","pc":[4009]},{"teal":4245,"source":"contracts/stakingPool.algo.ts:1009","pc":[4010]},{"teal":4246,"source":"contracts/stakingPool.algo.ts:1009","pc":[4011]},{"teal":4247,"source":"contracts/stakingPool.algo.ts:1009","pc":[4012]},{"teal":4248,"source":"contracts/stakingPool.algo.ts:1009","pc":[4013,4014]},{"teal":4249,"source":"contracts/stakingPool.algo.ts:1009","pc":[4015]},{"teal":4252,"source":"contracts/stakingPool.algo.ts:1009","errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4016]},{"teal":4253,"source":"contracts/stakingPool.algo.ts:1009","pc":[4017,4018]},{"teal":4254,"source":"contracts/stakingPool.algo.ts:1009","pc":[4019]},{"teal":4255,"source":"contracts/stakingPool.algo.ts:1009","pc":[4020]},{"teal":4256,"source":"contracts/stakingPool.algo.ts:1009","pc":[4021]},{"teal":4257,"source":"contracts/stakingPool.algo.ts:1009","pc":[4022]},{"teal":4258,"source":"contracts/stakingPool.algo.ts:1009","pc":[4023,4024]},{"teal":4259,"source":"contracts/stakingPool.algo.ts:1009","pc":[4025]},{"teal":4260,"source":"contracts/stakingPool.algo.ts:1009","pc":[4026]},{"teal":4261,"source":"contracts/stakingPool.algo.ts:1009","pc":[4027]},{"teal":4262,"source":"contracts/stakingPool.algo.ts:1008","pc":[4028]},{"teal":4267,"source":"contracts/stakingPool.algo.ts:1014","pc":[4029,4030,4031]},{"teal":4271,"source":"contracts/stakingPool.algo.ts:1015","pc":[4032,4033]},{"teal":4272,"source":"contracts/stakingPool.algo.ts:1015","pc":[4034,4035]},{"teal":4273,"source":"contracts/stakingPool.algo.ts:1015","pc":[4036]},{"teal":4274,"source":"contracts/stakingPool.algo.ts:1015","pc":[4037]},{"teal":4275,"source":"contracts/stakingPool.algo.ts:1015","pc":[4038,4039]},{"teal":4276,"source":"contracts/stakingPool.algo.ts:1015","pc":[4040]},{"teal":4277,"source":"contracts/stakingPool.algo.ts:1015","pc":[4041]},{"teal":4278,"source":"contracts/stakingPool.algo.ts:1015","pc":[4042]},{"teal":4279,"source":"contracts/stakingPool.algo.ts:1015","pc":[4043]},{"teal":4280,"source":"contracts/stakingPool.algo.ts:1015","pc":[4044]},{"teal":4281,"source":"contracts/stakingPool.algo.ts:1015","pc":[4045,4046]},{"teal":4282,"source":"contracts/stakingPool.algo.ts:1015","pc":[4047]},{"teal":4285,"source":"contracts/stakingPool.algo.ts:1015","errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4048]},{"teal":4286,"source":"contracts/stakingPool.algo.ts:1015","pc":[4049,4050]},{"teal":4287,"source":"contracts/stakingPool.algo.ts:1015","pc":[4051]},{"teal":4288,"source":"contracts/stakingPool.algo.ts:1015","pc":[4052]},{"teal":4289,"source":"contracts/stakingPool.algo.ts:1015","pc":[4053]},{"teal":4290,"source":"contracts/stakingPool.algo.ts:1015","pc":[4054]},{"teal":4291,"source":"contracts/stakingPool.algo.ts:1015","pc":[4055,4056]},{"teal":4292,"source":"contracts/stakingPool.algo.ts:1015","pc":[4057]},{"teal":4293,"source":"contracts/stakingPool.algo.ts:1015","pc":[4058]},{"teal":4294,"source":"contracts/stakingPool.algo.ts:1015","pc":[4059]},{"teal":4295,"source":"contracts/stakingPool.algo.ts:1015","pc":[4060]},{"teal":4299,"source":"contracts/stakingPool.algo.ts:1016","pc":[4061,4062]},{"teal":4300,"source":"contracts/stakingPool.algo.ts:1016","pc":[4063]},{"teal":4301,"source":"contracts/stakingPool.algo.ts:1016","pc":[4064]},{"teal":4305,"source":"contracts/stakingPool.algo.ts:1017","pc":[4065,4066]},{"teal":4306,"source":"contracts/stakingPool.algo.ts:1017","pc":[4067,4068]},{"teal":4307,"source":"contracts/stakingPool.algo.ts:1017","pc":[4069,4070]},{"teal":4308,"source":"contracts/stakingPool.algo.ts:1017","pc":[4071,4072]},{"teal":4309,"source":"contracts/stakingPool.algo.ts:1017","pc":[4073]},{"teal":4310,"source":"contracts/stakingPool.algo.ts:1017","pc":[4074]},{"teal":4311,"source":"contracts/stakingPool.algo.ts:1017","pc":[4075]},{"teal":4312,"source":"contracts/stakingPool.algo.ts:1017","pc":[4076]},{"teal":4315,"source":"contracts/stakingPool.algo.ts:987","pc":[4077]},{"teal":4319,"source":"contracts/stakingPool.algo.ts:1021","pc":[4078,4079,4080]},{"teal":4322,"source":"contracts/stakingPool.algo.ts:1021","pc":[4081]},{"teal":4327,"source":"contracts/stakingPool.algo.ts:1026","pc":[4082,4083]},{"teal":4328,"source":"contracts/stakingPool.algo.ts:1026","pc":[4084,4085]},{"teal":4329,"source":"contracts/stakingPool.algo.ts:1026","pc":[4086]},{"teal":4330,"source":"contracts/stakingPool.algo.ts:1026","pc":[4087,4088,4089]},{"teal":4335,"source":"contracts/stakingPool.algo.ts:1028","pc":[4090,4091]},{"teal":4336,"source":"contracts/stakingPool.algo.ts:1028","pc":[4092,4093]},{"teal":4337,"source":"contracts/stakingPool.algo.ts:1028","pc":[4094]},{"teal":4341,"source":"contracts/stakingPool.algo.ts:1029","pc":[4095]},{"teal":4347,"source":"contracts/stakingPool.algo.ts:1033","pc":[4096,4097]},{"teal":4348,"source":"contracts/stakingPool.algo.ts:1033","pc":[4098]},{"teal":4349,"source":"contracts/stakingPool.algo.ts:1033","pc":[4099]},{"teal":4350,"source":"contracts/stakingPool.algo.ts:1033","pc":[4100,4101]},{"teal":4351,"source":"contracts/stakingPool.algo.ts:1033","pc":[4102,4103]},{"teal":4352,"source":"contracts/stakingPool.algo.ts:1033","pc":[4104,4105]},{"teal":4353,"source":"contracts/stakingPool.algo.ts:1033","pc":[4106]},{"teal":4354,"source":"contracts/stakingPool.algo.ts:1033","pc":[4107,4108]},{"teal":4355,"source":"contracts/stakingPool.algo.ts:1033","pc":[4109]},{"teal":4356,"source":"contracts/stakingPool.algo.ts:1032","pc":[4110,4111]},{"teal":4361,"source":"contracts/stakingPool.algo.ts:1034","pc":[4112,4113]},{"teal":4362,"source":"contracts/stakingPool.algo.ts:1034","pc":[4114]},{"teal":4363,"source":"contracts/stakingPool.algo.ts:1034","pc":[4115]},{"teal":4364,"source":"contracts/stakingPool.algo.ts:1034","pc":[4116,4117,4118]},{"teal":4369,"source":"contracts/stakingPool.algo.ts:1036","pc":[4119,4120]},{"teal":4370,"source":"contracts/stakingPool.algo.ts:1036","pc":[4121,4122]},{"teal":4371,"source":"contracts/stakingPool.algo.ts:1036","pc":[4123]},{"teal":4375,"source":"contracts/stakingPool.algo.ts:1037","pc":[4124]},{"teal":4380,"source":"contracts/stakingPool.algo.ts:1042","pc":[4125,4126]},{"teal":4381,"source":"contracts/stakingPool.algo.ts:1042","pc":[4127,4128,4129,4130]},{"teal":4382,"source":"contracts/stakingPool.algo.ts:1042","pc":[4131,4132]},{"teal":4383,"source":"contracts/stakingPool.algo.ts:1042","pc":[4133]},{"teal":4384,"source":"contracts/stakingPool.algo.ts:1042","pc":[4134]},{"teal":4385,"source":"contracts/stakingPool.algo.ts:1021","pc":[4135]},{"teal":4388,"source":"contracts/stakingPool.algo.ts:37","pc":[4136,4137,4138,4139,4140,4141]},{"teal":4389,"source":"contracts/stakingPool.algo.ts:37","pc":[4142,4143,4144]},{"teal":4390,"source":"contracts/stakingPool.algo.ts:37","pc":[4145,4146,4147,4148]},{"teal":4393,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4149]},{"teal":4396,"source":"contracts/stakingPool.algo.ts:37","pc":[4150,4151,4152,4153,4154,4155]},{"teal":4397,"source":"contracts/stakingPool.algo.ts:37","pc":[4156,4157,4158,4159,4160,4161]},{"teal":4398,"source":"contracts/stakingPool.algo.ts:37","pc":[4162,4163,4164,4165,4166,4167]},{"teal":4399,"source":"contracts/stakingPool.algo.ts:37","pc":[4168,4169,4170,4171,4172,4173]},{"teal":4400,"source":"contracts/stakingPool.algo.ts:37","pc":[4174,4175,4176,4177,4178,4179]},{"teal":4401,"source":"contracts/stakingPool.algo.ts:37","pc":[4180,4181,4182,4183,4184,4185]},{"teal":4402,"source":"contracts/stakingPool.algo.ts:37","pc":[4186,4187,4188,4189,4190,4191]},{"teal":4403,"source":"contracts/stakingPool.algo.ts:37","pc":[4192,4193,4194,4195,4196,4197]},{"teal":4404,"source":"contracts/stakingPool.algo.ts:37","pc":[4198,4199,4200,4201,4202,4203]},{"teal":4405,"source":"contracts/stakingPool.algo.ts:37","pc":[4204,4205,4206,4207,4208,4209]},{"teal":4406,"source":"contracts/stakingPool.algo.ts:37","pc":[4210,4211,4212,4213,4214,4215]},{"teal":4407,"source":"contracts/stakingPool.algo.ts:37","pc":[4216,4217,4218,4219,4220,4221]},{"teal":4408,"source":"contracts/stakingPool.algo.ts:37","pc":[4222,4223]},{"teal":4409,"source":"contracts/stakingPool.algo.ts:37","pc":[4224,4225,4226]},{"teal":4410,"source":"contracts/stakingPool.algo.ts:37","pc":[4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254]},{"teal":4413,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4255]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/stakingPool.algo.ts:37","pc":[1,2]},{"teal":16,"source":"contracts/stakingPool.algo.ts:37","pc":[3]},{"teal":17,"source":"contracts/stakingPool.algo.ts:37","pc":[4]},{"teal":18,"source":"contracts/stakingPool.algo.ts:37","pc":[5]},{"teal":19,"source":"contracts/stakingPool.algo.ts:37","pc":[6,7]},{"teal":20,"source":"contracts/stakingPool.algo.ts:37","pc":[8]},{"teal":21,"source":"contracts/stakingPool.algo.ts:37","pc":[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]},{"teal":25,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[35]},{"teal":30,"source":"contracts/stakingPool.algo.ts:101","pc":[36,37,38]},{"teal":31,"source":"contracts/stakingPool.algo.ts:101","pc":[39]},{"teal":34,"source":"contracts/stakingPool.algo.ts:101","pc":[40,41,42]},{"teal":35,"source":"contracts/stakingPool.algo.ts:101","pc":[43]},{"teal":38,"source":"contracts/stakingPool.algo.ts:101","pc":[44,45,46]},{"teal":39,"source":"contracts/stakingPool.algo.ts:101","pc":[47]},{"teal":42,"source":"contracts/stakingPool.algo.ts:101","pc":[48,49,50]},{"teal":43,"source":"contracts/stakingPool.algo.ts:101","pc":[51]},{"teal":46,"source":"contracts/stakingPool.algo.ts:101","pc":[52,53,54]},{"teal":47,"source":"contracts/stakingPool.algo.ts:101","pc":[55]},{"teal":48,"source":"contracts/stakingPool.algo.ts:101","pc":[56]},{"teal":58,"source":"contracts/stakingPool.algo.ts:101","pc":[57,58,59]},{"teal":63,"source":"contracts/stakingPool.algo.ts:102","pc":[60,61]},{"teal":64,"source":"contracts/stakingPool.algo.ts:102","pc":[62]},{"teal":65,"source":"contracts/stakingPool.algo.ts:102","pc":[63]},{"teal":66,"source":"contracts/stakingPool.algo.ts:102","pc":[64,65,66]},{"teal":71,"source":"contracts/stakingPool.algo.ts:104","pc":[67,68]},{"teal":72,"source":"contracts/stakingPool.algo.ts:104","pc":[69]},{"teal":73,"source":"contracts/stakingPool.algo.ts:104","pc":[70]},{"teal":74,"source":"contracts/stakingPool.algo.ts:104","pc":[71]},{"teal":78,"source":"contracts/stakingPool.algo.ts:105","pc":[72,73]},{"teal":79,"source":"contracts/stakingPool.algo.ts:105","pc":[74]},{"teal":80,"source":"contracts/stakingPool.algo.ts:105","pc":[75]},{"teal":81,"source":"contracts/stakingPool.algo.ts:105","pc":[76]},{"teal":82,"source":"contracts/stakingPool.algo.ts:102","pc":[77,78,79]},{"teal":87,"source":"contracts/stakingPool.algo.ts:107","pc":[80,81]},{"teal":88,"source":"contracts/stakingPool.algo.ts:107","pc":[82]},{"teal":89,"source":"contracts/stakingPool.algo.ts:107","pc":[83]},{"teal":90,"source":"contracts/stakingPool.algo.ts:107","pc":[84]},{"teal":94,"source":"contracts/stakingPool.algo.ts:108","pc":[85,86]},{"teal":95,"source":"contracts/stakingPool.algo.ts:108","pc":[87]},{"teal":96,"source":"contracts/stakingPool.algo.ts:108","pc":[88]},{"teal":97,"source":"contracts/stakingPool.algo.ts:108","pc":[89]},{"teal":102,"source":"contracts/stakingPool.algo.ts:110","pc":[90,91]},{"teal":103,"source":"contracts/stakingPool.algo.ts:110","pc":[92,93,94,95]},{"teal":104,"source":"contracts/stakingPool.algo.ts:110","pc":[96]},{"teal":107,"source":"contracts/stakingPool.algo.ts:110","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[97]},{"teal":111,"source":"contracts/stakingPool.algo.ts:111","pc":[98]},{"teal":112,"source":"contracts/stakingPool.algo.ts:111","pc":[99,100]},{"teal":113,"source":"contracts/stakingPool.algo.ts:111","pc":[101]},{"teal":117,"source":"contracts/stakingPool.algo.ts:112","pc":[102]},{"teal":118,"source":"contracts/stakingPool.algo.ts:112","pc":[103,104]},{"teal":119,"source":"contracts/stakingPool.algo.ts:112","pc":[105]},{"teal":123,"source":"contracts/stakingPool.algo.ts:113","pc":[106,107]},{"teal":124,"source":"contracts/stakingPool.algo.ts:113","pc":[108,109]},{"teal":125,"source":"contracts/stakingPool.algo.ts:113","pc":[110]},{"teal":129,"source":"contracts/stakingPool.algo.ts:114","pc":[111,112]},{"teal":130,"source":"contracts/stakingPool.algo.ts:114","pc":[113]},{"teal":131,"source":"contracts/stakingPool.algo.ts:114","pc":[114]},{"teal":135,"source":"contracts/stakingPool.algo.ts:115","pc":[115,116]},{"teal":136,"source":"contracts/stakingPool.algo.ts:115","pc":[117]},{"teal":137,"source":"contracts/stakingPool.algo.ts:115","pc":[118]},{"teal":141,"source":"contracts/stakingPool.algo.ts:116","pc":[119,120]},{"teal":142,"source":"contracts/stakingPool.algo.ts:116","pc":[121,122]},{"teal":143,"source":"contracts/stakingPool.algo.ts:116","pc":[123]},{"teal":147,"source":"contracts/stakingPool.algo.ts:117","pc":[124,125]},{"teal":148,"source":"contracts/stakingPool.algo.ts:117","pc":[126,127]},{"teal":149,"source":"contracts/stakingPool.algo.ts:117","pc":[128]},{"teal":153,"source":"contracts/stakingPool.algo.ts:118","pc":[129,130]},{"teal":154,"source":"contracts/stakingPool.algo.ts:118","pc":[131]},{"teal":155,"source":"contracts/stakingPool.algo.ts:118","pc":[132]},{"teal":159,"source":"contracts/stakingPool.algo.ts:120","pc":[133,134,135]},{"teal":163,"source":"contracts/stakingPool.algo.ts:121","pc":[136,137]},{"teal":164,"source":"contracts/stakingPool.algo.ts:121","pc":[138,139]},{"teal":165,"source":"contracts/stakingPool.algo.ts:121","pc":[140,141]},{"teal":166,"source":"contracts/stakingPool.algo.ts:121","pc":[142,143]},{"teal":167,"source":"contracts/stakingPool.algo.ts:121","pc":[144]},{"teal":168,"source":"contracts/stakingPool.algo.ts:121","pc":[145]},{"teal":169,"source":"contracts/stakingPool.algo.ts:121","pc":[146]},{"teal":170,"source":"contracts/stakingPool.algo.ts:121","pc":[147]},{"teal":174,"source":"contracts/stakingPool.algo.ts:122","pc":[148,149]},{"teal":175,"source":"contracts/stakingPool.algo.ts:122","pc":[150,151]},{"teal":176,"source":"contracts/stakingPool.algo.ts:122","pc":[152]},{"teal":180,"source":"contracts/stakingPool.algo.ts:123","pc":[153,154]},{"teal":181,"source":"contracts/stakingPool.algo.ts:123","pc":[155]},{"teal":182,"source":"contracts/stakingPool.algo.ts:123","pc":[156]},{"teal":186,"source":"contracts/stakingPool.algo.ts:124","pc":[157,158]},{"teal":187,"source":"contracts/stakingPool.algo.ts:124","pc":[159,160]},{"teal":188,"source":"contracts/stakingPool.algo.ts:124","pc":[161]},{"teal":189,"source":"contracts/stakingPool.algo.ts:101","pc":[162]},{"teal":194,"source":"contracts/stakingPool.algo.ts:130","pc":[163,164,165]},{"teal":195,"source":"contracts/stakingPool.algo.ts:130","pc":[166]},{"teal":196,"source":"contracts/stakingPool.algo.ts:130","pc":[167]},{"teal":202,"source":"contracts/stakingPool.algo.ts:130","pc":[168,169,170]},{"teal":203,"source":"contracts/stakingPool.algo.ts:130","pc":[171]},{"teal":207,"source":"contracts/stakingPool.algo.ts:132","pc":[172,173,174]},{"teal":211,"source":"contracts/stakingPool.algo.ts:136","pc":[175,176,177]},{"teal":212,"source":"contracts/stakingPool.algo.ts:136","pc":[178,179]},{"teal":213,"source":"contracts/stakingPool.algo.ts:136","pc":[180,181]},{"teal":214,"source":"contracts/stakingPool.algo.ts:136","pc":[182]},{"teal":215,"source":"contracts/stakingPool.algo.ts:136","pc":[183]},{"teal":216,"source":"contracts/stakingPool.algo.ts:132","pc":[184]},{"teal":221,"source":"contracts/stakingPool.algo.ts:146","pc":[185,186]},{"teal":222,"source":"contracts/stakingPool.algo.ts:146","pc":[187]},{"teal":223,"source":"contracts/stakingPool.algo.ts:146","pc":[188]},{"teal":224,"source":"contracts/stakingPool.algo.ts:146","pc":[189]},{"teal":225,"source":"contracts/stakingPool.algo.ts:146","pc":[190,191]},{"teal":226,"source":"contracts/stakingPool.algo.ts:146","pc":[192]},{"teal":227,"source":"contracts/stakingPool.algo.ts:146","pc":[193]},{"teal":230,"source":"contracts/stakingPool.algo.ts:146","errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[194]},{"teal":233,"source":"contracts/stakingPool.algo.ts:146","pc":[195,196,197]},{"teal":234,"source":"contracts/stakingPool.algo.ts:146","pc":[198]},{"teal":235,"source":"contracts/stakingPool.algo.ts:146","pc":[199]},{"teal":245,"source":"contracts/stakingPool.algo.ts:146","pc":[200,201,202]},{"teal":248,"source":"contracts/stakingPool.algo.ts:146","pc":[203]},{"teal":249,"source":"contracts/stakingPool.algo.ts:146","pc":[204,205]},{"teal":253,"source":"contracts/stakingPool.algo.ts:147","pc":[206]},{"teal":254,"source":"contracts/stakingPool.algo.ts:147","pc":[207]},{"teal":255,"source":"contracts/stakingPool.algo.ts:147","pc":[208]},{"teal":256,"source":"contracts/stakingPool.algo.ts:147","pc":[209]},{"teal":257,"source":"contracts/stakingPool.algo.ts:147","pc":[210]},{"teal":260,"source":"contracts/stakingPool.algo.ts:147","errorMessage":"staking pool already initialized","pc":[211]},{"teal":267,"source":"contracts/stakingPool.algo.ts:150","pc":[212]},{"teal":268,"source":"contracts/stakingPool.algo.ts:150","pc":[213]},{"teal":269,"source":"contracts/stakingPool.algo.ts:150","pc":[214,215]},{"teal":270,"source":"contracts/stakingPool.algo.ts:150","pc":[216,217]},{"teal":271,"source":"contracts/stakingPool.algo.ts:150","pc":[218,219]},{"teal":275,"source":"contracts/stakingPool.algo.ts:151","pc":[220]},{"teal":276,"source":"contracts/stakingPool.algo.ts:151","pc":[221]},{"teal":277,"source":"contracts/stakingPool.algo.ts:151","pc":[222,223]},{"teal":281,"source":"contracts/stakingPool.algo.ts:152","pc":[224]},{"teal":282,"source":"contracts/stakingPool.algo.ts:152","pc":[225]},{"teal":283,"source":"contracts/stakingPool.algo.ts:152","pc":[226]},{"teal":284,"source":"contracts/stakingPool.algo.ts:152","pc":[227,228]},{"teal":287,"source":"contracts/stakingPool.algo.ts:150","pc":[229]},{"teal":288,"source":"contracts/stakingPool.algo.ts:150","pc":[230,231]},{"teal":291,"source":"contracts/stakingPool.algo.ts:150","pc":[232]},{"teal":292,"source":"contracts/stakingPool.algo.ts:150","pc":[233,234]},{"teal":293,"source":"contracts/stakingPool.algo.ts:150","pc":[235]},{"teal":294,"source":"contracts/stakingPool.algo.ts:150","pc":[236]},{"teal":295,"source":"contracts/stakingPool.algo.ts:150","pc":[237,238]},{"teal":296,"source":"contracts/stakingPool.algo.ts:150","pc":[239,240,241]},{"teal":297,"source":"contracts/stakingPool.algo.ts:150","pc":[242,243]},{"teal":301,"source":"contracts/stakingPool.algo.ts:154","pc":[244,245]},{"teal":302,"source":"contracts/stakingPool.algo.ts:154","pc":[246,247,248]},{"teal":303,"source":"contracts/stakingPool.algo.ts:154","pc":[249]},{"teal":304,"source":"contracts/stakingPool.algo.ts:154","pc":[250]},{"teal":305,"source":"contracts/stakingPool.algo.ts:154","pc":[251]},{"teal":306,"source":"contracts/stakingPool.algo.ts:154","pc":[252,253]},{"teal":310,"source":"contracts/stakingPool.algo.ts:155","pc":[254,255]},{"teal":311,"source":"contracts/stakingPool.algo.ts:155","pc":[256]},{"teal":312,"source":"contracts/stakingPool.algo.ts:155","pc":[257,258,259]},{"teal":313,"source":"contracts/stakingPool.algo.ts:155","pc":[260,261]},{"teal":314,"source":"contracts/stakingPool.algo.ts:155","pc":[262]},{"teal":315,"source":"contracts/stakingPool.algo.ts:155","pc":[263]},{"teal":316,"source":"contracts/stakingPool.algo.ts:155","pc":[264]},{"teal":317,"source":"contracts/stakingPool.algo.ts:155","pc":[265]},{"teal":320,"source":"contracts/stakingPool.algo.ts:155","pc":[266,267,268]},{"teal":321,"source":"contracts/stakingPool.algo.ts:155","pc":[269,270]},{"teal":322,"source":"contracts/stakingPool.algo.ts:155","pc":[271,272,273]},{"teal":325,"source":"contracts/stakingPool.algo.ts:155","pc":[274]},{"teal":328,"source":"contracts/stakingPool.algo.ts:155","pc":[275,276]},{"teal":335,"source":"contracts/stakingPool.algo.ts:157","pc":[277,278]},{"teal":336,"source":"contracts/stakingPool.algo.ts:158","pc":[279,280]},{"teal":337,"source":"contracts/stakingPool.algo.ts:157","pc":[281]},{"teal":338,"source":"contracts/stakingPool.algo.ts:159","pc":[282,283,284]},{"teal":339,"source":"contracts/stakingPool.algo.ts:159","pc":[285,286,287]},{"teal":340,"source":"contracts/stakingPool.algo.ts:158","pc":[288]},{"teal":341,"source":"contracts/stakingPool.algo.ts:156","pc":[289,290]},{"teal":346,"source":"contracts/stakingPool.algo.ts:162","pc":[291,292]},{"teal":347,"source":"contracts/stakingPool.algo.ts:162","pc":[293,294]},{"teal":348,"source":"contracts/stakingPool.algo.ts:162","pc":[295,296]},{"teal":349,"source":"contracts/stakingPool.algo.ts:162","pc":[297]},{"teal":352,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[298]},{"teal":355,"source":"contracts/stakingPool.algo.ts:162","pc":[299,300]},{"teal":356,"source":"contracts/stakingPool.algo.ts:162","pc":[301,302]},{"teal":357,"source":"contracts/stakingPool.algo.ts:162","pc":[303,304]},{"teal":358,"source":"contracts/stakingPool.algo.ts:162","pc":[305]},{"teal":361,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[306]},{"teal":365,"source":"contracts/stakingPool.algo.ts:163","pc":[307]},{"teal":366,"source":"contracts/stakingPool.algo.ts:163","pc":[308,309,310]},{"teal":367,"source":"contracts/stakingPool.algo.ts:163","pc":[311]},{"teal":368,"source":"contracts/stakingPool.algo.ts:163","pc":[312]},{"teal":373,"source":"contracts/stakingPool.algo.ts:165","pc":[313,314]},{"teal":374,"source":"contracts/stakingPool.algo.ts:165","pc":[315]},{"teal":375,"source":"contracts/stakingPool.algo.ts:165","pc":[316,317,318]},{"teal":376,"source":"contracts/stakingPool.algo.ts:165","pc":[319,320]},{"teal":377,"source":"contracts/stakingPool.algo.ts:165","pc":[321]},{"teal":378,"source":"contracts/stakingPool.algo.ts:165","pc":[322]},{"teal":379,"source":"contracts/stakingPool.algo.ts:165","pc":[323]},{"teal":380,"source":"contracts/stakingPool.algo.ts:165","pc":[324]},{"teal":383,"source":"contracts/stakingPool.algo.ts:165","pc":[325,326,327]},{"teal":392,"source":"contracts/stakingPool.algo.ts:167","pc":[328]},{"teal":393,"source":"contracts/stakingPool.algo.ts:167","pc":[329,330]},{"teal":394,"source":"contracts/stakingPool.algo.ts:167","pc":[331,332]},{"teal":398,"source":"contracts/stakingPool.algo.ts:168","pc":[333,334]},{"teal":399,"source":"contracts/stakingPool.algo.ts:168","pc":[335,336,337]},{"teal":400,"source":"contracts/stakingPool.algo.ts:168","pc":[338]},{"teal":401,"source":"contracts/stakingPool.algo.ts:168","pc":[339,340]},{"teal":405,"source":"contracts/stakingPool.algo.ts:169","pc":[341,342]},{"teal":406,"source":"contracts/stakingPool.algo.ts:169","pc":[343,344]},{"teal":410,"source":"contracts/stakingPool.algo.ts:170","pc":[345]},{"teal":411,"source":"contracts/stakingPool.algo.ts:170","pc":[346,347]},{"teal":414,"source":"contracts/stakingPool.algo.ts:167","pc":[348]},{"teal":415,"source":"contracts/stakingPool.algo.ts:167","pc":[349,350]},{"teal":418,"source":"contracts/stakingPool.algo.ts:167","pc":[351]},{"teal":421,"source":"contracts/stakingPool.algo.ts:146","pc":[352]},{"teal":426,"source":"contracts/stakingPool.algo.ts:185","pc":[353,354]},{"teal":429,"source":"contracts/stakingPool.algo.ts:185","pc":[355,356,357]},{"teal":430,"source":"contracts/stakingPool.algo.ts:185","pc":[358]},{"teal":431,"source":"contracts/stakingPool.algo.ts:185","pc":[359]},{"teal":432,"source":"contracts/stakingPool.algo.ts:185","pc":[360,361]},{"teal":433,"source":"contracts/stakingPool.algo.ts:185","pc":[362]},{"teal":436,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 0 (staker) for addStake must be a address","pc":[363]},{"teal":439,"source":"contracts/stakingPool.algo.ts:185","pc":[364,365]},{"teal":440,"source":"contracts/stakingPool.algo.ts:185","pc":[366]},{"teal":441,"source":"contracts/stakingPool.algo.ts:185","pc":[367]},{"teal":442,"source":"contracts/stakingPool.algo.ts:185","pc":[368]},{"teal":443,"source":"contracts/stakingPool.algo.ts:185","pc":[369,370]},{"teal":444,"source":"contracts/stakingPool.algo.ts:185","pc":[371]},{"teal":445,"source":"contracts/stakingPool.algo.ts:185","pc":[372]},{"teal":448,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[373]},{"teal":451,"source":"contracts/stakingPool.algo.ts:185","pc":[374,375,376]},{"teal":452,"source":"contracts/stakingPool.algo.ts:185","pc":[377]},{"teal":453,"source":"contracts/stakingPool.algo.ts:185","pc":[378]},{"teal":454,"source":"contracts/stakingPool.algo.ts:185","pc":[379]},{"teal":455,"source":"contracts/stakingPool.algo.ts:185","pc":[380]},{"teal":456,"source":"contracts/stakingPool.algo.ts:185","pc":[381]},{"teal":469,"source":"contracts/stakingPool.algo.ts:185","pc":[382,383,384]},{"teal":472,"source":"contracts/stakingPool.algo.ts:185","pc":[385]},{"teal":473,"source":"contracts/stakingPool.algo.ts:185","pc":[386,387]},{"teal":477,"source":"contracts/stakingPool.algo.ts:186","pc":[388]},{"teal":478,"source":"contracts/stakingPool.algo.ts:186","pc":[389]},{"teal":479,"source":"contracts/stakingPool.algo.ts:186","pc":[390]},{"teal":480,"source":"contracts/stakingPool.algo.ts:186","pc":[391]},{"teal":483,"source":"contracts/stakingPool.algo.ts:186","errorMessage":"staking pool must be initialized first","pc":[392]},{"teal":490,"source":"contracts/stakingPool.algo.ts:190","pc":[393,394]},{"teal":491,"source":"contracts/stakingPool.algo.ts:190","pc":[395]},{"teal":492,"source":"contracts/stakingPool.algo.ts:190","pc":[396]},{"teal":493,"source":"contracts/stakingPool.algo.ts:190","pc":[397,398]},{"teal":494,"source":"contracts/stakingPool.algo.ts:190","pc":[399]},{"teal":495,"source":"contracts/stakingPool.algo.ts:190","pc":[400]},{"teal":498,"source":"contracts/stakingPool.algo.ts:189","errorMessage":"stake can only be added via the validator contract","pc":[401]},{"teal":502,"source":"contracts/stakingPool.algo.ts:193","pc":[402,403]},{"teal":503,"source":"contracts/stakingPool.algo.ts:193","pc":[404,405]},{"teal":504,"source":"contracts/stakingPool.algo.ts:193","pc":[406]},{"teal":505,"source":"contracts/stakingPool.algo.ts:193","pc":[407]},{"teal":509,"source":"contracts/stakingPool.algo.ts:196","pc":[408,409,410]},{"teal":518,"source":"contracts/stakingPool.algo.ts:200","pc":[411,412]},{"teal":519,"source":"contracts/stakingPool.algo.ts:201","pc":[413,414]},{"teal":520,"source":"contracts/stakingPool.algo.ts:201","pc":[415]},{"teal":521,"source":"contracts/stakingPool.algo.ts:201","pc":[416]},{"teal":522,"source":"contracts/stakingPool.algo.ts:201","pc":[417,418]},{"teal":523,"source":"contracts/stakingPool.algo.ts:201","pc":[419]},{"teal":524,"source":"contracts/stakingPool.algo.ts:201","pc":[420]},{"teal":527,"source":"contracts/stakingPool.algo.ts:201","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[421]},{"teal":530,"source":"contracts/stakingPool.algo.ts:200","pc":[422,423]},{"teal":531,"source":"contracts/stakingPool.algo.ts:202","pc":[424,425]},{"teal":532,"source":"contracts/stakingPool.algo.ts:202","pc":[426,427]},{"teal":533,"source":"contracts/stakingPool.algo.ts:202","pc":[428]},{"teal":536,"source":"contracts/stakingPool.algo.ts:202","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[429]},{"teal":539,"source":"contracts/stakingPool.algo.ts:200","pc":[430,431]},{"teal":540,"source":"contracts/stakingPool.algo.ts:203","pc":[432,433]},{"teal":541,"source":"contracts/stakingPool.algo.ts:203","pc":[434,435]},{"teal":542,"source":"contracts/stakingPool.algo.ts:203","pc":[436,437]},{"teal":543,"source":"contracts/stakingPool.algo.ts:203","pc":[438]},{"teal":546,"source":"contracts/stakingPool.algo.ts:203","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[439]},{"teal":550,"source":"contracts/stakingPool.algo.ts:209","pc":[440,441]},{"teal":551,"source":"contracts/stakingPool.algo.ts:209","pc":[442,443,444]},{"teal":552,"source":"contracts/stakingPool.algo.ts:209","pc":[445]},{"teal":553,"source":"contracts/stakingPool.algo.ts:209","pc":[446,447]},{"teal":557,"source":"contracts/stakingPool.algo.ts:210","pc":[448]},{"teal":558,"source":"contracts/stakingPool.algo.ts:210","pc":[449,450]},{"teal":562,"source":"contracts/stakingPool.algo.ts:212","pc":[451,452]},{"teal":563,"source":"contracts/stakingPool.algo.ts:212","pc":[453]},{"teal":564,"source":"contracts/stakingPool.algo.ts:212","pc":[454,455]},{"teal":565,"source":"contracts/stakingPool.algo.ts:212","pc":[456,457]},{"teal":566,"source":"contracts/stakingPool.algo.ts:212","pc":[458]},{"teal":567,"source":"contracts/stakingPool.algo.ts:212","pc":[459,460]},{"teal":568,"source":"contracts/stakingPool.algo.ts:212","pc":[461]},{"teal":569,"source":"contracts/stakingPool.algo.ts:212","pc":[462]},{"teal":573,"source":"contracts/stakingPool.algo.ts:214","pc":[463,464]},{"teal":574,"source":"contracts/stakingPool.algo.ts:214","pc":[465]},{"teal":575,"source":"contracts/stakingPool.algo.ts:214","pc":[466,467]},{"teal":576,"source":"contracts/stakingPool.algo.ts:214","pc":[468]},{"teal":577,"source":"contracts/stakingPool.algo.ts:214","pc":[469]},{"teal":578,"source":"contracts/stakingPool.algo.ts:214","pc":[470,471]},{"teal":579,"source":"contracts/stakingPool.algo.ts:214","pc":[472]},{"teal":580,"source":"contracts/stakingPool.algo.ts:214","pc":[473,474]},{"teal":585,"source":"contracts/stakingPool.algo.ts:215","pc":[475,476]},{"teal":586,"source":"contracts/stakingPool.algo.ts:215","pc":[477]},{"teal":587,"source":"contracts/stakingPool.algo.ts:216","pc":[478]},{"teal":588,"source":"contracts/stakingPool.algo.ts:216","pc":[479,480]},{"teal":589,"source":"contracts/stakingPool.algo.ts:216","pc":[481,482]},{"teal":590,"source":"contracts/stakingPool.algo.ts:216","pc":[483]},{"teal":591,"source":"contracts/stakingPool.algo.ts:216","pc":[484,485]},{"teal":592,"source":"contracts/stakingPool.algo.ts:216","pc":[486]},{"teal":593,"source":"contracts/stakingPool.algo.ts:216","pc":[487]},{"teal":594,"source":"contracts/stakingPool.algo.ts:216","pc":[488]},{"teal":595,"source":"contracts/stakingPool.algo.ts:216","pc":[489]},{"teal":596,"source":"contracts/stakingPool.algo.ts:216","pc":[490]},{"teal":597,"source":"contracts/stakingPool.algo.ts:216","pc":[491,492]},{"teal":598,"source":"contracts/stakingPool.algo.ts:216","pc":[493]},{"teal":601,"source":"contracts/stakingPool.algo.ts:216","errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[494]},{"teal":602,"source":"contracts/stakingPool.algo.ts:216","pc":[495,496]},{"teal":603,"source":"contracts/stakingPool.algo.ts:216","pc":[497]},{"teal":604,"source":"contracts/stakingPool.algo.ts:216","pc":[498]},{"teal":605,"source":"contracts/stakingPool.algo.ts:216","pc":[499]},{"teal":606,"source":"contracts/stakingPool.algo.ts:216","pc":[500]},{"teal":607,"source":"contracts/stakingPool.algo.ts:216","pc":[501,502]},{"teal":608,"source":"contracts/stakingPool.algo.ts:216","pc":[503]},{"teal":609,"source":"contracts/stakingPool.algo.ts:216","pc":[504]},{"teal":610,"source":"contracts/stakingPool.algo.ts:216","pc":[505]},{"teal":611,"source":"contracts/stakingPool.algo.ts:215","pc":[506]},{"teal":615,"source":"contracts/stakingPool.algo.ts:219","pc":[507]},{"teal":616,"source":"contracts/stakingPool.algo.ts:219","pc":[508,509]},{"teal":621,"source":"contracts/stakingPool.algo.ts:219","pc":[510,511]},{"teal":622,"source":"contracts/stakingPool.algo.ts:219","pc":[512,513]},{"teal":623,"source":"contracts/stakingPool.algo.ts:219","pc":[514]},{"teal":624,"source":"contracts/stakingPool.algo.ts:219","pc":[515,516,517]},{"teal":629,"source":"contracts/stakingPool.algo.ts:220","pc":[518,519]},{"teal":630,"source":"contracts/stakingPool.algo.ts:220","pc":[520,521]},{"teal":631,"source":"contracts/stakingPool.algo.ts:220","pc":[522]},{"teal":632,"source":"contracts/stakingPool.algo.ts:220","pc":[523,524,525]},{"teal":637,"source":"contracts/stakingPool.algo.ts:221","pc":[526]},{"teal":638,"source":"contracts/stakingPool.algo.ts:221","pc":[527]},{"teal":639,"source":"contracts/stakingPool.algo.ts:221","pc":[528,529]},{"teal":640,"source":"contracts/stakingPool.algo.ts:221","pc":[530]},{"teal":641,"source":"contracts/stakingPool.algo.ts:221","pc":[531,532]},{"teal":642,"source":"contracts/stakingPool.algo.ts:221","pc":[533,534]},{"teal":643,"source":"contracts/stakingPool.algo.ts:221","pc":[535]},{"teal":644,"source":"contracts/stakingPool.algo.ts:221","pc":[536,537]},{"teal":645,"source":"contracts/stakingPool.algo.ts:221","pc":[538,539]},{"teal":646,"source":"contracts/stakingPool.algo.ts:221","pc":[540,541]},{"teal":647,"source":"contracts/stakingPool.algo.ts:221","pc":[542,543]},{"teal":648,"source":"contracts/stakingPool.algo.ts:221","pc":[544]},{"teal":653,"source":"contracts/stakingPool.algo.ts:223","pc":[545,546]},{"teal":654,"source":"contracts/stakingPool.algo.ts:223","pc":[547]},{"teal":655,"source":"contracts/stakingPool.algo.ts:223","pc":[548]},{"teal":656,"source":"contracts/stakingPool.algo.ts:223","pc":[549]},{"teal":657,"source":"contracts/stakingPool.algo.ts:223","pc":[550]},{"teal":658,"source":"contracts/stakingPool.algo.ts:223","pc":[551,552]},{"teal":659,"source":"contracts/stakingPool.algo.ts:223","pc":[553]},{"teal":660,"source":"contracts/stakingPool.algo.ts:223","pc":[554,555]},{"teal":665,"source":"contracts/stakingPool.algo.ts:224","pc":[556,557]},{"teal":666,"source":"contracts/stakingPool.algo.ts:224","pc":[558,559,560]},{"teal":667,"source":"contracts/stakingPool.algo.ts:224","pc":[561,562]},{"teal":668,"source":"contracts/stakingPool.algo.ts:224","pc":[563]},{"teal":669,"source":"contracts/stakingPool.algo.ts:224","pc":[564,565,566]},{"teal":674,"source":"contracts/stakingPool.algo.ts:226","pc":[567,568]},{"teal":675,"source":"contracts/stakingPool.algo.ts:226","pc":[569,570]},{"teal":676,"source":"contracts/stakingPool.algo.ts:226","pc":[571,572]},{"teal":677,"source":"contracts/stakingPool.algo.ts:226","pc":[573,574,575]},{"teal":678,"source":"contracts/stakingPool.algo.ts:226","pc":[576]},{"teal":679,"source":"contracts/stakingPool.algo.ts:226","pc":[577,578]},{"teal":680,"source":"contracts/stakingPool.algo.ts:226","pc":[579,580]},{"teal":681,"source":"contracts/stakingPool.algo.ts:226","pc":[581]},{"teal":682,"source":"contracts/stakingPool.algo.ts:226","pc":[582]},{"teal":683,"source":"contracts/stakingPool.algo.ts:226","pc":[583]},{"teal":684,"source":"contracts/stakingPool.algo.ts:226","pc":[584,585]},{"teal":688,"source":"contracts/stakingPool.algo.ts:227","pc":[586,587]},{"teal":689,"source":"contracts/stakingPool.algo.ts:227","pc":[588,589]},{"teal":690,"source":"contracts/stakingPool.algo.ts:227","pc":[590,591]},{"teal":691,"source":"contracts/stakingPool.algo.ts:227","pc":[592]},{"teal":692,"source":"contracts/stakingPool.algo.ts:227","pc":[593]},{"teal":693,"source":"contracts/stakingPool.algo.ts:227","pc":[594,595]},{"teal":697,"source":"contracts/stakingPool.algo.ts:230","pc":[596,597]},{"teal":698,"source":"contracts/stakingPool.algo.ts:230","pc":[598]},{"teal":699,"source":"contracts/stakingPool.algo.ts:230","pc":[599]},{"teal":700,"source":"contracts/stakingPool.algo.ts:230","pc":[600,601]},{"teal":701,"source":"contracts/stakingPool.algo.ts:230","pc":[602]},{"teal":702,"source":"contracts/stakingPool.algo.ts:230","pc":[603,604]},{"teal":703,"source":"contracts/stakingPool.algo.ts:230","pc":[605]},{"teal":707,"source":"contracts/stakingPool.algo.ts:232","pc":[606,607]},{"teal":708,"source":"contracts/stakingPool.algo.ts:232","pc":[608,609,610]},{"teal":714,"source":"contracts/stakingPool.algo.ts:234","pc":[611,612]},{"teal":715,"source":"contracts/stakingPool.algo.ts:234","pc":[613]},{"teal":716,"source":"contracts/stakingPool.algo.ts:234","pc":[614]},{"teal":717,"source":"contracts/stakingPool.algo.ts:234","pc":[615]},{"teal":718,"source":"contracts/stakingPool.algo.ts:234","pc":[616,617,618]},{"teal":719,"source":"contracts/stakingPool.algo.ts:234","pc":[619,620]},{"teal":720,"source":"contracts/stakingPool.algo.ts:234","pc":[621,622,623]},{"teal":721,"source":"contracts/stakingPool.algo.ts:234","pc":[624,625]},{"teal":722,"source":"contracts/stakingPool.algo.ts:234","pc":[626]},{"teal":723,"source":"contracts/stakingPool.algo.ts:234","pc":[627]},{"teal":726,"source":"contracts/stakingPool.algo.ts:234","pc":[628,629,630]},{"teal":731,"source":"contracts/stakingPool.algo.ts:235","pc":[631,632]},{"teal":732,"source":"contracts/stakingPool.algo.ts:235","pc":[633]},{"teal":733,"source":"contracts/stakingPool.algo.ts:235","pc":[634]},{"teal":734,"source":"contracts/stakingPool.algo.ts:235","pc":[635,636]},{"teal":741,"source":"contracts/stakingPool.algo.ts:219","pc":[637,638]},{"teal":742,"source":"contracts/stakingPool.algo.ts:219","pc":[639]},{"teal":743,"source":"contracts/stakingPool.algo.ts:219","pc":[640]},{"teal":744,"source":"contracts/stakingPool.algo.ts:219","pc":[641,642]},{"teal":745,"source":"contracts/stakingPool.algo.ts:219","pc":[643,644,645]},{"teal":751,"source":"contracts/stakingPool.algo.ts:239","pc":[646,647]},{"teal":752,"source":"contracts/stakingPool.algo.ts:239","pc":[648]},{"teal":753,"source":"contracts/stakingPool.algo.ts:239","pc":[649]},{"teal":754,"source":"contracts/stakingPool.algo.ts:239","pc":[650,651,652]},{"teal":758,"source":"contracts/stakingPool.algo.ts:241","errorMessage":"Staking pool full","pc":[653]},{"teal":763,"source":"contracts/stakingPool.algo.ts:246","pc":[654,655]},{"teal":764,"source":"contracts/stakingPool.algo.ts:246","pc":[656,657]},{"teal":765,"source":"contracts/stakingPool.algo.ts:246","pc":[658,659]},{"teal":766,"source":"contracts/stakingPool.algo.ts:246","pc":[660]},{"teal":767,"source":"contracts/stakingPool.algo.ts:246","pc":[661]},{"teal":770,"source":"contracts/stakingPool.algo.ts:246","errorMessage":"must stake at least the minimum for this pool","pc":[662]},{"teal":774,"source":"contracts/stakingPool.algo.ts:248","pc":[663,664]},{"teal":775,"source":"contracts/stakingPool.algo.ts:248","pc":[665]},{"teal":776,"source":"contracts/stakingPool.algo.ts:248","pc":[666]},{"teal":777,"source":"contracts/stakingPool.algo.ts:248","pc":[667]},{"teal":778,"source":"contracts/stakingPool.algo.ts:248","pc":[668]},{"teal":779,"source":"contracts/stakingPool.algo.ts:248","pc":[669]},{"teal":780,"source":"contracts/stakingPool.algo.ts:248","pc":[670]},{"teal":781,"source":"contracts/stakingPool.algo.ts:248","pc":[671,672]},{"teal":782,"source":"contracts/stakingPool.algo.ts:248","pc":[673]},{"teal":783,"source":"contracts/stakingPool.algo.ts:248","pc":[674,675]},{"teal":784,"source":"contracts/stakingPool.algo.ts:248","pc":[676]},{"teal":785,"source":"contracts/stakingPool.algo.ts:248","pc":[677,678]},{"teal":786,"source":"contracts/stakingPool.algo.ts:248","pc":[679]},{"teal":787,"source":"contracts/stakingPool.algo.ts:248","pc":[680]},{"teal":797,"source":"contracts/stakingPool.algo.ts:249","pc":[681,682]},{"teal":798,"source":"contracts/stakingPool.algo.ts:249","pc":[683]},{"teal":799,"source":"contracts/stakingPool.algo.ts:249","pc":[684]},{"teal":800,"source":"contracts/stakingPool.algo.ts:249","pc":[685]},{"teal":801,"source":"contracts/stakingPool.algo.ts:249","pc":[686]},{"teal":802,"source":"contracts/stakingPool.algo.ts:250","pc":[687,688]},{"teal":803,"source":"contracts/stakingPool.algo.ts:251","pc":[689,690]},{"teal":804,"source":"contracts/stakingPool.algo.ts:251","pc":[691,692]},{"teal":805,"source":"contracts/stakingPool.algo.ts:251","pc":[693]},{"teal":806,"source":"contracts/stakingPool.algo.ts:251","pc":[694]},{"teal":807,"source":"contracts/stakingPool.algo.ts:252","pc":[695,696]},{"teal":808,"source":"contracts/stakingPool.algo.ts:252","pc":[697]},{"teal":809,"source":"contracts/stakingPool.algo.ts:253","pc":[698,699]},{"teal":810,"source":"contracts/stakingPool.algo.ts:253","pc":[700]},{"teal":811,"source":"contracts/stakingPool.algo.ts:254","pc":[701,702]},{"teal":812,"source":"contracts/stakingPool.algo.ts:254","pc":[703]},{"teal":813,"source":"contracts/stakingPool.algo.ts:254","pc":[704]},{"teal":814,"source":"contracts/stakingPool.algo.ts:249","pc":[705]},{"teal":815,"source":"contracts/stakingPool.algo.ts:249","pc":[706,707]},{"teal":816,"source":"contracts/stakingPool.algo.ts:249","pc":[708]},{"teal":820,"source":"contracts/stakingPool.algo.ts:256","pc":[709,710]},{"teal":821,"source":"contracts/stakingPool.algo.ts:256","pc":[711]},{"teal":822,"source":"contracts/stakingPool.algo.ts:256","pc":[712]},{"teal":823,"source":"contracts/stakingPool.algo.ts:256","pc":[713]},{"teal":824,"source":"contracts/stakingPool.algo.ts:256","pc":[714,715]},{"teal":825,"source":"contracts/stakingPool.algo.ts:256","pc":[716]},{"teal":826,"source":"contracts/stakingPool.algo.ts:256","pc":[717]},{"teal":830,"source":"contracts/stakingPool.algo.ts:257","pc":[718,719]},{"teal":834,"source":"contracts/stakingPool.algo.ts:185","pc":[720,721]},{"teal":837,"source":"contracts/stakingPool.algo.ts:185","pc":[722,723]},{"teal":838,"source":"contracts/stakingPool.algo.ts:185","pc":[724]},{"teal":843,"source":"contracts/stakingPool.algo.ts:271","pc":[725,726,727]},{"teal":844,"source":"contracts/stakingPool.algo.ts:271","pc":[728]},{"teal":847,"source":"contracts/stakingPool.algo.ts:271","pc":[729,730,731]},{"teal":848,"source":"contracts/stakingPool.algo.ts:271","pc":[732]},{"teal":849,"source":"contracts/stakingPool.algo.ts:271","pc":[733]},{"teal":850,"source":"contracts/stakingPool.algo.ts:271","pc":[734,735]},{"teal":851,"source":"contracts/stakingPool.algo.ts:271","pc":[736]},{"teal":854,"source":"contracts/stakingPool.algo.ts:271","errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[737]},{"teal":857,"source":"contracts/stakingPool.algo.ts:271","pc":[738,739,740]},{"teal":858,"source":"contracts/stakingPool.algo.ts:271","pc":[741]},{"teal":859,"source":"contracts/stakingPool.algo.ts:271","pc":[742]},{"teal":873,"source":"contracts/stakingPool.algo.ts:271","pc":[743,744,745]},{"teal":876,"source":"contracts/stakingPool.algo.ts:271","pc":[746]},{"teal":877,"source":"contracts/stakingPool.algo.ts:271","pc":[747,748]},{"teal":882,"source":"contracts/stakingPool.algo.ts:274","pc":[749,750]},{"teal":883,"source":"contracts/stakingPool.algo.ts:274","pc":[751,752]},{"teal":884,"source":"contracts/stakingPool.algo.ts:274","pc":[753]},{"teal":885,"source":"contracts/stakingPool.algo.ts:274","pc":[754,755,756]},{"teal":893,"source":"contracts/stakingPool.algo.ts:276","pc":[757,758,759]},{"teal":896,"source":"contracts/stakingPool.algo.ts:275","errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[760]},{"teal":901,"source":"contracts/stakingPool.algo.ts:281","pc":[761,762,763]},{"teal":905,"source":"contracts/stakingPool.algo.ts:283","pc":[764]},{"teal":906,"source":"contracts/stakingPool.algo.ts:283","pc":[765,766]},{"teal":911,"source":"contracts/stakingPool.algo.ts:283","pc":[767,768]},{"teal":912,"source":"contracts/stakingPool.algo.ts:283","pc":[769,770]},{"teal":913,"source":"contracts/stakingPool.algo.ts:283","pc":[771]},{"teal":914,"source":"contracts/stakingPool.algo.ts:283","pc":[772,773,774]},{"teal":919,"source":"contracts/stakingPool.algo.ts:284","pc":[775,776]},{"teal":920,"source":"contracts/stakingPool.algo.ts:284","pc":[777,778]},{"teal":921,"source":"contracts/stakingPool.algo.ts:284","pc":[779]},{"teal":922,"source":"contracts/stakingPool.algo.ts:284","pc":[780,781,782]},{"teal":927,"source":"contracts/stakingPool.algo.ts:285","pc":[783]},{"teal":928,"source":"contracts/stakingPool.algo.ts:285","pc":[784]},{"teal":929,"source":"contracts/stakingPool.algo.ts:285","pc":[785,786]},{"teal":930,"source":"contracts/stakingPool.algo.ts:285","pc":[787]},{"teal":931,"source":"contracts/stakingPool.algo.ts:285","pc":[788,789]},{"teal":932,"source":"contracts/stakingPool.algo.ts:285","pc":[790,791]},{"teal":933,"source":"contracts/stakingPool.algo.ts:285","pc":[792]},{"teal":934,"source":"contracts/stakingPool.algo.ts:285","pc":[793,794]},{"teal":935,"source":"contracts/stakingPool.algo.ts:285","pc":[795,796]},{"teal":936,"source":"contracts/stakingPool.algo.ts:285","pc":[797,798]},{"teal":937,"source":"contracts/stakingPool.algo.ts:285","pc":[799,800]},{"teal":938,"source":"contracts/stakingPool.algo.ts:285","pc":[801]},{"teal":943,"source":"contracts/stakingPool.algo.ts:287","pc":[802,803]},{"teal":944,"source":"contracts/stakingPool.algo.ts:287","pc":[804]},{"teal":945,"source":"contracts/stakingPool.algo.ts:287","pc":[805]},{"teal":946,"source":"contracts/stakingPool.algo.ts:287","pc":[806]},{"teal":947,"source":"contracts/stakingPool.algo.ts:287","pc":[807]},{"teal":948,"source":"contracts/stakingPool.algo.ts:287","pc":[808,809]},{"teal":949,"source":"contracts/stakingPool.algo.ts:287","pc":[810]},{"teal":950,"source":"contracts/stakingPool.algo.ts:287","pc":[811,812]},{"teal":955,"source":"contracts/stakingPool.algo.ts:288","pc":[813,814]},{"teal":956,"source":"contracts/stakingPool.algo.ts:288","pc":[815,816,817]},{"teal":957,"source":"contracts/stakingPool.algo.ts:288","pc":[818,819]},{"teal":958,"source":"contracts/stakingPool.algo.ts:288","pc":[820]},{"teal":959,"source":"contracts/stakingPool.algo.ts:288","pc":[821,822,823]},{"teal":965,"source":"contracts/stakingPool.algo.ts:289","pc":[824,825]},{"teal":966,"source":"contracts/stakingPool.algo.ts:289","pc":[826]},{"teal":967,"source":"contracts/stakingPool.algo.ts:289","pc":[827]},{"teal":968,"source":"contracts/stakingPool.algo.ts:289","pc":[828,829,830]},{"teal":973,"source":"contracts/stakingPool.algo.ts:291","pc":[831,832]},{"teal":974,"source":"contracts/stakingPool.algo.ts:291","pc":[833,834,835]},{"teal":975,"source":"contracts/stakingPool.algo.ts:291","pc":[836]},{"teal":976,"source":"contracts/stakingPool.algo.ts:291","pc":[837,838]},{"teal":982,"source":"contracts/stakingPool.algo.ts:293","pc":[839,840]},{"teal":983,"source":"contracts/stakingPool.algo.ts:293","pc":[841,842,843]},{"teal":984,"source":"contracts/stakingPool.algo.ts:293","pc":[844]},{"teal":985,"source":"contracts/stakingPool.algo.ts:293","pc":[845,846]},{"teal":986,"source":"contracts/stakingPool.algo.ts:293","pc":[847]},{"teal":987,"source":"contracts/stakingPool.algo.ts:293","pc":[848,849,850]},{"teal":991,"source":"contracts/stakingPool.algo.ts:294","errorMessage":"Insufficient balance","pc":[851]},{"teal":996,"source":"contracts/stakingPool.algo.ts:296","pc":[852,853]},{"teal":997,"source":"contracts/stakingPool.algo.ts:296","pc":[854,855]},{"teal":998,"source":"contracts/stakingPool.algo.ts:296","pc":[856,857]},{"teal":999,"source":"contracts/stakingPool.algo.ts:296","pc":[858,859,860]},{"teal":1000,"source":"contracts/stakingPool.algo.ts:296","pc":[861]},{"teal":1001,"source":"contracts/stakingPool.algo.ts:296","pc":[862,863]},{"teal":1002,"source":"contracts/stakingPool.algo.ts:296","pc":[864]},{"teal":1003,"source":"contracts/stakingPool.algo.ts:296","pc":[865]},{"teal":1004,"source":"contracts/stakingPool.algo.ts:296","pc":[866]},{"teal":1005,"source":"contracts/stakingPool.algo.ts:296","pc":[867,868]},{"teal":1009,"source":"contracts/stakingPool.algo.ts:297","pc":[869,870]},{"teal":1010,"source":"contracts/stakingPool.algo.ts:297","pc":[871]},{"teal":1011,"source":"contracts/stakingPool.algo.ts:297","pc":[872,873]},{"teal":1012,"source":"contracts/stakingPool.algo.ts:297","pc":[874]},{"teal":1013,"source":"contracts/stakingPool.algo.ts:297","pc":[875,876]},{"teal":1014,"source":"contracts/stakingPool.algo.ts:297","pc":[877]},{"teal":1015,"source":"contracts/stakingPool.algo.ts:297","pc":[878]},{"teal":1019,"source":"contracts/stakingPool.algo.ts:299","pc":[879]},{"teal":1020,"source":"contracts/stakingPool.algo.ts:299","pc":[880,881]},{"teal":1025,"source":"contracts/stakingPool.algo.ts:300","pc":[882,883]},{"teal":1026,"source":"contracts/stakingPool.algo.ts:300","pc":[884,885,886]},{"teal":1027,"source":"contracts/stakingPool.algo.ts:300","pc":[887]},{"teal":1028,"source":"contracts/stakingPool.algo.ts:300","pc":[888]},{"teal":1029,"source":"contracts/stakingPool.algo.ts:300","pc":[889]},{"teal":1030,"source":"contracts/stakingPool.algo.ts:300","pc":[890,891,892]},{"teal":1036,"source":"contracts/stakingPool.algo.ts:302","pc":[893,894]},{"teal":1037,"source":"contracts/stakingPool.algo.ts:302","pc":[895]},{"teal":1038,"source":"contracts/stakingPool.algo.ts:302","pc":[896]},{"teal":1039,"source":"contracts/stakingPool.algo.ts:302","pc":[897]},{"teal":1040,"source":"contracts/stakingPool.algo.ts:302","pc":[898,899,900]},{"teal":1048,"source":"contracts/stakingPool.algo.ts:303","pc":[901]},{"teal":1049,"source":"contracts/stakingPool.algo.ts:303","pc":[902]},{"teal":1050,"source":"contracts/stakingPool.algo.ts:303","pc":[903,904]},{"teal":1051,"source":"contracts/stakingPool.algo.ts:303","pc":[905,906]},{"teal":1052,"source":"contracts/stakingPool.algo.ts:303","pc":[907,908]},{"teal":1056,"source":"contracts/stakingPool.algo.ts:304","pc":[909]},{"teal":1057,"source":"contracts/stakingPool.algo.ts:304","pc":[910]},{"teal":1058,"source":"contracts/stakingPool.algo.ts:304","pc":[911,912]},{"teal":1062,"source":"contracts/stakingPool.algo.ts:305","pc":[913]},{"teal":1063,"source":"contracts/stakingPool.algo.ts:305","pc":[914]},{"teal":1064,"source":"contracts/stakingPool.algo.ts:305","pc":[915]},{"teal":1065,"source":"contracts/stakingPool.algo.ts:305","pc":[916,917]},{"teal":1068,"source":"contracts/stakingPool.algo.ts:303","pc":[918]},{"teal":1069,"source":"contracts/stakingPool.algo.ts:303","pc":[919,920]},{"teal":1072,"source":"contracts/stakingPool.algo.ts:303","pc":[921]},{"teal":1073,"source":"contracts/stakingPool.algo.ts:303","pc":[922,923]},{"teal":1074,"source":"contracts/stakingPool.algo.ts:303","pc":[924]},{"teal":1075,"source":"contracts/stakingPool.algo.ts:303","pc":[925]},{"teal":1076,"source":"contracts/stakingPool.algo.ts:303","pc":[926,927]},{"teal":1077,"source":"contracts/stakingPool.algo.ts:303","pc":[928,929,930]},{"teal":1078,"source":"contracts/stakingPool.algo.ts:303","pc":[931,932]},{"teal":1086,"source":"contracts/stakingPool.algo.ts:311","pc":[933]},{"teal":1087,"source":"contracts/stakingPool.algo.ts:311","pc":[934,935]},{"teal":1088,"source":"contracts/stakingPool.algo.ts:311","pc":[936,937]},{"teal":1092,"source":"contracts/stakingPool.algo.ts:312","pc":[938,939]},{"teal":1093,"source":"contracts/stakingPool.algo.ts:312","pc":[940,941,942]},{"teal":1094,"source":"contracts/stakingPool.algo.ts:312","pc":[943]},{"teal":1095,"source":"contracts/stakingPool.algo.ts:312","pc":[944,945]},{"teal":1099,"source":"contracts/stakingPool.algo.ts:313","pc":[946,947]},{"teal":1100,"source":"contracts/stakingPool.algo.ts:313","pc":[948,949]},{"teal":1104,"source":"contracts/stakingPool.algo.ts:314","pc":[950,951]},{"teal":1105,"source":"contracts/stakingPool.algo.ts:314","pc":[952,953,954]},{"teal":1106,"source":"contracts/stakingPool.algo.ts:314","pc":[955]},{"teal":1107,"source":"contracts/stakingPool.algo.ts:314","pc":[956,957]},{"teal":1110,"source":"contracts/stakingPool.algo.ts:311","pc":[958]},{"teal":1111,"source":"contracts/stakingPool.algo.ts:311","pc":[959,960]},{"teal":1114,"source":"contracts/stakingPool.algo.ts:311","pc":[961]},{"teal":1118,"source":"contracts/stakingPool.algo.ts:316","pc":[962,963]},{"teal":1119,"source":"contracts/stakingPool.algo.ts:316","pc":[964,965,966]},{"teal":1120,"source":"contracts/stakingPool.algo.ts:316","pc":[967]},{"teal":1121,"source":"contracts/stakingPool.algo.ts:316","pc":[968,969]},{"teal":1125,"source":"contracts/stakingPool.algo.ts:317","pc":[970,971]},{"teal":1126,"source":"contracts/stakingPool.algo.ts:317","pc":[972,973]},{"teal":1127,"source":"contracts/stakingPool.algo.ts:317","pc":[974,975]},{"teal":1128,"source":"contracts/stakingPool.algo.ts:317","pc":[976,977]},{"teal":1129,"source":"contracts/stakingPool.algo.ts:302","pc":[978,979,980]},{"teal":1134,"source":"contracts/stakingPool.algo.ts:322","pc":[981,982]},{"teal":1135,"source":"contracts/stakingPool.algo.ts:322","pc":[983,984,985]},{"teal":1136,"source":"contracts/stakingPool.algo.ts:322","pc":[986]},{"teal":1137,"source":"contracts/stakingPool.algo.ts:322","pc":[987,988]},{"teal":1141,"source":"contracts/stakingPool.algo.ts:323","pc":[989,990]},{"teal":1142,"source":"contracts/stakingPool.algo.ts:323","pc":[991,992]},{"teal":1143,"source":"contracts/stakingPool.algo.ts:323","pc":[993,994]},{"teal":1144,"source":"contracts/stakingPool.algo.ts:323","pc":[995,996]},{"teal":1154,"source":"contracts/stakingPool.algo.ts:329","pc":[997,998]},{"teal":1155,"source":"contracts/stakingPool.algo.ts:329","pc":[999,1000,1001]},{"teal":1156,"source":"contracts/stakingPool.algo.ts:329","pc":[1002]},{"teal":1157,"source":"contracts/stakingPool.algo.ts:329","pc":[1003]},{"teal":1158,"source":"contracts/stakingPool.algo.ts:329","pc":[1004]},{"teal":1159,"source":"contracts/stakingPool.algo.ts:329","pc":[1005]},{"teal":1160,"source":"contracts/stakingPool.algo.ts:329","pc":[1006,1007,1008]},{"teal":1161,"source":"contracts/stakingPool.algo.ts:329","pc":[1009,1010]},{"teal":1162,"source":"contracts/stakingPool.algo.ts:329","pc":[1011,1012,1013]},{"teal":1163,"source":"contracts/stakingPool.algo.ts:329","pc":[1014]},{"teal":1164,"source":"contracts/stakingPool.algo.ts:329","pc":[1015,1016]},{"teal":1165,"source":"contracts/stakingPool.algo.ts:329","pc":[1017]},{"teal":1166,"source":"contracts/stakingPool.algo.ts:329","pc":[1018]},{"teal":1167,"source":"contracts/stakingPool.algo.ts:329","pc":[1019]},{"teal":1171,"source":"contracts/stakingPool.algo.ts:328","errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1020]},{"teal":1179,"source":"contracts/stakingPool.algo.ts:336","pc":[1021]},{"teal":1180,"source":"contracts/stakingPool.algo.ts:336","pc":[1022]},{"teal":1181,"source":"contracts/stakingPool.algo.ts:336","pc":[1023,1024]},{"teal":1185,"source":"contracts/stakingPool.algo.ts:337","pc":[1025,1026]},{"teal":1186,"source":"contracts/stakingPool.algo.ts:337","pc":[1027,1028]},{"teal":1190,"source":"contracts/stakingPool.algo.ts:338","pc":[1029,1030]},{"teal":1191,"source":"contracts/stakingPool.algo.ts:338","pc":[1031,1032]},{"teal":1195,"source":"contracts/stakingPool.algo.ts:339","pc":[1033,1034,1035,1036,1037,1038,1039,1040,1041,1042]},{"teal":1196,"source":"contracts/stakingPool.algo.ts:339","pc":[1043,1044]},{"teal":1199,"source":"contracts/stakingPool.algo.ts:336","pc":[1045]},{"teal":1200,"source":"contracts/stakingPool.algo.ts:336","pc":[1046,1047]},{"teal":1203,"source":"contracts/stakingPool.algo.ts:336","pc":[1048]},{"teal":1207,"source":"contracts/stakingPool.algo.ts:341","pc":[1049]},{"teal":1208,"source":"contracts/stakingPool.algo.ts:341","pc":[1050,1051]},{"teal":1213,"source":"contracts/stakingPool.algo.ts:342","pc":[1052,1053]},{"teal":1214,"source":"contracts/stakingPool.algo.ts:342","pc":[1054,1055,1056]},{"teal":1215,"source":"contracts/stakingPool.algo.ts:342","pc":[1057]},{"teal":1216,"source":"contracts/stakingPool.algo.ts:342","pc":[1058]},{"teal":1217,"source":"contracts/stakingPool.algo.ts:342","pc":[1059]},{"teal":1218,"source":"contracts/stakingPool.algo.ts:342","pc":[1060,1061,1062]},{"teal":1223,"source":"contracts/stakingPool.algo.ts:344","pc":[1063,1064]},{"teal":1224,"source":"contracts/stakingPool.algo.ts:344","pc":[1065]},{"teal":1225,"source":"contracts/stakingPool.algo.ts:344","pc":[1066]},{"teal":1226,"source":"contracts/stakingPool.algo.ts:344","pc":[1067]},{"teal":1227,"source":"contracts/stakingPool.algo.ts:344","pc":[1068,1069]},{"teal":1228,"source":"contracts/stakingPool.algo.ts:344","pc":[1070]},{"teal":1229,"source":"contracts/stakingPool.algo.ts:344","pc":[1071]},{"teal":1233,"source":"contracts/stakingPool.algo.ts:345","pc":[1072,1073]},{"teal":1234,"source":"contracts/stakingPool.algo.ts:345","pc":[1074]},{"teal":1235,"source":"contracts/stakingPool.algo.ts:345","pc":[1075,1076]},{"teal":1236,"source":"contracts/stakingPool.algo.ts:345","pc":[1077]},{"teal":1237,"source":"contracts/stakingPool.algo.ts:345","pc":[1078,1079]},{"teal":1241,"source":"contracts/stakingPool.algo.ts:346","pc":[1080,1081]},{"teal":1242,"source":"contracts/stakingPool.algo.ts:346","pc":[1082,1083]},{"teal":1243,"source":"contracts/stakingPool.algo.ts:346","pc":[1084,1085]},{"teal":1244,"source":"contracts/stakingPool.algo.ts:346","pc":[1086,1087]},{"teal":1248,"source":"contracts/stakingPool.algo.ts:347","pc":[1088,1089]},{"teal":1249,"source":"contracts/stakingPool.algo.ts:347","pc":[1090,1091]},{"teal":1250,"source":"contracts/stakingPool.algo.ts:347","pc":[1092,1093]},{"teal":1251,"source":"contracts/stakingPool.algo.ts:347","pc":[1094,1095]},{"teal":1255,"source":"contracts/stakingPool.algo.ts:348","pc":[1096]},{"teal":1256,"source":"contracts/stakingPool.algo.ts:348","pc":[1097,1098]},{"teal":1261,"source":"contracts/stakingPool.algo.ts:351","pc":[1099,1100]},{"teal":1262,"source":"contracts/stakingPool.algo.ts:351","pc":[1101]},{"teal":1263,"source":"contracts/stakingPool.algo.ts:351","pc":[1102]},{"teal":1264,"source":"contracts/stakingPool.algo.ts:351","pc":[1103,1104]},{"teal":1265,"source":"contracts/stakingPool.algo.ts:351","pc":[1105]},{"teal":1266,"source":"contracts/stakingPool.algo.ts:351","pc":[1106,1107]},{"teal":1267,"source":"contracts/stakingPool.algo.ts:351","pc":[1108]},{"teal":1271,"source":"contracts/stakingPool.algo.ts:353","pc":[1109,1110]},{"teal":1272,"source":"contracts/stakingPool.algo.ts:353","pc":[1111]},{"teal":1273,"source":"contracts/stakingPool.algo.ts:353","pc":[1112,1113]},{"teal":1274,"source":"contracts/stakingPool.algo.ts:353","pc":[1114]},{"teal":1275,"source":"contracts/stakingPool.algo.ts:353","pc":[1115]},{"teal":1276,"source":"contracts/stakingPool.algo.ts:353","pc":[1116,1117]},{"teal":1277,"source":"contracts/stakingPool.algo.ts:353","pc":[1118]},{"teal":1278,"source":"contracts/stakingPool.algo.ts:353","pc":[1119,1120]},{"teal":1282,"source":"contracts/stakingPool.algo.ts:354","pc":[1121,1122]},{"teal":1283,"source":"contracts/stakingPool.algo.ts:354","pc":[1123]},{"teal":1284,"source":"contracts/stakingPool.algo.ts:354","pc":[1124,1125]},{"teal":1285,"source":"contracts/stakingPool.algo.ts:354","pc":[1126]},{"teal":1286,"source":"contracts/stakingPool.algo.ts:354","pc":[1127]},{"teal":1287,"source":"contracts/stakingPool.algo.ts:354","pc":[1128]},{"teal":1288,"source":"contracts/stakingPool.algo.ts:354","pc":[1129]},{"teal":1289,"source":"contracts/stakingPool.algo.ts:354","pc":[1130,1131]},{"teal":1290,"source":"contracts/stakingPool.algo.ts:354","pc":[1132]},{"teal":1293,"source":"contracts/stakingPool.algo.ts:354","errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1133]},{"teal":1294,"source":"contracts/stakingPool.algo.ts:354","pc":[1134,1135]},{"teal":1295,"source":"contracts/stakingPool.algo.ts:354","pc":[1136]},{"teal":1296,"source":"contracts/stakingPool.algo.ts:354","pc":[1137]},{"teal":1297,"source":"contracts/stakingPool.algo.ts:354","pc":[1138]},{"teal":1298,"source":"contracts/stakingPool.algo.ts:354","pc":[1139]},{"teal":1299,"source":"contracts/stakingPool.algo.ts:354","pc":[1140,1141]},{"teal":1300,"source":"contracts/stakingPool.algo.ts:354","pc":[1142]},{"teal":1301,"source":"contracts/stakingPool.algo.ts:354","pc":[1143]},{"teal":1302,"source":"contracts/stakingPool.algo.ts:354","pc":[1144]},{"teal":1303,"source":"contracts/stakingPool.algo.ts:354","pc":[1145,1146]},{"teal":1307,"source":"contracts/stakingPool.algo.ts:355","pc":[1147,1148]},{"teal":1308,"source":"contracts/stakingPool.algo.ts:355","pc":[1149]},{"teal":1309,"source":"contracts/stakingPool.algo.ts:355","pc":[1150]},{"teal":1310,"source":"contracts/stakingPool.algo.ts:355","pc":[1151,1152]},{"teal":1311,"source":"contracts/stakingPool.algo.ts:355","pc":[1153]},{"teal":1312,"source":"contracts/stakingPool.algo.ts:355","pc":[1154]},{"teal":1313,"source":"contracts/stakingPool.algo.ts:355","pc":[1155]},{"teal":1314,"source":"contracts/stakingPool.algo.ts:355","pc":[1156,1157]},{"teal":1315,"source":"contracts/stakingPool.algo.ts:355","pc":[1158]},{"teal":1318,"source":"contracts/stakingPool.algo.ts:355","errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1159]},{"teal":1319,"source":"contracts/stakingPool.algo.ts:355","pc":[1160,1161]},{"teal":1320,"source":"contracts/stakingPool.algo.ts:355","pc":[1162]},{"teal":1321,"source":"contracts/stakingPool.algo.ts:355","pc":[1163]},{"teal":1322,"source":"contracts/stakingPool.algo.ts:355","pc":[1164]},{"teal":1323,"source":"contracts/stakingPool.algo.ts:355","pc":[1165]},{"teal":1324,"source":"contracts/stakingPool.algo.ts:355","pc":[1166,1167]},{"teal":1325,"source":"contracts/stakingPool.algo.ts:355","pc":[1168]},{"teal":1326,"source":"contracts/stakingPool.algo.ts:355","pc":[1169]},{"teal":1327,"source":"contracts/stakingPool.algo.ts:355","pc":[1170]},{"teal":1328,"source":"contracts/stakingPool.algo.ts:355","pc":[1171]},{"teal":1341,"source":"contracts/stakingPool.algo.ts:360","pc":[1172]},{"teal":1342,"source":"contracts/stakingPool.algo.ts:360","pc":[1173]},{"teal":1343,"source":"contracts/stakingPool.algo.ts:360","pc":[1174,1175]},{"teal":1344,"source":"contracts/stakingPool.algo.ts:360","pc":[1176,1177]},{"teal":1345,"source":"contracts/stakingPool.algo.ts:360","pc":[1178,1179]},{"teal":1349,"source":"contracts/stakingPool.algo.ts:361","pc":[1180]},{"teal":1350,"source":"contracts/stakingPool.algo.ts:361","pc":[1181]},{"teal":1351,"source":"contracts/stakingPool.algo.ts:361","pc":[1182,1183]},{"teal":1361,"source":"contracts/stakingPool.algo.ts:363","pc":[1184]},{"teal":1362,"source":"contracts/stakingPool.algo.ts:363","pc":[1185]},{"teal":1363,"source":"contracts/stakingPool.algo.ts:363","pc":[1186]},{"teal":1364,"source":"contracts/stakingPool.algo.ts:363","pc":[1187,1188]},{"teal":1365,"source":"contracts/stakingPool.algo.ts:363","pc":[1189]},{"teal":1366,"source":"contracts/stakingPool.algo.ts:363","pc":[1190]},{"teal":1367,"source":"contracts/stakingPool.algo.ts:363","pc":[1191]},{"teal":1368,"source":"contracts/stakingPool.algo.ts:363","pc":[1192,1193,1194]},{"teal":1369,"source":"contracts/stakingPool.algo.ts:363","pc":[1195]},{"teal":1370,"source":"contracts/stakingPool.algo.ts:363","pc":[1196]},{"teal":1371,"source":"contracts/stakingPool.algo.ts:363","pc":[1197,1198]},{"teal":1372,"source":"contracts/stakingPool.algo.ts:364","pc":[1199,1200]},{"teal":1373,"source":"contracts/stakingPool.algo.ts:364","pc":[1201,1202]},{"teal":1374,"source":"contracts/stakingPool.algo.ts:365","pc":[1203,1204]},{"teal":1375,"source":"contracts/stakingPool.algo.ts:365","pc":[1205]},{"teal":1376,"source":"contracts/stakingPool.algo.ts:365","pc":[1206,1207]},{"teal":1377,"source":"contracts/stakingPool.algo.ts:366","pc":[1208,1209]},{"teal":1378,"source":"contracts/stakingPool.algo.ts:366","pc":[1210]},{"teal":1379,"source":"contracts/stakingPool.algo.ts:366","pc":[1211,1212]},{"teal":1380,"source":"contracts/stakingPool.algo.ts:367","pc":[1213,1214]},{"teal":1381,"source":"contracts/stakingPool.algo.ts:367","pc":[1215,1216]},{"teal":1382,"source":"contracts/stakingPool.algo.ts:367","pc":[1217]},{"teal":1383,"source":"contracts/stakingPool.algo.ts:367","pc":[1218,1219]},{"teal":1384,"source":"contracts/stakingPool.algo.ts:367","pc":[1220]},{"teal":1385,"source":"contracts/stakingPool.algo.ts:367","pc":[1221,1222]},{"teal":1388,"source":"contracts/stakingPool.algo.ts:360","pc":[1223]},{"teal":1389,"source":"contracts/stakingPool.algo.ts:360","pc":[1224,1225]},{"teal":1392,"source":"contracts/stakingPool.algo.ts:360","pc":[1226]},{"teal":1396,"source":"contracts/stakingPool.algo.ts:370","pc":[1227]},{"teal":1403,"source":"contracts/stakingPool.algo.ts:283","pc":[1228,1229]},{"teal":1404,"source":"contracts/stakingPool.algo.ts:283","pc":[1230]},{"teal":1405,"source":"contracts/stakingPool.algo.ts:283","pc":[1231]},{"teal":1406,"source":"contracts/stakingPool.algo.ts:283","pc":[1232,1233]},{"teal":1407,"source":"contracts/stakingPool.algo.ts:283","pc":[1234,1235,1236]},{"teal":1411,"source":"contracts/stakingPool.algo.ts:373","errorMessage":"account not found","pc":[1237]},{"teal":1412,"source":"contracts/stakingPool.algo.ts:271","pc":[1238]},{"teal":1417,"source":"contracts/stakingPool.algo.ts:381","pc":[1239,1240,1241]},{"teal":1418,"source":"contracts/stakingPool.algo.ts:381","pc":[1242]},{"teal":1419,"source":"contracts/stakingPool.algo.ts:381","pc":[1243]},{"teal":1427,"source":"contracts/stakingPool.algo.ts:381","pc":[1244,1245,1246]},{"teal":1430,"source":"contracts/stakingPool.algo.ts:381","pc":[1247]},{"teal":1431,"source":"contracts/stakingPool.algo.ts:381","pc":[1248,1249]},{"teal":1435,"source":"contracts/stakingPool.algo.ts:385","pc":[1250,1251]},{"teal":1436,"source":"contracts/stakingPool.algo.ts:385","pc":[1252,1253]},{"teal":1440,"source":"contracts/stakingPool.algo.ts:387","pc":[1254]},{"teal":1441,"source":"contracts/stakingPool.algo.ts:387","pc":[1255,1256]},{"teal":1446,"source":"contracts/stakingPool.algo.ts:387","pc":[1257,1258]},{"teal":1447,"source":"contracts/stakingPool.algo.ts:387","pc":[1259,1260]},{"teal":1448,"source":"contracts/stakingPool.algo.ts:387","pc":[1261]},{"teal":1449,"source":"contracts/stakingPool.algo.ts:387","pc":[1262,1263,1264]},{"teal":1454,"source":"contracts/stakingPool.algo.ts:388","pc":[1265,1266]},{"teal":1455,"source":"contracts/stakingPool.algo.ts:388","pc":[1267,1268]},{"teal":1456,"source":"contracts/stakingPool.algo.ts:388","pc":[1269]},{"teal":1457,"source":"contracts/stakingPool.algo.ts:388","pc":[1270,1271,1272]},{"teal":1462,"source":"contracts/stakingPool.algo.ts:389","pc":[1273]},{"teal":1463,"source":"contracts/stakingPool.algo.ts:389","pc":[1274]},{"teal":1464,"source":"contracts/stakingPool.algo.ts:389","pc":[1275,1276]},{"teal":1465,"source":"contracts/stakingPool.algo.ts:389","pc":[1277]},{"teal":1466,"source":"contracts/stakingPool.algo.ts:389","pc":[1278,1279]},{"teal":1467,"source":"contracts/stakingPool.algo.ts:389","pc":[1280,1281]},{"teal":1468,"source":"contracts/stakingPool.algo.ts:389","pc":[1282]},{"teal":1469,"source":"contracts/stakingPool.algo.ts:389","pc":[1283,1284]},{"teal":1470,"source":"contracts/stakingPool.algo.ts:389","pc":[1285,1286]},{"teal":1471,"source":"contracts/stakingPool.algo.ts:389","pc":[1287,1288]},{"teal":1472,"source":"contracts/stakingPool.algo.ts:389","pc":[1289,1290]},{"teal":1473,"source":"contracts/stakingPool.algo.ts:389","pc":[1291]},{"teal":1478,"source":"contracts/stakingPool.algo.ts:391","pc":[1292,1293]},{"teal":1479,"source":"contracts/stakingPool.algo.ts:391","pc":[1294]},{"teal":1480,"source":"contracts/stakingPool.algo.ts:391","pc":[1295]},{"teal":1481,"source":"contracts/stakingPool.algo.ts:391","pc":[1296]},{"teal":1482,"source":"contracts/stakingPool.algo.ts:391","pc":[1297]},{"teal":1483,"source":"contracts/stakingPool.algo.ts:391","pc":[1298,1299]},{"teal":1484,"source":"contracts/stakingPool.algo.ts:391","pc":[1300]},{"teal":1485,"source":"contracts/stakingPool.algo.ts:391","pc":[1301,1302]},{"teal":1490,"source":"contracts/stakingPool.algo.ts:392","pc":[1303,1304]},{"teal":1491,"source":"contracts/stakingPool.algo.ts:392","pc":[1305,1306,1307]},{"teal":1492,"source":"contracts/stakingPool.algo.ts:392","pc":[1308,1309]},{"teal":1493,"source":"contracts/stakingPool.algo.ts:392","pc":[1310]},{"teal":1494,"source":"contracts/stakingPool.algo.ts:392","pc":[1311,1312,1313]},{"teal":1500,"source":"contracts/stakingPool.algo.ts:393","pc":[1314,1315]},{"teal":1501,"source":"contracts/stakingPool.algo.ts:393","pc":[1316,1317,1318]},{"teal":1502,"source":"contracts/stakingPool.algo.ts:393","pc":[1319]},{"teal":1503,"source":"contracts/stakingPool.algo.ts:393","pc":[1320]},{"teal":1504,"source":"contracts/stakingPool.algo.ts:393","pc":[1321]},{"teal":1505,"source":"contracts/stakingPool.algo.ts:393","pc":[1322,1323,1324]},{"teal":1510,"source":"contracts/stakingPool.algo.ts:394","pc":[1325]},{"teal":1515,"source":"contracts/stakingPool.algo.ts:396","pc":[1326]},{"teal":1516,"source":"contracts/stakingPool.algo.ts:396","pc":[1327,1328]},{"teal":1521,"source":"contracts/stakingPool.algo.ts:398","pc":[1329,1330]},{"teal":1522,"source":"contracts/stakingPool.algo.ts:398","pc":[1331]},{"teal":1523,"source":"contracts/stakingPool.algo.ts:398","pc":[1332]},{"teal":1524,"source":"contracts/stakingPool.algo.ts:398","pc":[1333]},{"teal":1525,"source":"contracts/stakingPool.algo.ts:398","pc":[1334,1335,1336]},{"teal":1533,"source":"contracts/stakingPool.algo.ts:399","pc":[1337]},{"teal":1534,"source":"contracts/stakingPool.algo.ts:399","pc":[1338]},{"teal":1535,"source":"contracts/stakingPool.algo.ts:399","pc":[1339,1340]},{"teal":1536,"source":"contracts/stakingPool.algo.ts:399","pc":[1341,1342]},{"teal":1537,"source":"contracts/stakingPool.algo.ts:399","pc":[1343,1344]},{"teal":1541,"source":"contracts/stakingPool.algo.ts:400","pc":[1345]},{"teal":1542,"source":"contracts/stakingPool.algo.ts:400","pc":[1346]},{"teal":1543,"source":"contracts/stakingPool.algo.ts:400","pc":[1347,1348]},{"teal":1547,"source":"contracts/stakingPool.algo.ts:401","pc":[1349]},{"teal":1548,"source":"contracts/stakingPool.algo.ts:401","pc":[1350]},{"teal":1549,"source":"contracts/stakingPool.algo.ts:401","pc":[1351]},{"teal":1550,"source":"contracts/stakingPool.algo.ts:401","pc":[1352,1353]},{"teal":1553,"source":"contracts/stakingPool.algo.ts:399","pc":[1354]},{"teal":1554,"source":"contracts/stakingPool.algo.ts:399","pc":[1355,1356]},{"teal":1557,"source":"contracts/stakingPool.algo.ts:399","pc":[1357]},{"teal":1558,"source":"contracts/stakingPool.algo.ts:399","pc":[1358,1359]},{"teal":1559,"source":"contracts/stakingPool.algo.ts:399","pc":[1360]},{"teal":1560,"source":"contracts/stakingPool.algo.ts:399","pc":[1361]},{"teal":1561,"source":"contracts/stakingPool.algo.ts:399","pc":[1362,1363]},{"teal":1562,"source":"contracts/stakingPool.algo.ts:399","pc":[1364,1365,1366]},{"teal":1563,"source":"contracts/stakingPool.algo.ts:399","pc":[1367,1368]},{"teal":1571,"source":"contracts/stakingPool.algo.ts:406","pc":[1369]},{"teal":1572,"source":"contracts/stakingPool.algo.ts:406","pc":[1370,1371]},{"teal":1573,"source":"contracts/stakingPool.algo.ts:406","pc":[1372,1373]},{"teal":1577,"source":"contracts/stakingPool.algo.ts:407","pc":[1374,1375]},{"teal":1578,"source":"contracts/stakingPool.algo.ts:407","pc":[1376,1377,1378]},{"teal":1579,"source":"contracts/stakingPool.algo.ts:407","pc":[1379]},{"teal":1580,"source":"contracts/stakingPool.algo.ts:407","pc":[1380,1381]},{"teal":1584,"source":"contracts/stakingPool.algo.ts:408","pc":[1382,1383]},{"teal":1585,"source":"contracts/stakingPool.algo.ts:408","pc":[1384,1385]},{"teal":1589,"source":"contracts/stakingPool.algo.ts:409","pc":[1386,1387]},{"teal":1590,"source":"contracts/stakingPool.algo.ts:409","pc":[1388,1389,1390]},{"teal":1591,"source":"contracts/stakingPool.algo.ts:409","pc":[1391]},{"teal":1592,"source":"contracts/stakingPool.algo.ts:409","pc":[1392,1393]},{"teal":1595,"source":"contracts/stakingPool.algo.ts:406","pc":[1394]},{"teal":1596,"source":"contracts/stakingPool.algo.ts:406","pc":[1395,1396]},{"teal":1599,"source":"contracts/stakingPool.algo.ts:406","pc":[1397]},{"teal":1603,"source":"contracts/stakingPool.algo.ts:411","pc":[1398,1399]},{"teal":1604,"source":"contracts/stakingPool.algo.ts:411","pc":[1400,1401,1402]},{"teal":1605,"source":"contracts/stakingPool.algo.ts:411","pc":[1403]},{"teal":1606,"source":"contracts/stakingPool.algo.ts:411","pc":[1404,1405]},{"teal":1610,"source":"contracts/stakingPool.algo.ts:412","pc":[1406,1407]},{"teal":1611,"source":"contracts/stakingPool.algo.ts:412","pc":[1408,1409]},{"teal":1612,"source":"contracts/stakingPool.algo.ts:412","pc":[1410,1411]},{"teal":1613,"source":"contracts/stakingPool.algo.ts:412","pc":[1412,1413]},{"teal":1614,"source":"contracts/stakingPool.algo.ts:398","pc":[1414,1415,1416]},{"teal":1619,"source":"contracts/stakingPool.algo.ts:417","pc":[1417,1418]},{"teal":1620,"source":"contracts/stakingPool.algo.ts:417","pc":[1419,1420,1421]},{"teal":1621,"source":"contracts/stakingPool.algo.ts:417","pc":[1422]},{"teal":1622,"source":"contracts/stakingPool.algo.ts:417","pc":[1423,1424]},{"teal":1626,"source":"contracts/stakingPool.algo.ts:418","pc":[1425,1426]},{"teal":1627,"source":"contracts/stakingPool.algo.ts:418","pc":[1427,1428]},{"teal":1628,"source":"contracts/stakingPool.algo.ts:418","pc":[1429,1430]},{"teal":1629,"source":"contracts/stakingPool.algo.ts:418","pc":[1431,1432]},{"teal":1634,"source":"contracts/stakingPool.algo.ts:422","pc":[1433,1434]},{"teal":1635,"source":"contracts/stakingPool.algo.ts:422","pc":[1435]},{"teal":1636,"source":"contracts/stakingPool.algo.ts:422","pc":[1436]},{"teal":1637,"source":"contracts/stakingPool.algo.ts:422","pc":[1437,1438]},{"teal":1638,"source":"contracts/stakingPool.algo.ts:422","pc":[1439]},{"teal":1639,"source":"contracts/stakingPool.algo.ts:422","pc":[1440,1441]},{"teal":1640,"source":"contracts/stakingPool.algo.ts:422","pc":[1442]},{"teal":1653,"source":"contracts/stakingPool.algo.ts:427","pc":[1443]},{"teal":1654,"source":"contracts/stakingPool.algo.ts:427","pc":[1444]},{"teal":1655,"source":"contracts/stakingPool.algo.ts:427","pc":[1445,1446]},{"teal":1656,"source":"contracts/stakingPool.algo.ts:427","pc":[1447,1448]},{"teal":1657,"source":"contracts/stakingPool.algo.ts:427","pc":[1449,1450]},{"teal":1661,"source":"contracts/stakingPool.algo.ts:428","pc":[1451]},{"teal":1662,"source":"contracts/stakingPool.algo.ts:428","pc":[1452]},{"teal":1663,"source":"contracts/stakingPool.algo.ts:428","pc":[1453,1454]},{"teal":1673,"source":"contracts/stakingPool.algo.ts:430","pc":[1455]},{"teal":1674,"source":"contracts/stakingPool.algo.ts:430","pc":[1456]},{"teal":1675,"source":"contracts/stakingPool.algo.ts:430","pc":[1457]},{"teal":1676,"source":"contracts/stakingPool.algo.ts:430","pc":[1458,1459]},{"teal":1677,"source":"contracts/stakingPool.algo.ts:430","pc":[1460]},{"teal":1678,"source":"contracts/stakingPool.algo.ts:430","pc":[1461]},{"teal":1679,"source":"contracts/stakingPool.algo.ts:430","pc":[1462]},{"teal":1680,"source":"contracts/stakingPool.algo.ts:430","pc":[1463,1464,1465]},{"teal":1681,"source":"contracts/stakingPool.algo.ts:430","pc":[1466]},{"teal":1682,"source":"contracts/stakingPool.algo.ts:430","pc":[1467]},{"teal":1683,"source":"contracts/stakingPool.algo.ts:430","pc":[1468,1469]},{"teal":1684,"source":"contracts/stakingPool.algo.ts:431","pc":[1470,1471]},{"teal":1685,"source":"contracts/stakingPool.algo.ts:431","pc":[1472,1473]},{"teal":1686,"source":"contracts/stakingPool.algo.ts:432","pc":[1474,1475]},{"teal":1687,"source":"contracts/stakingPool.algo.ts:432","pc":[1476,1477]},{"teal":1688,"source":"contracts/stakingPool.algo.ts:433","pc":[1478,1479]},{"teal":1689,"source":"contracts/stakingPool.algo.ts:433","pc":[1480]},{"teal":1690,"source":"contracts/stakingPool.algo.ts:433","pc":[1481,1482]},{"teal":1691,"source":"contracts/stakingPool.algo.ts:434","pc":[1483]},{"teal":1692,"source":"contracts/stakingPool.algo.ts:434","pc":[1484,1485]},{"teal":1693,"source":"contracts/stakingPool.algo.ts:434","pc":[1486]},{"teal":1694,"source":"contracts/stakingPool.algo.ts:434","pc":[1487,1488]},{"teal":1695,"source":"contracts/stakingPool.algo.ts:434","pc":[1489]},{"teal":1696,"source":"contracts/stakingPool.algo.ts:434","pc":[1490,1491]},{"teal":1699,"source":"contracts/stakingPool.algo.ts:427","pc":[1492]},{"teal":1700,"source":"contracts/stakingPool.algo.ts:427","pc":[1493,1494]},{"teal":1703,"source":"contracts/stakingPool.algo.ts:427","pc":[1495]},{"teal":1707,"source":"contracts/stakingPool.algo.ts:437","pc":[1496]},{"teal":1714,"source":"contracts/stakingPool.algo.ts:387","pc":[1497,1498]},{"teal":1715,"source":"contracts/stakingPool.algo.ts:387","pc":[1499]},{"teal":1716,"source":"contracts/stakingPool.algo.ts:387","pc":[1500]},{"teal":1717,"source":"contracts/stakingPool.algo.ts:387","pc":[1501,1502]},{"teal":1718,"source":"contracts/stakingPool.algo.ts:387","pc":[1503,1504,1505]},{"teal":1722,"source":"contracts/stakingPool.algo.ts:440","errorMessage":"account not found","pc":[1506]},{"teal":1723,"source":"contracts/stakingPool.algo.ts:381","pc":[1507]},{"teal":1728,"source":"contracts/stakingPool.algo.ts:450","pc":[1508,1509]},{"teal":1731,"source":"contracts/stakingPool.algo.ts:451","pc":[1510,1511,1512]},{"teal":1732,"source":"contracts/stakingPool.algo.ts:451","pc":[1513]},{"teal":1733,"source":"contracts/stakingPool.algo.ts:451","pc":[1514]},{"teal":1734,"source":"contracts/stakingPool.algo.ts:451","pc":[1515,1516]},{"teal":1735,"source":"contracts/stakingPool.algo.ts:451","pc":[1517]},{"teal":1738,"source":"contracts/stakingPool.algo.ts:451","errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1518]},{"teal":1741,"source":"contracts/stakingPool.algo.ts:450","pc":[1519,1520,1521]},{"teal":1742,"source":"contracts/stakingPool.algo.ts:450","pc":[1522]},{"teal":1743,"source":"contracts/stakingPool.algo.ts:450","pc":[1523]},{"teal":1744,"source":"contracts/stakingPool.algo.ts:450","pc":[1524]},{"teal":1745,"source":"contracts/stakingPool.algo.ts:450","pc":[1525]},{"teal":1755,"source":"contracts/stakingPool.algo.ts:450","pc":[1526,1527,1528]},{"teal":1758,"source":"contracts/stakingPool.algo.ts:450","pc":[1529]},{"teal":1762,"source":"contracts/stakingPool.algo.ts:452","pc":[1530]},{"teal":1763,"source":"contracts/stakingPool.algo.ts:452","pc":[1531,1532]},{"teal":1768,"source":"contracts/stakingPool.algo.ts:452","pc":[1533,1534]},{"teal":1769,"source":"contracts/stakingPool.algo.ts:452","pc":[1535,1536]},{"teal":1770,"source":"contracts/stakingPool.algo.ts:452","pc":[1537]},{"teal":1771,"source":"contracts/stakingPool.algo.ts:452","pc":[1538,1539,1540]},{"teal":1776,"source":"contracts/stakingPool.algo.ts:453","pc":[1541,1542]},{"teal":1777,"source":"contracts/stakingPool.algo.ts:453","pc":[1543,1544]},{"teal":1778,"source":"contracts/stakingPool.algo.ts:453","pc":[1545]},{"teal":1779,"source":"contracts/stakingPool.algo.ts:453","pc":[1546,1547,1548]},{"teal":1784,"source":"contracts/stakingPool.algo.ts:454","pc":[1549]},{"teal":1785,"source":"contracts/stakingPool.algo.ts:454","pc":[1550]},{"teal":1786,"source":"contracts/stakingPool.algo.ts:454","pc":[1551,1552]},{"teal":1787,"source":"contracts/stakingPool.algo.ts:454","pc":[1553]},{"teal":1788,"source":"contracts/stakingPool.algo.ts:454","pc":[1554,1555]},{"teal":1789,"source":"contracts/stakingPool.algo.ts:454","pc":[1556,1557]},{"teal":1790,"source":"contracts/stakingPool.algo.ts:454","pc":[1558]},{"teal":1791,"source":"contracts/stakingPool.algo.ts:454","pc":[1559,1560]},{"teal":1792,"source":"contracts/stakingPool.algo.ts:454","pc":[1561,1562]},{"teal":1793,"source":"contracts/stakingPool.algo.ts:454","pc":[1563,1564]},{"teal":1794,"source":"contracts/stakingPool.algo.ts:454","pc":[1565,1566]},{"teal":1795,"source":"contracts/stakingPool.algo.ts:454","pc":[1567]},{"teal":1801,"source":"contracts/stakingPool.algo.ts:456","pc":[1568,1569]},{"teal":1802,"source":"contracts/stakingPool.algo.ts:456","pc":[1570]},{"teal":1803,"source":"contracts/stakingPool.algo.ts:456","pc":[1571]},{"teal":1804,"source":"contracts/stakingPool.algo.ts:456","pc":[1572]},{"teal":1805,"source":"contracts/stakingPool.algo.ts:456","pc":[1573]},{"teal":1806,"source":"contracts/stakingPool.algo.ts:456","pc":[1574,1575]},{"teal":1807,"source":"contracts/stakingPool.algo.ts:456","pc":[1576]},{"teal":1808,"source":"contracts/stakingPool.algo.ts:456","pc":[1577,1578]},{"teal":1809,"source":"contracts/stakingPool.algo.ts:456","pc":[1579]},{"teal":1810,"source":"contracts/stakingPool.algo.ts:456","pc":[1580,1581]},{"teal":1811,"source":"contracts/stakingPool.algo.ts:456","pc":[1582]},{"teal":1812,"source":"contracts/stakingPool.algo.ts:456","pc":[1583,1584,1585]},{"teal":1817,"source":"contracts/stakingPool.algo.ts:457","pc":[1586,1587]},{"teal":1818,"source":"contracts/stakingPool.algo.ts:457","pc":[1588]},{"teal":1819,"source":"contracts/stakingPool.algo.ts:457","pc":[1589]},{"teal":1820,"source":"contracts/stakingPool.algo.ts:457","pc":[1590]},{"teal":1821,"source":"contracts/stakingPool.algo.ts:457","pc":[1591]},{"teal":1822,"source":"contracts/stakingPool.algo.ts:457","pc":[1592,1593]},{"teal":1823,"source":"contracts/stakingPool.algo.ts:457","pc":[1594]},{"teal":1824,"source":"contracts/stakingPool.algo.ts:457","pc":[1595,1596,1597]},{"teal":1831,"source":"contracts/stakingPool.algo.ts:452","pc":[1598,1599]},{"teal":1832,"source":"contracts/stakingPool.algo.ts:452","pc":[1600]},{"teal":1833,"source":"contracts/stakingPool.algo.ts:452","pc":[1601]},{"teal":1834,"source":"contracts/stakingPool.algo.ts:452","pc":[1602,1603]},{"teal":1835,"source":"contracts/stakingPool.algo.ts:452","pc":[1604,1605,1606]},{"teal":1839,"source":"contracts/stakingPool.algo.ts:460","errorMessage":"account not found","pc":[1607]},{"teal":1843,"source":"contracts/stakingPool.algo.ts:450","pc":[1608,1609]},{"teal":1844,"source":"contracts/stakingPool.algo.ts:450","pc":[1610]},{"teal":1849,"source":"contracts/stakingPool.algo.ts:473","pc":[1611,1612,1613]},{"teal":1850,"source":"contracts/stakingPool.algo.ts:473","pc":[1614]},{"teal":1853,"source":"contracts/stakingPool.algo.ts:473","pc":[1615,1616,1617]},{"teal":1854,"source":"contracts/stakingPool.algo.ts:473","pc":[1618]},{"teal":1857,"source":"contracts/stakingPool.algo.ts:473","pc":[1619,1620,1621]},{"teal":1858,"source":"contracts/stakingPool.algo.ts:473","pc":[1622]},{"teal":1859,"source":"contracts/stakingPool.algo.ts:473","pc":[1623]},{"teal":1860,"source":"contracts/stakingPool.algo.ts:473","pc":[1624,1625]},{"teal":1861,"source":"contracts/stakingPool.algo.ts:473","pc":[1626]},{"teal":1864,"source":"contracts/stakingPool.algo.ts:473","errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1627]},{"teal":1867,"source":"contracts/stakingPool.algo.ts:473","pc":[1628,1629,1630]},{"teal":1868,"source":"contracts/stakingPool.algo.ts:473","pc":[1631]},{"teal":1869,"source":"contracts/stakingPool.algo.ts:473","pc":[1632]},{"teal":1882,"source":"contracts/stakingPool.algo.ts:473","pc":[1633,1634,1635]},{"teal":1889,"source":"contracts/stakingPool.algo.ts:476","pc":[1636,1637]},{"teal":1890,"source":"contracts/stakingPool.algo.ts:476","pc":[1638]},{"teal":1891,"source":"contracts/stakingPool.algo.ts:476","pc":[1639]},{"teal":1892,"source":"contracts/stakingPool.algo.ts:476","pc":[1640,1641]},{"teal":1893,"source":"contracts/stakingPool.algo.ts:476","pc":[1642]},{"teal":1894,"source":"contracts/stakingPool.algo.ts:476","pc":[1643]},{"teal":1897,"source":"contracts/stakingPool.algo.ts:475","errorMessage":"this can only be called via the validator contract","pc":[1644]},{"teal":1901,"source":"contracts/stakingPool.algo.ts:479","pc":[1645,1646]},{"teal":1902,"source":"contracts/stakingPool.algo.ts:479","pc":[1647]},{"teal":1903,"source":"contracts/stakingPool.algo.ts:479","pc":[1648]},{"teal":1904,"source":"contracts/stakingPool.algo.ts:479","pc":[1649]},{"teal":1907,"source":"contracts/stakingPool.algo.ts:479","errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1650]},{"teal":1911,"source":"contracts/stakingPool.algo.ts:480","pc":[1651,1652]},{"teal":1912,"source":"contracts/stakingPool.algo.ts:480","pc":[1653]},{"teal":1913,"source":"contracts/stakingPool.algo.ts:480","pc":[1654]},{"teal":1916,"source":"contracts/stakingPool.algo.ts:480","errorMessage":"can only claim token rewards from validator that has them","pc":[1655]},{"teal":1924,"source":"contracts/stakingPool.algo.ts:483","pc":[1656]},{"teal":1925,"source":"contracts/stakingPool.algo.ts:483","pc":[1657,1658]},{"teal":1926,"source":"contracts/stakingPool.algo.ts:483","pc":[1659,1660]},{"teal":1930,"source":"contracts/stakingPool.algo.ts:484","pc":[1661,1662]},{"teal":1931,"source":"contracts/stakingPool.algo.ts:484","pc":[1663,1664]},{"teal":1935,"source":"contracts/stakingPool.algo.ts:485","pc":[1665,1666]},{"teal":1936,"source":"contracts/stakingPool.algo.ts:485","pc":[1667,1668]},{"teal":1940,"source":"contracts/stakingPool.algo.ts:486","pc":[1669,1670]},{"teal":1941,"source":"contracts/stakingPool.algo.ts:486","pc":[1671,1672]},{"teal":1944,"source":"contracts/stakingPool.algo.ts:483","pc":[1673]},{"teal":1945,"source":"contracts/stakingPool.algo.ts:483","pc":[1674,1675]},{"teal":1948,"source":"contracts/stakingPool.algo.ts:483","pc":[1676]},{"teal":1949,"source":"contracts/stakingPool.algo.ts:473","pc":[1677]},{"teal":1954,"source":"contracts/stakingPool.algo.ts:499","pc":[1678,1679,1680]},{"teal":1955,"source":"contracts/stakingPool.algo.ts:499","pc":[1681,1682,1683]},{"teal":1958,"source":"contracts/stakingPool.algo.ts:499","pc":[1684,1685,1686]},{"teal":1959,"source":"contracts/stakingPool.algo.ts:499","pc":[1687]},{"teal":1960,"source":"contracts/stakingPool.algo.ts:499","pc":[1688]},{"teal":1972,"source":"contracts/stakingPool.algo.ts:499","pc":[1689,1690,1691]},{"teal":1976,"source":"contracts/stakingPool.algo.ts:500","pc":[1692,1693,1694]},{"teal":1979,"source":"contracts/stakingPool.algo.ts:500","errorMessage":"can only be called by owner or manager of validator","pc":[1695]},{"teal":1983,"source":"contracts/stakingPool.algo.ts:501","pc":[1696,1697,1698,1699,1700,1701,1702,1703,1704,1705]},{"teal":1984,"source":"contracts/stakingPool.algo.ts:501","pc":[1706,1707]},{"teal":1985,"source":"contracts/stakingPool.algo.ts:501","pc":[1708]},{"teal":1986,"source":"contracts/stakingPool.algo.ts:499","pc":[1709]},{"teal":1991,"source":"contracts/stakingPool.algo.ts:512","pc":[1710,1711,1712]},{"teal":1992,"source":"contracts/stakingPool.algo.ts:512","pc":[1713]},{"teal":1993,"source":"contracts/stakingPool.algo.ts:512","pc":[1714]},{"teal":2004,"source":"contracts/stakingPool.algo.ts:512","pc":[1715,1716,1717]},{"teal":2007,"source":"contracts/stakingPool.algo.ts:512","pc":[1718]},{"teal":2008,"source":"contracts/stakingPool.algo.ts:512","pc":[1719,1720]},{"teal":2015,"source":"contracts/stakingPool.algo.ts:514","pc":[1721]},{"teal":2016,"source":"contracts/stakingPool.algo.ts:514","pc":[1722]},{"teal":2017,"source":"contracts/stakingPool.algo.ts:514","pc":[1723,1724]},{"teal":2018,"source":"contracts/stakingPool.algo.ts:514","pc":[1725,1726]},{"teal":2019,"source":"contracts/stakingPool.algo.ts:514","pc":[1727,1728]},{"teal":2023,"source":"contracts/stakingPool.algo.ts:515","pc":[1729]},{"teal":2024,"source":"contracts/stakingPool.algo.ts:515","pc":[1730]},{"teal":2025,"source":"contracts/stakingPool.algo.ts:515","pc":[1731,1732]},{"teal":2029,"source":"contracts/stakingPool.algo.ts:516","pc":[1733]},{"teal":2030,"source":"contracts/stakingPool.algo.ts:516","pc":[1734]},{"teal":2031,"source":"contracts/stakingPool.algo.ts:516","pc":[1735]},{"teal":2032,"source":"contracts/stakingPool.algo.ts:516","pc":[1736,1737]},{"teal":2035,"source":"contracts/stakingPool.algo.ts:514","pc":[1738]},{"teal":2036,"source":"contracts/stakingPool.algo.ts:514","pc":[1739,1740]},{"teal":2039,"source":"contracts/stakingPool.algo.ts:514","pc":[1741]},{"teal":2040,"source":"contracts/stakingPool.algo.ts:514","pc":[1742,1743]},{"teal":2041,"source":"contracts/stakingPool.algo.ts:514","pc":[1744]},{"teal":2042,"source":"contracts/stakingPool.algo.ts:514","pc":[1745]},{"teal":2043,"source":"contracts/stakingPool.algo.ts:514","pc":[1746,1747]},{"teal":2044,"source":"contracts/stakingPool.algo.ts:514","pc":[1748,1749,1750]},{"teal":2045,"source":"contracts/stakingPool.algo.ts:514","pc":[1751,1752]},{"teal":2049,"source":"contracts/stakingPool.algo.ts:523","pc":[1753,1754]},{"teal":2050,"source":"contracts/stakingPool.algo.ts:523","pc":[1755,1756,1757]},{"teal":2051,"source":"contracts/stakingPool.algo.ts:523","pc":[1758]},{"teal":2052,"source":"contracts/stakingPool.algo.ts:523","pc":[1759,1760]},{"teal":2056,"source":"contracts/stakingPool.algo.ts:524","pc":[1761,1762]},{"teal":2057,"source":"contracts/stakingPool.algo.ts:524","pc":[1763,1764]},{"teal":2061,"source":"contracts/stakingPool.algo.ts:525","pc":[1765,1766]},{"teal":2062,"source":"contracts/stakingPool.algo.ts:525","pc":[1767,1768]},{"teal":2063,"source":"contracts/stakingPool.algo.ts:525","pc":[1769,1770]},{"teal":2064,"source":"contracts/stakingPool.algo.ts:525","pc":[1771]},{"teal":2065,"source":"contracts/stakingPool.algo.ts:525","pc":[1772]},{"teal":2066,"source":"contracts/stakingPool.algo.ts:525","pc":[1773,1774]},{"teal":2070,"source":"contracts/stakingPool.algo.ts:528","pc":[1775,1776]},{"teal":2071,"source":"contracts/stakingPool.algo.ts:528","pc":[1777]},{"teal":2072,"source":"contracts/stakingPool.algo.ts:528","pc":[1778,1779]},{"teal":2073,"source":"contracts/stakingPool.algo.ts:528","pc":[1780]},{"teal":2074,"source":"contracts/stakingPool.algo.ts:528","pc":[1781,1782]},{"teal":2075,"source":"contracts/stakingPool.algo.ts:528","pc":[1783]},{"teal":2076,"source":"contracts/stakingPool.algo.ts:528","pc":[1784]},{"teal":2077,"source":"contracts/stakingPool.algo.ts:528","pc":[1785,1786]},{"teal":2081,"source":"contracts/stakingPool.algo.ts:530","pc":[1787,1788]},{"teal":2082,"source":"contracts/stakingPool.algo.ts:530","pc":[1789,1790]},{"teal":2083,"source":"contracts/stakingPool.algo.ts:530","pc":[1791]},{"teal":2086,"source":"contracts/stakingPool.algo.ts:530","errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[1792]},{"teal":2090,"source":"contracts/stakingPool.algo.ts:532","pc":[1793,1794,1795]},{"teal":2094,"source":"contracts/stakingPool.algo.ts:535","pc":[1796,1797]},{"teal":2095,"source":"contracts/stakingPool.algo.ts:535","pc":[1798,1799]},{"teal":2096,"source":"contracts/stakingPool.algo.ts:535","pc":[1800]},{"teal":2100,"source":"contracts/stakingPool.algo.ts:536","pc":[1801,1802]},{"teal":2101,"source":"contracts/stakingPool.algo.ts:536","pc":[1803]},{"teal":2102,"source":"contracts/stakingPool.algo.ts:536","pc":[1804]},{"teal":2103,"source":"contracts/stakingPool.algo.ts:536","pc":[1805]},{"teal":2104,"source":"contracts/stakingPool.algo.ts:536","pc":[1806,1807]},{"teal":2105,"source":"contracts/stakingPool.algo.ts:536","pc":[1808]},{"teal":2106,"source":"contracts/stakingPool.algo.ts:536","pc":[1809]},{"teal":2110,"source":"contracts/stakingPool.algo.ts:541","pc":[1810,1811]},{"teal":2111,"source":"contracts/stakingPool.algo.ts:541","pc":[1812,1813,1814]},{"teal":2112,"source":"contracts/stakingPool.algo.ts:541","pc":[1815]},{"teal":2113,"source":"contracts/stakingPool.algo.ts:541","pc":[1816]},{"teal":2114,"source":"contracts/stakingPool.algo.ts:541","pc":[1817]},{"teal":2115,"source":"contracts/stakingPool.algo.ts:541","pc":[1818,1819]},{"teal":2119,"source":"contracts/stakingPool.algo.ts:542","pc":[1820,1821,1822]},{"teal":2120,"source":"contracts/stakingPool.algo.ts:542","pc":[1823,1824]},{"teal":2124,"source":"contracts/stakingPool.algo.ts:543","pc":[1825,1826]},{"teal":2125,"source":"contracts/stakingPool.algo.ts:543","pc":[1827,1828]},{"teal":2130,"source":"contracts/stakingPool.algo.ts:548","pc":[1829,1830]},{"teal":2131,"source":"contracts/stakingPool.algo.ts:548","pc":[1831,1832,1833]},{"teal":2137,"source":"contracts/stakingPool.algo.ts:549","pc":[1834,1835]},{"teal":2138,"source":"contracts/stakingPool.algo.ts:549","pc":[1836]},{"teal":2139,"source":"contracts/stakingPool.algo.ts:549","pc":[1837]},{"teal":2140,"source":"contracts/stakingPool.algo.ts:549","pc":[1838]},{"teal":2141,"source":"contracts/stakingPool.algo.ts:549","pc":[1839,1840,1841]},{"teal":2149,"source":"contracts/stakingPool.algo.ts:551","pc":[1842]},{"teal":2150,"source":"contracts/stakingPool.algo.ts:551","pc":[1843]},{"teal":2151,"source":"contracts/stakingPool.algo.ts:551","pc":[1844,1845]},{"teal":2152,"source":"contracts/stakingPool.algo.ts:551","pc":[1846,1847]},{"teal":2153,"source":"contracts/stakingPool.algo.ts:551","pc":[1848,1849]},{"teal":2157,"source":"contracts/stakingPool.algo.ts:552","pc":[1850]},{"teal":2158,"source":"contracts/stakingPool.algo.ts:552","pc":[1851]},{"teal":2159,"source":"contracts/stakingPool.algo.ts:552","pc":[1852,1853]},{"teal":2163,"source":"contracts/stakingPool.algo.ts:553","pc":[1854]},{"teal":2164,"source":"contracts/stakingPool.algo.ts:553","pc":[1855]},{"teal":2165,"source":"contracts/stakingPool.algo.ts:553","pc":[1856]},{"teal":2166,"source":"contracts/stakingPool.algo.ts:553","pc":[1857,1858]},{"teal":2167,"source":"contracts/stakingPool.algo.ts:553","pc":[1859,1860,1861,1862,1863,1864,1865,1866,1867,1868]},{"teal":2168,"source":"contracts/stakingPool.algo.ts:553","pc":[1869,1870]},{"teal":2171,"source":"contracts/stakingPool.algo.ts:551","pc":[1871]},{"teal":2172,"source":"contracts/stakingPool.algo.ts:551","pc":[1872,1873]},{"teal":2175,"source":"contracts/stakingPool.algo.ts:551","pc":[1874]},{"teal":2176,"source":"contracts/stakingPool.algo.ts:551","pc":[1875,1876]},{"teal":2177,"source":"contracts/stakingPool.algo.ts:551","pc":[1877]},{"teal":2178,"source":"contracts/stakingPool.algo.ts:551","pc":[1878]},{"teal":2179,"source":"contracts/stakingPool.algo.ts:551","pc":[1879,1880]},{"teal":2180,"source":"contracts/stakingPool.algo.ts:551","pc":[1881,1882,1883]},{"teal":2181,"source":"contracts/stakingPool.algo.ts:551","pc":[1884]},{"teal":2182,"source":"contracts/stakingPool.algo.ts:551","pc":[1885,1886]},{"teal":2186,"source":"contracts/stakingPool.algo.ts:555","pc":[1887,1888]},{"teal":2187,"source":"contracts/stakingPool.algo.ts:555","pc":[1889,1890]},{"teal":2188,"source":"contracts/stakingPool.algo.ts:555","pc":[1891]},{"teal":2189,"source":"contracts/stakingPool.algo.ts:555","pc":[1892,1893]},{"teal":2195,"source":"contracts/stakingPool.algo.ts:560","pc":[1894,1895]},{"teal":2196,"source":"contracts/stakingPool.algo.ts:560","pc":[1896]},{"teal":2197,"source":"contracts/stakingPool.algo.ts:560","pc":[1897]},{"teal":2198,"source":"contracts/stakingPool.algo.ts:560","pc":[1898]},{"teal":2199,"source":"contracts/stakingPool.algo.ts:560","pc":[1899,1900,1901]},{"teal":2207,"source":"contracts/stakingPool.algo.ts:561","pc":[1902]},{"teal":2208,"source":"contracts/stakingPool.algo.ts:561","pc":[1903]},{"teal":2209,"source":"contracts/stakingPool.algo.ts:561","pc":[1904,1905]},{"teal":2210,"source":"contracts/stakingPool.algo.ts:561","pc":[1906,1907]},{"teal":2211,"source":"contracts/stakingPool.algo.ts:561","pc":[1908,1909]},{"teal":2215,"source":"contracts/stakingPool.algo.ts:562","pc":[1910]},{"teal":2216,"source":"contracts/stakingPool.algo.ts:562","pc":[1911]},{"teal":2217,"source":"contracts/stakingPool.algo.ts:562","pc":[1912,1913]},{"teal":2221,"source":"contracts/stakingPool.algo.ts:563","pc":[1914]},{"teal":2222,"source":"contracts/stakingPool.algo.ts:563","pc":[1915]},{"teal":2223,"source":"contracts/stakingPool.algo.ts:563","pc":[1916]},{"teal":2224,"source":"contracts/stakingPool.algo.ts:563","pc":[1917,1918]},{"teal":2227,"source":"contracts/stakingPool.algo.ts:561","pc":[1919]},{"teal":2228,"source":"contracts/stakingPool.algo.ts:561","pc":[1920,1921]},{"teal":2231,"source":"contracts/stakingPool.algo.ts:561","pc":[1922]},{"teal":2232,"source":"contracts/stakingPool.algo.ts:561","pc":[1923,1924]},{"teal":2233,"source":"contracts/stakingPool.algo.ts:561","pc":[1925]},{"teal":2234,"source":"contracts/stakingPool.algo.ts:561","pc":[1926]},{"teal":2235,"source":"contracts/stakingPool.algo.ts:561","pc":[1927,1928]},{"teal":2236,"source":"contracts/stakingPool.algo.ts:561","pc":[1929,1930,1931]},{"teal":2237,"source":"contracts/stakingPool.algo.ts:561","pc":[1932,1933]},{"teal":2238,"source":"contracts/stakingPool.algo.ts:560","pc":[1934,1935,1936]},{"teal":2246,"source":"contracts/stakingPool.algo.ts:567","pc":[1937]},{"teal":2247,"source":"contracts/stakingPool.algo.ts:567","pc":[1938]},{"teal":2248,"source":"contracts/stakingPool.algo.ts:567","pc":[1939,1940]},{"teal":2249,"source":"contracts/stakingPool.algo.ts:567","pc":[1941,1942]},{"teal":2250,"source":"contracts/stakingPool.algo.ts:567","pc":[1943,1944]},{"teal":2254,"source":"contracts/stakingPool.algo.ts:568","pc":[1945,1946]},{"teal":2255,"source":"contracts/stakingPool.algo.ts:568","pc":[1947,1948]},{"teal":2259,"source":"contracts/stakingPool.algo.ts:569","pc":[1949]},{"teal":2260,"source":"contracts/stakingPool.algo.ts:569","pc":[1950]},{"teal":2261,"source":"contracts/stakingPool.algo.ts:569","pc":[1951]},{"teal":2262,"source":"contracts/stakingPool.algo.ts:569","pc":[1952,1953]},{"teal":2263,"source":"contracts/stakingPool.algo.ts:569","pc":[1954]},{"teal":2264,"source":"contracts/stakingPool.algo.ts:569","pc":[1955]},{"teal":2265,"source":"contracts/stakingPool.algo.ts:569","pc":[1956]},{"teal":2266,"source":"contracts/stakingPool.algo.ts:569","pc":[1957,1958,1959]},{"teal":2267,"source":"contracts/stakingPool.algo.ts:569","pc":[1960]},{"teal":2268,"source":"contracts/stakingPool.algo.ts:569","pc":[1961]},{"teal":2269,"source":"contracts/stakingPool.algo.ts:569","pc":[1962,1963]},{"teal":2272,"source":"contracts/stakingPool.algo.ts:567","pc":[1964]},{"teal":2273,"source":"contracts/stakingPool.algo.ts:567","pc":[1965,1966]},{"teal":2276,"source":"contracts/stakingPool.algo.ts:567","pc":[1967]},{"teal":2277,"source":"contracts/stakingPool.algo.ts:567","pc":[1968,1969]},{"teal":2278,"source":"contracts/stakingPool.algo.ts:567","pc":[1970]},{"teal":2279,"source":"contracts/stakingPool.algo.ts:567","pc":[1971]},{"teal":2280,"source":"contracts/stakingPool.algo.ts:567","pc":[1972,1973]},{"teal":2281,"source":"contracts/stakingPool.algo.ts:567","pc":[1974,1975,1976]},{"teal":2282,"source":"contracts/stakingPool.algo.ts:567","pc":[1977,1978]},{"teal":2292,"source":"contracts/stakingPool.algo.ts:576","pc":[1979]},{"teal":2293,"source":"contracts/stakingPool.algo.ts:576","pc":[1980]},{"teal":2294,"source":"contracts/stakingPool.algo.ts:576","pc":[1981,1982]},{"teal":2295,"source":"contracts/stakingPool.algo.ts:576","pc":[1983,1984,1985,1986,1987,1988]},{"teal":2296,"source":"contracts/stakingPool.algo.ts:576","pc":[1989,1990]},{"teal":2300,"source":"contracts/stakingPool.algo.ts:577","pc":[1991]},{"teal":2301,"source":"contracts/stakingPool.algo.ts:577","pc":[1992]},{"teal":2302,"source":"contracts/stakingPool.algo.ts:577","pc":[1993,1994]},{"teal":2306,"source":"contracts/stakingPool.algo.ts:578","pc":[1995]},{"teal":2307,"source":"contracts/stakingPool.algo.ts:578","pc":[1996]},{"teal":2308,"source":"contracts/stakingPool.algo.ts:578","pc":[1997]},{"teal":2309,"source":"contracts/stakingPool.algo.ts:578","pc":[1998,1999]},{"teal":2312,"source":"contracts/stakingPool.algo.ts:576","pc":[2000]},{"teal":2313,"source":"contracts/stakingPool.algo.ts:576","pc":[2001,2002]},{"teal":2316,"source":"contracts/stakingPool.algo.ts:576","pc":[2003]},{"teal":2317,"source":"contracts/stakingPool.algo.ts:576","pc":[2004,2005]},{"teal":2318,"source":"contracts/stakingPool.algo.ts:576","pc":[2006]},{"teal":2319,"source":"contracts/stakingPool.algo.ts:576","pc":[2007]},{"teal":2320,"source":"contracts/stakingPool.algo.ts:576","pc":[2008,2009]},{"teal":2321,"source":"contracts/stakingPool.algo.ts:576","pc":[2010,2011,2012]},{"teal":2322,"source":"contracts/stakingPool.algo.ts:576","pc":[2013,2014]},{"teal":2326,"source":"contracts/stakingPool.algo.ts:580","pc":[2015,2016]},{"teal":2327,"source":"contracts/stakingPool.algo.ts:580","pc":[2017,2018,2019]},{"teal":2328,"source":"contracts/stakingPool.algo.ts:580","pc":[2020]},{"teal":2329,"source":"contracts/stakingPool.algo.ts:580","pc":[2021,2022]},{"teal":2333,"source":"contracts/stakingPool.algo.ts:586","pc":[2023,2024]},{"teal":2334,"source":"contracts/stakingPool.algo.ts:586","pc":[2025,2026]},{"teal":2335,"source":"contracts/stakingPool.algo.ts:586","pc":[2027]},{"teal":2336,"source":"contracts/stakingPool.algo.ts:586","pc":[2028,2029]},{"teal":2337,"source":"contracts/stakingPool.algo.ts:586","pc":[2030]},{"teal":2338,"source":"contracts/stakingPool.algo.ts:586","pc":[2031]},{"teal":2339,"source":"contracts/stakingPool.algo.ts:586","pc":[2032,2033]},{"teal":2340,"source":"contracts/stakingPool.algo.ts:586","pc":[2034,2035]},{"teal":2341,"source":"contracts/stakingPool.algo.ts:586","pc":[2036]},{"teal":2342,"source":"contracts/stakingPool.algo.ts:586","pc":[2037]},{"teal":2343,"source":"contracts/stakingPool.algo.ts:586","pc":[2038,2039]},{"teal":2347,"source":"contracts/stakingPool.algo.ts:587","pc":[2040]},{"teal":2348,"source":"contracts/stakingPool.algo.ts:587","pc":[2041,2042]},{"teal":2352,"source":"contracts/stakingPool.algo.ts:588","pc":[2043,2044,2045]},{"teal":2353,"source":"contracts/stakingPool.algo.ts:588","pc":[2046,2047]},{"teal":2358,"source":"contracts/stakingPool.algo.ts:596","pc":[2048,2049]},{"teal":2359,"source":"contracts/stakingPool.algo.ts:596","pc":[2050,2051,2052]},{"teal":2360,"source":"contracts/stakingPool.algo.ts:596","pc":[2053]},{"teal":2361,"source":"contracts/stakingPool.algo.ts:596","pc":[2054,2055]},{"teal":2362,"source":"contracts/stakingPool.algo.ts:596","pc":[2056]},{"teal":2363,"source":"contracts/stakingPool.algo.ts:596","pc":[2057,2058,2059]},{"teal":2368,"source":"contracts/stakingPool.algo.ts:597","pc":[2060]},{"teal":2369,"source":"contracts/stakingPool.algo.ts:597","pc":[2061,2062]},{"teal":2374,"source":"contracts/stakingPool.algo.ts:603","pc":[2063]},{"teal":2375,"source":"contracts/stakingPool.algo.ts:603","pc":[2064,2065]},{"teal":2379,"source":"contracts/stakingPool.algo.ts:604","pc":[2066]},{"teal":2380,"source":"contracts/stakingPool.algo.ts:604","pc":[2067,2068]},{"teal":2384,"source":"contracts/stakingPool.algo.ts:605","pc":[2069]},{"teal":2385,"source":"contracts/stakingPool.algo.ts:605","pc":[2070,2071]},{"teal":2389,"source":"contracts/stakingPool.algo.ts:606","pc":[2072]},{"teal":2390,"source":"contracts/stakingPool.algo.ts:606","pc":[2073,2074]},{"teal":2395,"source":"contracts/stakingPool.algo.ts:607","pc":[2075,2076]},{"teal":2396,"source":"contracts/stakingPool.algo.ts:607","pc":[2077,2078,2079]},{"teal":2402,"source":"contracts/stakingPool.algo.ts:609","pc":[2080,2081]},{"teal":2403,"source":"contracts/stakingPool.algo.ts:609","pc":[2082,2083]},{"teal":2404,"source":"contracts/stakingPool.algo.ts:609","pc":[2084,2085,2086]},{"teal":2405,"source":"contracts/stakingPool.algo.ts:609","pc":[2087]},{"teal":2406,"source":"contracts/stakingPool.algo.ts:609","pc":[2088,2089]},{"teal":2407,"source":"contracts/stakingPool.algo.ts:609","pc":[2090]},{"teal":2408,"source":"contracts/stakingPool.algo.ts:609","pc":[2091,2092]},{"teal":2409,"source":"contracts/stakingPool.algo.ts:609","pc":[2093]},{"teal":2410,"source":"contracts/stakingPool.algo.ts:608","pc":[2094,2095]},{"teal":2415,"source":"contracts/stakingPool.algo.ts:613","pc":[2096,2097]},{"teal":2416,"source":"contracts/stakingPool.algo.ts:613","pc":[2098,2099]},{"teal":2417,"source":"contracts/stakingPool.algo.ts:613","pc":[2100,2101,2102]},{"teal":2418,"source":"contracts/stakingPool.algo.ts:613","pc":[2103]},{"teal":2419,"source":"contracts/stakingPool.algo.ts:613","pc":[2104]},{"teal":2420,"source":"contracts/stakingPool.algo.ts:613","pc":[2105,2106,2107]},{"teal":2425,"source":"contracts/stakingPool.algo.ts:619","pc":[2108,2109]},{"teal":2426,"source":"contracts/stakingPool.algo.ts:619","pc":[2110]},{"teal":2427,"source":"contracts/stakingPool.algo.ts:619","pc":[2111,2112]},{"teal":2428,"source":"contracts/stakingPool.algo.ts:619","pc":[2113]},{"teal":2429,"source":"contracts/stakingPool.algo.ts:619","pc":[2114]},{"teal":2430,"source":"contracts/stakingPool.algo.ts:619","pc":[2115]},{"teal":2431,"source":"contracts/stakingPool.algo.ts:619","pc":[2116,2117]},{"teal":2432,"source":"contracts/stakingPool.algo.ts:619","pc":[2118]},{"teal":2433,"source":"contracts/stakingPool.algo.ts:619","pc":[2119]},{"teal":2434,"source":"contracts/stakingPool.algo.ts:619","pc":[2120,2121]},{"teal":2435,"source":"contracts/stakingPool.algo.ts:619","pc":[2122]},{"teal":2436,"source":"contracts/stakingPool.algo.ts:619","pc":[2123]},{"teal":2437,"source":"contracts/stakingPool.algo.ts:619","pc":[2124,2125]},{"teal":2441,"source":"contracts/stakingPool.algo.ts:622","pc":[2126,2127]},{"teal":2442,"source":"contracts/stakingPool.algo.ts:622","pc":[2128,2129,2130]},{"teal":2443,"source":"contracts/stakingPool.algo.ts:622","pc":[2131]},{"teal":2444,"source":"contracts/stakingPool.algo.ts:622","pc":[2132,2133]},{"teal":2445,"source":"contracts/stakingPool.algo.ts:622","pc":[2134]},{"teal":2446,"source":"contracts/stakingPool.algo.ts:622","pc":[2135]},{"teal":2447,"source":"contracts/stakingPool.algo.ts:622","pc":[2136,2137]},{"teal":2448,"source":"contracts/stakingPool.algo.ts:622","pc":[2138]},{"teal":2449,"source":"contracts/stakingPool.algo.ts:622","pc":[2139]},{"teal":2450,"source":"contracts/stakingPool.algo.ts:622","pc":[2140]},{"teal":2451,"source":"contracts/stakingPool.algo.ts:622","pc":[2141]},{"teal":2452,"source":"contracts/stakingPool.algo.ts:622","pc":[2142]},{"teal":2455,"source":"contracts/stakingPool.algo.ts:622","errorMessage":"wideRatio failed","pc":[2143]},{"teal":2456,"source":"contracts/stakingPool.algo.ts:622","pc":[2144,2145]},{"teal":2464,"source":"contracts/stakingPool.algo.ts:625","pc":[2146,2147]},{"teal":2465,"source":"contracts/stakingPool.algo.ts:625","pc":[2148]},{"teal":2466,"source":"contracts/stakingPool.algo.ts:625","pc":[2149]},{"teal":2467,"source":"contracts/stakingPool.algo.ts:625","pc":[2150,2151,2152]},{"teal":2473,"source":"contracts/stakingPool.algo.ts:630","pc":[2153,2154]},{"teal":2474,"source":"contracts/stakingPool.algo.ts:630","pc":[2155,2156]},{"teal":2475,"source":"contracts/stakingPool.algo.ts:630","pc":[2157]},{"teal":2476,"source":"contracts/stakingPool.algo.ts:630","pc":[2158,2159,2160]},{"teal":2481,"source":"contracts/stakingPool.algo.ts:631","pc":[2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184]},{"teal":2482,"source":"contracts/stakingPool.algo.ts:631","pc":[2185]},{"teal":2486,"source":"contracts/stakingPool.algo.ts:632","pc":[2186]},{"teal":2494,"source":"contracts/stakingPool.algo.ts:636","pc":[2187,2188]},{"teal":2495,"source":"contracts/stakingPool.algo.ts:636","pc":[2189,2190,2191]},{"teal":2503,"source":"contracts/stakingPool.algo.ts:643","pc":[2192,2193]},{"teal":2504,"source":"contracts/stakingPool.algo.ts:643","pc":[2194,2195]},{"teal":2505,"source":"contracts/stakingPool.algo.ts:643","pc":[2196,2197,2198]},{"teal":2506,"source":"contracts/stakingPool.algo.ts:643","pc":[2199]},{"teal":2507,"source":"contracts/stakingPool.algo.ts:642","pc":[2200]},{"teal":2508,"source":"contracts/stakingPool.algo.ts:642","pc":[2201]},{"teal":2509,"source":"contracts/stakingPool.algo.ts:644","pc":[2202,2203]},{"teal":2510,"source":"contracts/stakingPool.algo.ts:642","pc":[2204]},{"teal":2511,"source":"contracts/stakingPool.algo.ts:642","pc":[2205]},{"teal":2512,"source":"contracts/stakingPool.algo.ts:642","pc":[2206]},{"teal":2513,"source":"contracts/stakingPool.algo.ts:642","pc":[2207]},{"teal":2514,"source":"contracts/stakingPool.algo.ts:642","pc":[2208]},{"teal":2517,"source":"contracts/stakingPool.algo.ts:642","errorMessage":"wideRatio failed","pc":[2209]},{"teal":2518,"source":"contracts/stakingPool.algo.ts:642","pc":[2210,2211]},{"teal":2522,"source":"contracts/stakingPool.algo.ts:647","pc":[2212,2213]},{"teal":2523,"source":"contracts/stakingPool.algo.ts:647","pc":[2214,2215]},{"teal":2524,"source":"contracts/stakingPool.algo.ts:647","pc":[2216]},{"teal":2525,"source":"contracts/stakingPool.algo.ts:647","pc":[2217]},{"teal":2526,"source":"contracts/stakingPool.algo.ts:647","pc":[2218,2219]},{"teal":2527,"source":"contracts/stakingPool.algo.ts:647","pc":[2220,2221,2222]},{"teal":2528,"source":"contracts/stakingPool.algo.ts:647","pc":[2223]},{"teal":2529,"source":"contracts/stakingPool.algo.ts:647","pc":[2224]},{"teal":2530,"source":"contracts/stakingPool.algo.ts:647","pc":[2225]},{"teal":2531,"source":"contracts/stakingPool.algo.ts:647","pc":[2226]},{"teal":2532,"source":"contracts/stakingPool.algo.ts:647","pc":[2227]},{"teal":2533,"source":"contracts/stakingPool.algo.ts:647","pc":[2228]},{"teal":2536,"source":"contracts/stakingPool.algo.ts:647","errorMessage":"wideRatio failed","pc":[2229]},{"teal":2537,"source":"contracts/stakingPool.algo.ts:647","pc":[2230,2231]},{"teal":2542,"source":"contracts/stakingPool.algo.ts:649","pc":[2232,2233]},{"teal":2543,"source":"contracts/stakingPool.algo.ts:649","pc":[2234,2235]},{"teal":2544,"source":"contracts/stakingPool.algo.ts:649","pc":[2236,2237]},{"teal":2545,"source":"contracts/stakingPool.algo.ts:649","pc":[2238]},{"teal":2546,"source":"contracts/stakingPool.algo.ts:649","pc":[2239]},{"teal":2547,"source":"contracts/stakingPool.algo.ts:649","pc":[2240,2241,2242]},{"teal":2552,"source":"contracts/stakingPool.algo.ts:650","pc":[2243,2244]},{"teal":2553,"source":"contracts/stakingPool.algo.ts:650","pc":[2245,2246]},{"teal":2554,"source":"contracts/stakingPool.algo.ts:650","pc":[2247]},{"teal":2555,"source":"contracts/stakingPool.algo.ts:650","pc":[2248,2249]},{"teal":2560,"source":"contracts/stakingPool.algo.ts:653","pc":[2250,2251]},{"teal":2561,"source":"contracts/stakingPool.algo.ts:653","pc":[2252,2253]},{"teal":2562,"source":"contracts/stakingPool.algo.ts:653","pc":[2254]},{"teal":2563,"source":"contracts/stakingPool.algo.ts:653","pc":[2255,2256]},{"teal":2571,"source":"contracts/stakingPool.algo.ts:654","pc":[2257]},{"teal":2572,"source":"contracts/stakingPool.algo.ts:654","pc":[2258]},{"teal":2573,"source":"contracts/stakingPool.algo.ts:654","pc":[2259,2260]},{"teal":2577,"source":"contracts/stakingPool.algo.ts:655","pc":[2261,2262]},{"teal":2578,"source":"contracts/stakingPool.algo.ts:655","pc":[2263,2264]},{"teal":2582,"source":"contracts/stakingPool.algo.ts:656","pc":[2265,2266]},{"teal":2583,"source":"contracts/stakingPool.algo.ts:656","pc":[2267]},{"teal":2584,"source":"contracts/stakingPool.algo.ts:656","pc":[2268]},{"teal":2585,"source":"contracts/stakingPool.algo.ts:656","pc":[2269,2270]},{"teal":2586,"source":"contracts/stakingPool.algo.ts:656","pc":[2271,2272]},{"teal":2590,"source":"contracts/stakingPool.algo.ts:657","pc":[2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308]},{"teal":2591,"source":"contracts/stakingPool.algo.ts:657","pc":[2309,2310]},{"teal":2594,"source":"contracts/stakingPool.algo.ts:654","pc":[2311]},{"teal":2595,"source":"contracts/stakingPool.algo.ts:654","pc":[2312,2313]},{"teal":2598,"source":"contracts/stakingPool.algo.ts:654","pc":[2314]},{"teal":2602,"source":"contracts/stakingPool.algo.ts:660","pc":[2315,2316]},{"teal":2603,"source":"contracts/stakingPool.algo.ts:660","pc":[2317,2318]},{"teal":2604,"source":"contracts/stakingPool.algo.ts:636","pc":[2319,2320,2321]},{"teal":2609,"source":"contracts/stakingPool.algo.ts:661","pc":[2322,2323]},{"teal":2610,"source":"contracts/stakingPool.algo.ts:661","pc":[2324,2325,2326]},{"teal":2611,"source":"contracts/stakingPool.algo.ts:661","pc":[2327]},{"teal":2612,"source":"contracts/stakingPool.algo.ts:661","pc":[2328]},{"teal":2613,"source":"contracts/stakingPool.algo.ts:661","pc":[2329]},{"teal":2614,"source":"contracts/stakingPool.algo.ts:661","pc":[2330,2331,2332]},{"teal":2622,"source":"contracts/stakingPool.algo.ts:665","pc":[2333,2334]},{"teal":2623,"source":"contracts/stakingPool.algo.ts:665","pc":[2335,2336]},{"teal":2624,"source":"contracts/stakingPool.algo.ts:665","pc":[2337,2338,2339]},{"teal":2625,"source":"contracts/stakingPool.algo.ts:665","pc":[2340]},{"teal":2626,"source":"contracts/stakingPool.algo.ts:664","pc":[2341]},{"teal":2627,"source":"contracts/stakingPool.algo.ts:664","pc":[2342]},{"teal":2628,"source":"contracts/stakingPool.algo.ts:666","pc":[2343,2344]},{"teal":2629,"source":"contracts/stakingPool.algo.ts:664","pc":[2345]},{"teal":2630,"source":"contracts/stakingPool.algo.ts:664","pc":[2346]},{"teal":2631,"source":"contracts/stakingPool.algo.ts:664","pc":[2347]},{"teal":2632,"source":"contracts/stakingPool.algo.ts:664","pc":[2348]},{"teal":2633,"source":"contracts/stakingPool.algo.ts:664","pc":[2349]},{"teal":2636,"source":"contracts/stakingPool.algo.ts:664","errorMessage":"wideRatio failed","pc":[2350]},{"teal":2637,"source":"contracts/stakingPool.algo.ts:664","pc":[2351,2352]},{"teal":2641,"source":"contracts/stakingPool.algo.ts:670","pc":[2353,2354]},{"teal":2642,"source":"contracts/stakingPool.algo.ts:670","pc":[2355,2356]},{"teal":2643,"source":"contracts/stakingPool.algo.ts:670","pc":[2357]},{"teal":2644,"source":"contracts/stakingPool.algo.ts:670","pc":[2358,2359]},{"teal":2649,"source":"contracts/stakingPool.algo.ts:677","pc":[2360,2361]},{"teal":2650,"source":"contracts/stakingPool.algo.ts:677","pc":[2362]},{"teal":2651,"source":"contracts/stakingPool.algo.ts:677","pc":[2363]},{"teal":2652,"source":"contracts/stakingPool.algo.ts:677","pc":[2364,2365,2366]},{"teal":2657,"source":"contracts/stakingPool.algo.ts:680","pc":[2367]},{"teal":2658,"source":"contracts/stakingPool.algo.ts:680","pc":[2368,2369]},{"teal":2664,"source":"contracts/stakingPool.algo.ts:682","pc":[2370,2371]},{"teal":2665,"source":"contracts/stakingPool.algo.ts:682","pc":[2372,2373,2374]},{"teal":2666,"source":"contracts/stakingPool.algo.ts:682","pc":[2375,2376]},{"teal":2667,"source":"contracts/stakingPool.algo.ts:682","pc":[2377,2378,2379]},{"teal":2668,"source":"contracts/stakingPool.algo.ts:682","pc":[2380]},{"teal":2669,"source":"contracts/stakingPool.algo.ts:682","pc":[2381]},{"teal":2670,"source":"contracts/stakingPool.algo.ts:682","pc":[2382,2383,2384]},{"teal":2671,"source":"contracts/stakingPool.algo.ts:683","pc":[2385,2386]},{"teal":2672,"source":"contracts/stakingPool.algo.ts:683","pc":[2387,2388,2389]},{"teal":2673,"source":"contracts/stakingPool.algo.ts:683","pc":[2390,2391]},{"teal":2674,"source":"contracts/stakingPool.algo.ts:683","pc":[2392]},{"teal":2675,"source":"contracts/stakingPool.algo.ts:683","pc":[2393,2394]},{"teal":2676,"source":"contracts/stakingPool.algo.ts:683","pc":[2395,2396,2397]},{"teal":2677,"source":"contracts/stakingPool.algo.ts:683","pc":[2398,2399]},{"teal":2678,"source":"contracts/stakingPool.algo.ts:683","pc":[2400]},{"teal":2679,"source":"contracts/stakingPool.algo.ts:683","pc":[2401]},{"teal":2680,"source":"contracts/stakingPool.algo.ts:683","pc":[2402,2403]},{"teal":2681,"source":"contracts/stakingPool.algo.ts:683","pc":[2404]},{"teal":2682,"source":"contracts/stakingPool.algo.ts:682","pc":[2405]},{"teal":2685,"source":"contracts/stakingPool.algo.ts:681","pc":[2406,2407,2408]},{"teal":2690,"source":"contracts/stakingPool.algo.ts:685","pc":[2409,2410]},{"teal":2691,"source":"contracts/stakingPool.algo.ts:685","pc":[2411,2412]},{"teal":2692,"source":"contracts/stakingPool.algo.ts:685","pc":[2413]},{"teal":2693,"source":"contracts/stakingPool.algo.ts:685","pc":[2414,2415,2416]},{"teal":2694,"source":"contracts/stakingPool.algo.ts:685","pc":[2417,2418]},{"teal":2695,"source":"contracts/stakingPool.algo.ts:685","pc":[2419,2420,2421]},{"teal":2698,"source":"contracts/stakingPool.algo.ts:685","pc":[2422,2423]},{"teal":2701,"source":"contracts/stakingPool.algo.ts:685","pc":[2424,2425]},{"teal":2709,"source":"contracts/stakingPool.algo.ts:686","pc":[2426]},{"teal":2710,"source":"contracts/stakingPool.algo.ts:686","pc":[2427]},{"teal":2711,"source":"contracts/stakingPool.algo.ts:686","pc":[2428,2429]},{"teal":2715,"source":"contracts/stakingPool.algo.ts:687","pc":[2430,2431]},{"teal":2716,"source":"contracts/stakingPool.algo.ts:687","pc":[2432,2433]},{"teal":2720,"source":"contracts/stakingPool.algo.ts:688","pc":[2434,2435]},{"teal":2721,"source":"contracts/stakingPool.algo.ts:688","pc":[2436,2437,2438]},{"teal":2722,"source":"contracts/stakingPool.algo.ts:688","pc":[2439,2440]},{"teal":2726,"source":"contracts/stakingPool.algo.ts:689","pc":[2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495]},{"teal":2727,"source":"contracts/stakingPool.algo.ts:689","pc":[2496,2497]},{"teal":2730,"source":"contracts/stakingPool.algo.ts:686","pc":[2498]},{"teal":2731,"source":"contracts/stakingPool.algo.ts:686","pc":[2499,2500]},{"teal":2734,"source":"contracts/stakingPool.algo.ts:686","pc":[2501]},{"teal":2740,"source":"contracts/stakingPool.algo.ts:692","pc":[2502,2503]},{"teal":2741,"source":"contracts/stakingPool.algo.ts:692","pc":[2504,2505]},{"teal":2742,"source":"contracts/stakingPool.algo.ts:692","pc":[2506]},{"teal":2743,"source":"contracts/stakingPool.algo.ts:692","pc":[2507]},{"teal":2744,"source":"contracts/stakingPool.algo.ts:692","pc":[2508]},{"teal":2745,"source":"contracts/stakingPool.algo.ts:692","pc":[2509,2510,2511]},{"teal":2754,"source":"contracts/stakingPool.algo.ts:693","pc":[2512]},{"teal":2755,"source":"contracts/stakingPool.algo.ts:693","pc":[2513]},{"teal":2756,"source":"contracts/stakingPool.algo.ts:693","pc":[2514,2515]},{"teal":2760,"source":"contracts/stakingPool.algo.ts:694","pc":[2516,2517]},{"teal":2761,"source":"contracts/stakingPool.algo.ts:694","pc":[2518,2519]},{"teal":2762,"source":"contracts/stakingPool.algo.ts:694","pc":[2520]},{"teal":2763,"source":"contracts/stakingPool.algo.ts:694","pc":[2521,2522]},{"teal":2767,"source":"contracts/stakingPool.algo.ts:695","pc":[2523,2524]},{"teal":2768,"source":"contracts/stakingPool.algo.ts:695","pc":[2525,2526,2527]},{"teal":2769,"source":"contracts/stakingPool.algo.ts:695","pc":[2528,2529]},{"teal":2773,"source":"contracts/stakingPool.algo.ts:696","pc":[2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547]},{"teal":2774,"source":"contracts/stakingPool.algo.ts:696","pc":[2548,2549]},{"teal":2777,"source":"contracts/stakingPool.algo.ts:693","pc":[2550]},{"teal":2778,"source":"contracts/stakingPool.algo.ts:693","pc":[2551,2552]},{"teal":2781,"source":"contracts/stakingPool.algo.ts:693","pc":[2553]},{"teal":2790,"source":"contracts/stakingPool.algo.ts:708","pc":[2554]},{"teal":2791,"source":"contracts/stakingPool.algo.ts:708","pc":[2555,2556]},{"teal":2796,"source":"contracts/stakingPool.algo.ts:732","pc":[2557,2558]},{"teal":2797,"source":"contracts/stakingPool.algo.ts:732","pc":[2559]},{"teal":2798,"source":"contracts/stakingPool.algo.ts:732","pc":[2560]},{"teal":2799,"source":"contracts/stakingPool.algo.ts:732","pc":[2561]},{"teal":2800,"source":"contracts/stakingPool.algo.ts:732","pc":[2562,2563,2564]},{"teal":2801,"source":"contracts/stakingPool.algo.ts:732","pc":[2565,2566]},{"teal":2802,"source":"contracts/stakingPool.algo.ts:732","pc":[2567]},{"teal":2803,"source":"contracts/stakingPool.algo.ts:732","pc":[2568]},{"teal":2804,"source":"contracts/stakingPool.algo.ts:732","pc":[2569]},{"teal":2807,"source":"contracts/stakingPool.algo.ts:732","pc":[2570,2571,2572]},{"teal":2812,"source":"contracts/stakingPool.algo.ts:733","pc":[2573]},{"teal":2813,"source":"contracts/stakingPool.algo.ts:733","pc":[2574,2575]},{"teal":2817,"source":"contracts/stakingPool.algo.ts:734","pc":[2576,2577]},{"teal":2818,"source":"contracts/stakingPool.algo.ts:734","pc":[2578,2579]},{"teal":2822,"source":"contracts/stakingPool.algo.ts:736","pc":[2580,2581]},{"teal":2823,"source":"contracts/stakingPool.algo.ts:736","pc":[2582,2583]},{"teal":2827,"source":"contracts/stakingPool.algo.ts:737","pc":[2584]},{"teal":2828,"source":"contracts/stakingPool.algo.ts:737","pc":[2585,2586]},{"teal":2833,"source":"contracts/stakingPool.algo.ts:737","pc":[2587,2588]},{"teal":2834,"source":"contracts/stakingPool.algo.ts:737","pc":[2589,2590]},{"teal":2835,"source":"contracts/stakingPool.algo.ts:737","pc":[2591]},{"teal":2836,"source":"contracts/stakingPool.algo.ts:737","pc":[2592,2593,2594]},{"teal":2841,"source":"contracts/stakingPool.algo.ts:738","pc":[2595,2596]},{"teal":2842,"source":"contracts/stakingPool.algo.ts:738","pc":[2597,2598]},{"teal":2843,"source":"contracts/stakingPool.algo.ts:738","pc":[2599]},{"teal":2844,"source":"contracts/stakingPool.algo.ts:738","pc":[2600,2601,2602]},{"teal":2849,"source":"contracts/stakingPool.algo.ts:739","pc":[2603]},{"teal":2850,"source":"contracts/stakingPool.algo.ts:739","pc":[2604]},{"teal":2851,"source":"contracts/stakingPool.algo.ts:739","pc":[2605,2606]},{"teal":2852,"source":"contracts/stakingPool.algo.ts:739","pc":[2607]},{"teal":2853,"source":"contracts/stakingPool.algo.ts:739","pc":[2608,2609]},{"teal":2854,"source":"contracts/stakingPool.algo.ts:739","pc":[2610,2611]},{"teal":2855,"source":"contracts/stakingPool.algo.ts:739","pc":[2612]},{"teal":2856,"source":"contracts/stakingPool.algo.ts:739","pc":[2613,2614]},{"teal":2857,"source":"contracts/stakingPool.algo.ts:739","pc":[2615,2616]},{"teal":2858,"source":"contracts/stakingPool.algo.ts:739","pc":[2617,2618]},{"teal":2859,"source":"contracts/stakingPool.algo.ts:739","pc":[2619,2620]},{"teal":2860,"source":"contracts/stakingPool.algo.ts:739","pc":[2621]},{"teal":2865,"source":"contracts/stakingPool.algo.ts:741","pc":[2622,2623]},{"teal":2866,"source":"contracts/stakingPool.algo.ts:741","pc":[2624]},{"teal":2867,"source":"contracts/stakingPool.algo.ts:741","pc":[2625]},{"teal":2868,"source":"contracts/stakingPool.algo.ts:741","pc":[2626]},{"teal":2869,"source":"contracts/stakingPool.algo.ts:741","pc":[2627]},{"teal":2870,"source":"contracts/stakingPool.algo.ts:741","pc":[2628,2629]},{"teal":2871,"source":"contracts/stakingPool.algo.ts:741","pc":[2630]},{"teal":2872,"source":"contracts/stakingPool.algo.ts:741","pc":[2631,2632]},{"teal":2877,"source":"contracts/stakingPool.algo.ts:742","pc":[2633,2634]},{"teal":2878,"source":"contracts/stakingPool.algo.ts:742","pc":[2635,2636,2637]},{"teal":2879,"source":"contracts/stakingPool.algo.ts:742","pc":[2638,2639]},{"teal":2880,"source":"contracts/stakingPool.algo.ts:742","pc":[2640]},{"teal":2881,"source":"contracts/stakingPool.algo.ts:742","pc":[2641,2642,2643]},{"teal":2887,"source":"contracts/stakingPool.algo.ts:743","pc":[2644,2645]},{"teal":2888,"source":"contracts/stakingPool.algo.ts:743","pc":[2646,2647,2648]},{"teal":2889,"source":"contracts/stakingPool.algo.ts:743","pc":[2649]},{"teal":2890,"source":"contracts/stakingPool.algo.ts:743","pc":[2650,2651]},{"teal":2891,"source":"contracts/stakingPool.algo.ts:743","pc":[2652]},{"teal":2892,"source":"contracts/stakingPool.algo.ts:743","pc":[2653,2654,2655]},{"teal":2897,"source":"contracts/stakingPool.algo.ts:746","pc":[2656,2657]},{"teal":2898,"source":"contracts/stakingPool.algo.ts:746","pc":[2658,2659]},{"teal":2899,"source":"contracts/stakingPool.algo.ts:746","pc":[2660,2661,2662]},{"teal":2900,"source":"contracts/stakingPool.algo.ts:746","pc":[2663]},{"teal":2901,"source":"contracts/stakingPool.algo.ts:746","pc":[2664]},{"teal":2902,"source":"contracts/stakingPool.algo.ts:746","pc":[2665,2666]},{"teal":2903,"source":"contracts/stakingPool.algo.ts:743","pc":[2667,2668,2669]},{"teal":2908,"source":"contracts/stakingPool.algo.ts:750","pc":[2670,2671]},{"teal":2909,"source":"contracts/stakingPool.algo.ts:750","pc":[2672,2673]},{"teal":2910,"source":"contracts/stakingPool.algo.ts:750","pc":[2674,2675,2676]},{"teal":2911,"source":"contracts/stakingPool.algo.ts:750","pc":[2677]},{"teal":2912,"source":"contracts/stakingPool.algo.ts:750","pc":[2678]},{"teal":2913,"source":"contracts/stakingPool.algo.ts:750","pc":[2679,2680]},{"teal":2918,"source":"contracts/stakingPool.algo.ts:754","pc":[2681,2682]},{"teal":2919,"source":"contracts/stakingPool.algo.ts:754","pc":[2683,2684]},{"teal":2920,"source":"contracts/stakingPool.algo.ts:754","pc":[2685]},{"teal":2921,"source":"contracts/stakingPool.algo.ts:754","pc":[2686,2687,2688]},{"teal":2926,"source":"contracts/stakingPool.algo.ts:755","pc":[2689,2690]},{"teal":2927,"source":"contracts/stakingPool.algo.ts:755","pc":[2691,2692]},{"teal":2928,"source":"contracts/stakingPool.algo.ts:755","pc":[2693,2694,2695]},{"teal":2929,"source":"contracts/stakingPool.algo.ts:755","pc":[2696]},{"teal":2930,"source":"contracts/stakingPool.algo.ts:755","pc":[2697]},{"teal":2931,"source":"contracts/stakingPool.algo.ts:755","pc":[2698,2699]},{"teal":2935,"source":"contracts/stakingPool.algo.ts:756","pc":[2700,2701]},{"teal":2936,"source":"contracts/stakingPool.algo.ts:756","pc":[2702,2703]},{"teal":2937,"source":"contracts/stakingPool.algo.ts:756","pc":[2704]},{"teal":2938,"source":"contracts/stakingPool.algo.ts:756","pc":[2705,2706]},{"teal":2939,"source":"contracts/stakingPool.algo.ts:756","pc":[2707]},{"teal":2940,"source":"contracts/stakingPool.algo.ts:756","pc":[2708,2709]},{"teal":2945,"source":"contracts/stakingPool.algo.ts:758","pc":[2710,2711]},{"teal":2946,"source":"contracts/stakingPool.algo.ts:758","pc":[2712]},{"teal":2947,"source":"contracts/stakingPool.algo.ts:758","pc":[2713]},{"teal":2948,"source":"contracts/stakingPool.algo.ts:758","pc":[2714,2715,2716]},{"teal":2956,"source":"contracts/stakingPool.algo.ts:761","pc":[2717,2718]},{"teal":2957,"source":"contracts/stakingPool.algo.ts:761","pc":[2719,2720,2721]},{"teal":2958,"source":"contracts/stakingPool.algo.ts:761","pc":[2722]},{"teal":2959,"source":"contracts/stakingPool.algo.ts:761","pc":[2723,2724]},{"teal":2960,"source":"contracts/stakingPool.algo.ts:760","pc":[2725]},{"teal":2961,"source":"contracts/stakingPool.algo.ts:761","pc":[2726,2727]},{"teal":2962,"source":"contracts/stakingPool.algo.ts:760","pc":[2728,2729]},{"teal":2963,"source":"contracts/stakingPool.algo.ts:760","pc":[2730,2731]},{"teal":2964,"source":"contracts/stakingPool.algo.ts:760","pc":[2732]},{"teal":2965,"source":"contracts/stakingPool.algo.ts:760","pc":[2733,2734]},{"teal":2966,"source":"contracts/stakingPool.algo.ts:760","pc":[2735]},{"teal":2967,"source":"contracts/stakingPool.algo.ts:760","pc":[2736,2737]},{"teal":2968,"source":"contracts/stakingPool.algo.ts:760","pc":[2738]},{"teal":2969,"source":"contracts/stakingPool.algo.ts:760","pc":[2739]},{"teal":2970,"source":"contracts/stakingPool.algo.ts:762","pc":[2740,2741]},{"teal":2971,"source":"contracts/stakingPool.algo.ts:762","pc":[2742]},{"teal":2972,"source":"contracts/stakingPool.algo.ts:762","pc":[2743,2744]},{"teal":2973,"source":"contracts/stakingPool.algo.ts:760","pc":[2745]},{"teal":2974,"source":"contracts/stakingPool.algo.ts:760","pc":[2746]},{"teal":2975,"source":"contracts/stakingPool.algo.ts:760","pc":[2747]},{"teal":2976,"source":"contracts/stakingPool.algo.ts:760","pc":[2748]},{"teal":2977,"source":"contracts/stakingPool.algo.ts:760","pc":[2749]},{"teal":2978,"source":"contracts/stakingPool.algo.ts:760","pc":[2750]},{"teal":2981,"source":"contracts/stakingPool.algo.ts:760","errorMessage":"wideRatio failed","pc":[2751]},{"teal":2982,"source":"contracts/stakingPool.algo.ts:760","pc":[2752,2753]},{"teal":2986,"source":"contracts/stakingPool.algo.ts:767","pc":[2754,2755]},{"teal":2987,"source":"contracts/stakingPool.algo.ts:767","pc":[2756,2757]},{"teal":2988,"source":"contracts/stakingPool.algo.ts:767","pc":[2758]},{"teal":2989,"source":"contracts/stakingPool.algo.ts:767","pc":[2759,2760]},{"teal":2993,"source":"contracts/stakingPool.algo.ts:768","pc":[2761,2762]},{"teal":2994,"source":"contracts/stakingPool.algo.ts:768","pc":[2763,2764]},{"teal":2995,"source":"contracts/stakingPool.algo.ts:768","pc":[2765,2766]},{"teal":2996,"source":"contracts/stakingPool.algo.ts:768","pc":[2767,2768,2769]},{"teal":2997,"source":"contracts/stakingPool.algo.ts:768","pc":[2770]},{"teal":2998,"source":"contracts/stakingPool.algo.ts:768","pc":[2771,2772]},{"teal":2999,"source":"contracts/stakingPool.algo.ts:768","pc":[2773]},{"teal":3000,"source":"contracts/stakingPool.algo.ts:768","pc":[2774]},{"teal":3001,"source":"contracts/stakingPool.algo.ts:768","pc":[2775]},{"teal":3002,"source":"contracts/stakingPool.algo.ts:768","pc":[2776,2777]},{"teal":3006,"source":"contracts/stakingPool.algo.ts:769","pc":[2778,2779]},{"teal":3007,"source":"contracts/stakingPool.algo.ts:769","pc":[2780,2781]},{"teal":3008,"source":"contracts/stakingPool.algo.ts:769","pc":[2782]},{"teal":3009,"source":"contracts/stakingPool.algo.ts:769","pc":[2783,2784]},{"teal":3017,"source":"contracts/stakingPool.algo.ts:773","pc":[2785,2786]},{"teal":3018,"source":"contracts/stakingPool.algo.ts:773","pc":[2787,2788,2789]},{"teal":3019,"source":"contracts/stakingPool.algo.ts:773","pc":[2790]},{"teal":3020,"source":"contracts/stakingPool.algo.ts:773","pc":[2791,2792]},{"teal":3021,"source":"contracts/stakingPool.algo.ts:772","pc":[2793]},{"teal":3022,"source":"contracts/stakingPool.algo.ts:773","pc":[2794,2795]},{"teal":3023,"source":"contracts/stakingPool.algo.ts:772","pc":[2796,2797]},{"teal":3024,"source":"contracts/stakingPool.algo.ts:772","pc":[2798,2799]},{"teal":3025,"source":"contracts/stakingPool.algo.ts:772","pc":[2800]},{"teal":3026,"source":"contracts/stakingPool.algo.ts:772","pc":[2801,2802]},{"teal":3027,"source":"contracts/stakingPool.algo.ts:772","pc":[2803]},{"teal":3028,"source":"contracts/stakingPool.algo.ts:772","pc":[2804,2805]},{"teal":3029,"source":"contracts/stakingPool.algo.ts:772","pc":[2806]},{"teal":3030,"source":"contracts/stakingPool.algo.ts:772","pc":[2807]},{"teal":3031,"source":"contracts/stakingPool.algo.ts:774","pc":[2808,2809]},{"teal":3032,"source":"contracts/stakingPool.algo.ts:774","pc":[2810]},{"teal":3033,"source":"contracts/stakingPool.algo.ts:774","pc":[2811,2812]},{"teal":3034,"source":"contracts/stakingPool.algo.ts:772","pc":[2813]},{"teal":3035,"source":"contracts/stakingPool.algo.ts:772","pc":[2814]},{"teal":3036,"source":"contracts/stakingPool.algo.ts:772","pc":[2815]},{"teal":3037,"source":"contracts/stakingPool.algo.ts:772","pc":[2816]},{"teal":3038,"source":"contracts/stakingPool.algo.ts:772","pc":[2817]},{"teal":3039,"source":"contracts/stakingPool.algo.ts:772","pc":[2818]},{"teal":3042,"source":"contracts/stakingPool.algo.ts:772","errorMessage":"wideRatio failed","pc":[2819]},{"teal":3043,"source":"contracts/stakingPool.algo.ts:772","pc":[2820,2821]},{"teal":3047,"source":"contracts/stakingPool.algo.ts:778","pc":[2822,2823]},{"teal":3048,"source":"contracts/stakingPool.algo.ts:778","pc":[2824,2825]},{"teal":3049,"source":"contracts/stakingPool.algo.ts:778","pc":[2826]},{"teal":3050,"source":"contracts/stakingPool.algo.ts:778","pc":[2827,2828]},{"teal":3054,"source":"contracts/stakingPool.algo.ts:781","pc":[2829,2830]},{"teal":3055,"source":"contracts/stakingPool.algo.ts:781","pc":[2831,2832]},{"teal":3056,"source":"contracts/stakingPool.algo.ts:781","pc":[2833,2834]},{"teal":3057,"source":"contracts/stakingPool.algo.ts:781","pc":[2835,2836,2837]},{"teal":3058,"source":"contracts/stakingPool.algo.ts:781","pc":[2838]},{"teal":3059,"source":"contracts/stakingPool.algo.ts:781","pc":[2839,2840]},{"teal":3060,"source":"contracts/stakingPool.algo.ts:781","pc":[2841]},{"teal":3061,"source":"contracts/stakingPool.algo.ts:781","pc":[2842]},{"teal":3062,"source":"contracts/stakingPool.algo.ts:781","pc":[2843]},{"teal":3063,"source":"contracts/stakingPool.algo.ts:781","pc":[2844,2845]},{"teal":3067,"source":"contracts/stakingPool.algo.ts:782","pc":[2846,2847]},{"teal":3068,"source":"contracts/stakingPool.algo.ts:782","pc":[2848,2849]},{"teal":3069,"source":"contracts/stakingPool.algo.ts:782","pc":[2850,2851]},{"teal":3070,"source":"contracts/stakingPool.algo.ts:782","pc":[2852,2853,2854]},{"teal":3071,"source":"contracts/stakingPool.algo.ts:782","pc":[2855]},{"teal":3072,"source":"contracts/stakingPool.algo.ts:782","pc":[2856,2857]},{"teal":3073,"source":"contracts/stakingPool.algo.ts:782","pc":[2858]},{"teal":3074,"source":"contracts/stakingPool.algo.ts:782","pc":[2859]},{"teal":3075,"source":"contracts/stakingPool.algo.ts:782","pc":[2860]},{"teal":3076,"source":"contracts/stakingPool.algo.ts:782","pc":[2861,2862]},{"teal":3080,"source":"contracts/stakingPool.algo.ts:783","pc":[2863,2864]},{"teal":3081,"source":"contracts/stakingPool.algo.ts:783","pc":[2865,2866]},{"teal":3082,"source":"contracts/stakingPool.algo.ts:783","pc":[2867]},{"teal":3083,"source":"contracts/stakingPool.algo.ts:783","pc":[2868,2869]},{"teal":3087,"source":"contracts/stakingPool.algo.ts:785","pc":[2870,2871]},{"teal":3088,"source":"contracts/stakingPool.algo.ts:785","pc":[2872]},{"teal":3089,"source":"contracts/stakingPool.algo.ts:785","pc":[2873]},{"teal":3090,"source":"contracts/stakingPool.algo.ts:785","pc":[2874,2875]},{"teal":3091,"source":"contracts/stakingPool.algo.ts:785","pc":[2876]},{"teal":3092,"source":"contracts/stakingPool.algo.ts:785","pc":[2877,2878]},{"teal":3093,"source":"contracts/stakingPool.algo.ts:785","pc":[2879]},{"teal":3104,"source":"contracts/stakingPool.algo.ts:737","pc":[2880,2881]},{"teal":3105,"source":"contracts/stakingPool.algo.ts:737","pc":[2882]},{"teal":3106,"source":"contracts/stakingPool.algo.ts:737","pc":[2883]},{"teal":3107,"source":"contracts/stakingPool.algo.ts:737","pc":[2884,2885]},{"teal":3108,"source":"contracts/stakingPool.algo.ts:737","pc":[2886,2887,2888]},{"teal":3113,"source":"contracts/stakingPool.algo.ts:793","pc":[2889,2890]},{"teal":3114,"source":"contracts/stakingPool.algo.ts:793","pc":[2891]},{"teal":3115,"source":"contracts/stakingPool.algo.ts:793","pc":[2892,2893]},{"teal":3116,"source":"contracts/stakingPool.algo.ts:793","pc":[2894]},{"teal":3117,"source":"contracts/stakingPool.algo.ts:793","pc":[2895,2896]},{"teal":3122,"source":"contracts/stakingPool.algo.ts:797","pc":[2897,2898]},{"teal":3123,"source":"contracts/stakingPool.algo.ts:797","pc":[2899]},{"teal":3124,"source":"contracts/stakingPool.algo.ts:797","pc":[2900]},{"teal":3125,"source":"contracts/stakingPool.algo.ts:797","pc":[2901,2902,2903]},{"teal":3130,"source":"contracts/stakingPool.algo.ts:799","pc":[2904]},{"teal":3131,"source":"contracts/stakingPool.algo.ts:799","pc":[2905,2906]},{"teal":3136,"source":"contracts/stakingPool.algo.ts:799","pc":[2907,2908]},{"teal":3137,"source":"contracts/stakingPool.algo.ts:799","pc":[2909,2910]},{"teal":3138,"source":"contracts/stakingPool.algo.ts:799","pc":[2911]},{"teal":3139,"source":"contracts/stakingPool.algo.ts:799","pc":[2912,2913,2914]},{"teal":3144,"source":"contracts/stakingPool.algo.ts:800","pc":[2915,2916]},{"teal":3145,"source":"contracts/stakingPool.algo.ts:800","pc":[2917,2918]},{"teal":3146,"source":"contracts/stakingPool.algo.ts:800","pc":[2919]},{"teal":3147,"source":"contracts/stakingPool.algo.ts:800","pc":[2920,2921,2922]},{"teal":3152,"source":"contracts/stakingPool.algo.ts:801","pc":[2923]},{"teal":3153,"source":"contracts/stakingPool.algo.ts:801","pc":[2924]},{"teal":3154,"source":"contracts/stakingPool.algo.ts:801","pc":[2925,2926]},{"teal":3155,"source":"contracts/stakingPool.algo.ts:801","pc":[2927]},{"teal":3156,"source":"contracts/stakingPool.algo.ts:801","pc":[2928,2929]},{"teal":3157,"source":"contracts/stakingPool.algo.ts:801","pc":[2930,2931]},{"teal":3158,"source":"contracts/stakingPool.algo.ts:801","pc":[2932]},{"teal":3159,"source":"contracts/stakingPool.algo.ts:801","pc":[2933,2934]},{"teal":3160,"source":"contracts/stakingPool.algo.ts:801","pc":[2935,2936]},{"teal":3161,"source":"contracts/stakingPool.algo.ts:801","pc":[2937,2938]},{"teal":3162,"source":"contracts/stakingPool.algo.ts:801","pc":[2939,2940]},{"teal":3163,"source":"contracts/stakingPool.algo.ts:801","pc":[2941]},{"teal":3168,"source":"contracts/stakingPool.algo.ts:803","pc":[2942,2943]},{"teal":3169,"source":"contracts/stakingPool.algo.ts:803","pc":[2944]},{"teal":3170,"source":"contracts/stakingPool.algo.ts:803","pc":[2945]},{"teal":3171,"source":"contracts/stakingPool.algo.ts:803","pc":[2946]},{"teal":3172,"source":"contracts/stakingPool.algo.ts:803","pc":[2947]},{"teal":3173,"source":"contracts/stakingPool.algo.ts:803","pc":[2948,2949]},{"teal":3174,"source":"contracts/stakingPool.algo.ts:803","pc":[2950]},{"teal":3175,"source":"contracts/stakingPool.algo.ts:803","pc":[2951,2952]},{"teal":3180,"source":"contracts/stakingPool.algo.ts:804","pc":[2953,2954]},{"teal":3181,"source":"contracts/stakingPool.algo.ts:804","pc":[2955,2956,2957]},{"teal":3182,"source":"contracts/stakingPool.algo.ts:804","pc":[2958,2959]},{"teal":3183,"source":"contracts/stakingPool.algo.ts:804","pc":[2960]},{"teal":3184,"source":"contracts/stakingPool.algo.ts:804","pc":[2961]},{"teal":3185,"source":"contracts/stakingPool.algo.ts:804","pc":[2962,2963,2964]},{"teal":3186,"source":"contracts/stakingPool.algo.ts:804","pc":[2965,2966]},{"teal":3187,"source":"contracts/stakingPool.algo.ts:804","pc":[2967,2968,2969]},{"teal":3188,"source":"contracts/stakingPool.algo.ts:804","pc":[2970]},{"teal":3189,"source":"contracts/stakingPool.algo.ts:804","pc":[2971,2972]},{"teal":3190,"source":"contracts/stakingPool.algo.ts:804","pc":[2973]},{"teal":3191,"source":"contracts/stakingPool.algo.ts:804","pc":[2974]},{"teal":3194,"source":"contracts/stakingPool.algo.ts:804","pc":[2975,2976,2977]},{"teal":3199,"source":"contracts/stakingPool.algo.ts:805","pc":[2978,2979]},{"teal":3200,"source":"contracts/stakingPool.algo.ts:805","pc":[2980,2981]},{"teal":3201,"source":"contracts/stakingPool.algo.ts:805","pc":[2982,2983,2984]},{"teal":3202,"source":"contracts/stakingPool.algo.ts:805","pc":[2985]},{"teal":3203,"source":"contracts/stakingPool.algo.ts:805","pc":[2986]},{"teal":3204,"source":"contracts/stakingPool.algo.ts:805","pc":[2987,2988]},{"teal":3209,"source":"contracts/stakingPool.algo.ts:807","pc":[2989,2990]},{"teal":3210,"source":"contracts/stakingPool.algo.ts:807","pc":[2991,2992]},{"teal":3211,"source":"contracts/stakingPool.algo.ts:807","pc":[2993]},{"teal":3212,"source":"contracts/stakingPool.algo.ts:807","pc":[2994,2995,2996]},{"teal":3218,"source":"contracts/stakingPool.algo.ts:812","pc":[2997,2998]},{"teal":3219,"source":"contracts/stakingPool.algo.ts:812","pc":[2999]},{"teal":3220,"source":"contracts/stakingPool.algo.ts:812","pc":[3000]},{"teal":3221,"source":"contracts/stakingPool.algo.ts:812","pc":[3001,3002,3003]},{"teal":3229,"source":"contracts/stakingPool.algo.ts:814","pc":[3004,3005]},{"teal":3230,"source":"contracts/stakingPool.algo.ts:814","pc":[3006,3007,3008]},{"teal":3231,"source":"contracts/stakingPool.algo.ts:814","pc":[3009]},{"teal":3232,"source":"contracts/stakingPool.algo.ts:814","pc":[3010,3011]},{"teal":3233,"source":"contracts/stakingPool.algo.ts:813","pc":[3012]},{"teal":3234,"source":"contracts/stakingPool.algo.ts:813","pc":[3013]},{"teal":3235,"source":"contracts/stakingPool.algo.ts:815","pc":[3014,3015]},{"teal":3236,"source":"contracts/stakingPool.algo.ts:813","pc":[3016]},{"teal":3237,"source":"contracts/stakingPool.algo.ts:813","pc":[3017]},{"teal":3238,"source":"contracts/stakingPool.algo.ts:813","pc":[3018]},{"teal":3239,"source":"contracts/stakingPool.algo.ts:813","pc":[3019]},{"teal":3240,"source":"contracts/stakingPool.algo.ts:813","pc":[3020]},{"teal":3243,"source":"contracts/stakingPool.algo.ts:813","errorMessage":"wideRatio failed","pc":[3021]},{"teal":3244,"source":"contracts/stakingPool.algo.ts:813","pc":[3022,3023]},{"teal":3248,"source":"contracts/stakingPool.algo.ts:818","pc":[3024,3025]},{"teal":3249,"source":"contracts/stakingPool.algo.ts:818","pc":[3026,3027]},{"teal":3250,"source":"contracts/stakingPool.algo.ts:818","pc":[3028,3029]},{"teal":3251,"source":"contracts/stakingPool.algo.ts:818","pc":[3030,3031,3032]},{"teal":3252,"source":"contracts/stakingPool.algo.ts:818","pc":[3033]},{"teal":3253,"source":"contracts/stakingPool.algo.ts:818","pc":[3034,3035]},{"teal":3254,"source":"contracts/stakingPool.algo.ts:818","pc":[3036]},{"teal":3255,"source":"contracts/stakingPool.algo.ts:818","pc":[3037]},{"teal":3256,"source":"contracts/stakingPool.algo.ts:818","pc":[3038]},{"teal":3257,"source":"contracts/stakingPool.algo.ts:818","pc":[3039,3040]},{"teal":3261,"source":"contracts/stakingPool.algo.ts:819","pc":[3041,3042]},{"teal":3262,"source":"contracts/stakingPool.algo.ts:819","pc":[3043,3044]},{"teal":3263,"source":"contracts/stakingPool.algo.ts:819","pc":[3045]},{"teal":3264,"source":"contracts/stakingPool.algo.ts:819","pc":[3046,3047]},{"teal":3270,"source":"contracts/stakingPool.algo.ts:821","pc":[3048,3049]},{"teal":3271,"source":"contracts/stakingPool.algo.ts:821","pc":[3050]},{"teal":3272,"source":"contracts/stakingPool.algo.ts:821","pc":[3051]},{"teal":3273,"source":"contracts/stakingPool.algo.ts:821","pc":[3052,3053,3054]},{"teal":3281,"source":"contracts/stakingPool.algo.ts:823","pc":[3055,3056]},{"teal":3282,"source":"contracts/stakingPool.algo.ts:823","pc":[3057,3058,3059]},{"teal":3283,"source":"contracts/stakingPool.algo.ts:823","pc":[3060]},{"teal":3284,"source":"contracts/stakingPool.algo.ts:823","pc":[3061,3062]},{"teal":3285,"source":"contracts/stakingPool.algo.ts:822","pc":[3063]},{"teal":3286,"source":"contracts/stakingPool.algo.ts:822","pc":[3064]},{"teal":3287,"source":"contracts/stakingPool.algo.ts:824","pc":[3065,3066]},{"teal":3288,"source":"contracts/stakingPool.algo.ts:822","pc":[3067]},{"teal":3289,"source":"contracts/stakingPool.algo.ts:822","pc":[3068]},{"teal":3290,"source":"contracts/stakingPool.algo.ts:822","pc":[3069]},{"teal":3291,"source":"contracts/stakingPool.algo.ts:822","pc":[3070]},{"teal":3292,"source":"contracts/stakingPool.algo.ts:822","pc":[3071]},{"teal":3295,"source":"contracts/stakingPool.algo.ts:822","errorMessage":"wideRatio failed","pc":[3072]},{"teal":3296,"source":"contracts/stakingPool.algo.ts:822","pc":[3073,3074]},{"teal":3300,"source":"contracts/stakingPool.algo.ts:828","pc":[3075,3076]},{"teal":3301,"source":"contracts/stakingPool.algo.ts:828","pc":[3077,3078]},{"teal":3302,"source":"contracts/stakingPool.algo.ts:828","pc":[3079,3080]},{"teal":3303,"source":"contracts/stakingPool.algo.ts:828","pc":[3081,3082,3083]},{"teal":3304,"source":"contracts/stakingPool.algo.ts:828","pc":[3084]},{"teal":3305,"source":"contracts/stakingPool.algo.ts:828","pc":[3085,3086]},{"teal":3306,"source":"contracts/stakingPool.algo.ts:828","pc":[3087]},{"teal":3307,"source":"contracts/stakingPool.algo.ts:828","pc":[3088]},{"teal":3308,"source":"contracts/stakingPool.algo.ts:828","pc":[3089]},{"teal":3309,"source":"contracts/stakingPool.algo.ts:828","pc":[3090,3091]},{"teal":3313,"source":"contracts/stakingPool.algo.ts:829","pc":[3092,3093]},{"teal":3314,"source":"contracts/stakingPool.algo.ts:829","pc":[3094,3095]},{"teal":3315,"source":"contracts/stakingPool.algo.ts:829","pc":[3096,3097]},{"teal":3316,"source":"contracts/stakingPool.algo.ts:829","pc":[3098,3099,3100]},{"teal":3317,"source":"contracts/stakingPool.algo.ts:829","pc":[3101]},{"teal":3318,"source":"contracts/stakingPool.algo.ts:829","pc":[3102,3103]},{"teal":3319,"source":"contracts/stakingPool.algo.ts:829","pc":[3104]},{"teal":3320,"source":"contracts/stakingPool.algo.ts:829","pc":[3105]},{"teal":3321,"source":"contracts/stakingPool.algo.ts:829","pc":[3106]},{"teal":3322,"source":"contracts/stakingPool.algo.ts:829","pc":[3107,3108]},{"teal":3326,"source":"contracts/stakingPool.algo.ts:830","pc":[3109,3110]},{"teal":3327,"source":"contracts/stakingPool.algo.ts:830","pc":[3111,3112]},{"teal":3328,"source":"contracts/stakingPool.algo.ts:830","pc":[3113]},{"teal":3329,"source":"contracts/stakingPool.algo.ts:830","pc":[3114,3115]},{"teal":3334,"source":"contracts/stakingPool.algo.ts:834","pc":[3116,3117]},{"teal":3335,"source":"contracts/stakingPool.algo.ts:834","pc":[3118]},{"teal":3336,"source":"contracts/stakingPool.algo.ts:834","pc":[3119]},{"teal":3337,"source":"contracts/stakingPool.algo.ts:834","pc":[3120,3121]},{"teal":3338,"source":"contracts/stakingPool.algo.ts:834","pc":[3122]},{"teal":3339,"source":"contracts/stakingPool.algo.ts:834","pc":[3123,3124]},{"teal":3340,"source":"contracts/stakingPool.algo.ts:834","pc":[3125]},{"teal":3349,"source":"contracts/stakingPool.algo.ts:799","pc":[3126,3127]},{"teal":3350,"source":"contracts/stakingPool.algo.ts:799","pc":[3128]},{"teal":3351,"source":"contracts/stakingPool.algo.ts:799","pc":[3129]},{"teal":3352,"source":"contracts/stakingPool.algo.ts:799","pc":[3130,3131]},{"teal":3353,"source":"contracts/stakingPool.algo.ts:799","pc":[3132,3133,3134]},{"teal":3362,"source":"contracts/stakingPool.algo.ts:844","pc":[3135,3136]},{"teal":3363,"source":"contracts/stakingPool.algo.ts:844","pc":[3137]},{"teal":3364,"source":"contracts/stakingPool.algo.ts:844","pc":[3138,3139]},{"teal":3365,"source":"contracts/stakingPool.algo.ts:844","pc":[3140]},{"teal":3366,"source":"contracts/stakingPool.algo.ts:844","pc":[3141]},{"teal":3367,"source":"contracts/stakingPool.algo.ts:844","pc":[3142,3143]},{"teal":3368,"source":"contracts/stakingPool.algo.ts:844","pc":[3144]},{"teal":3369,"source":"contracts/stakingPool.algo.ts:844","pc":[3145,3146]},{"teal":3373,"source":"contracts/stakingPool.algo.ts:845","pc":[3147,3148]},{"teal":3374,"source":"contracts/stakingPool.algo.ts:845","pc":[3149]},{"teal":3375,"source":"contracts/stakingPool.algo.ts:845","pc":[3150,3151]},{"teal":3376,"source":"contracts/stakingPool.algo.ts:845","pc":[3152]},{"teal":3377,"source":"contracts/stakingPool.algo.ts:845","pc":[3153,3154]},{"teal":3378,"source":"contracts/stakingPool.algo.ts:845","pc":[3155]},{"teal":3379,"source":"contracts/stakingPool.algo.ts:845","pc":[3156]},{"teal":3384,"source":"contracts/stakingPool.algo.ts:846","pc":[3157,3158]},{"teal":3385,"source":"contracts/stakingPool.algo.ts:846","pc":[3159]},{"teal":3386,"source":"contracts/stakingPool.algo.ts:847","pc":[3160]},{"teal":3387,"source":"contracts/stakingPool.algo.ts:847","pc":[3161,3162]},{"teal":3388,"source":"contracts/stakingPool.algo.ts:847","pc":[3163]},{"teal":3389,"source":"contracts/stakingPool.algo.ts:847","pc":[3164,3165]},{"teal":3390,"source":"contracts/stakingPool.algo.ts:847","pc":[3166]},{"teal":3391,"source":"contracts/stakingPool.algo.ts:847","pc":[3167]},{"teal":3392,"source":"contracts/stakingPool.algo.ts:847","pc":[3168]},{"teal":3393,"source":"contracts/stakingPool.algo.ts:847","pc":[3169]},{"teal":3394,"source":"contracts/stakingPool.algo.ts:847","pc":[3170]},{"teal":3395,"source":"contracts/stakingPool.algo.ts:847","pc":[3171,3172]},{"teal":3396,"source":"contracts/stakingPool.algo.ts:847","pc":[3173]},{"teal":3399,"source":"contracts/stakingPool.algo.ts:847","errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3174]},{"teal":3400,"source":"contracts/stakingPool.algo.ts:847","pc":[3175,3176]},{"teal":3401,"source":"contracts/stakingPool.algo.ts:847","pc":[3177]},{"teal":3402,"source":"contracts/stakingPool.algo.ts:847","pc":[3178]},{"teal":3403,"source":"contracts/stakingPool.algo.ts:847","pc":[3179]},{"teal":3404,"source":"contracts/stakingPool.algo.ts:847","pc":[3180]},{"teal":3405,"source":"contracts/stakingPool.algo.ts:847","pc":[3181,3182]},{"teal":3406,"source":"contracts/stakingPool.algo.ts:847","pc":[3183]},{"teal":3407,"source":"contracts/stakingPool.algo.ts:847","pc":[3184]},{"teal":3408,"source":"contracts/stakingPool.algo.ts:847","pc":[3185]},{"teal":3409,"source":"contracts/stakingPool.algo.ts:846","pc":[3186]},{"teal":3413,"source":"contracts/stakingPool.algo.ts:848","pc":[3187,3188]},{"teal":3414,"source":"contracts/stakingPool.algo.ts:848","pc":[3189]},{"teal":3415,"source":"contracts/stakingPool.algo.ts:848","pc":[3190]},{"teal":3416,"source":"contracts/stakingPool.algo.ts:848","pc":[3191,3192]},{"teal":3417,"source":"contracts/stakingPool.algo.ts:848","pc":[3193]},{"teal":3418,"source":"contracts/stakingPool.algo.ts:848","pc":[3194]},{"teal":3431,"source":"contracts/stakingPool.algo.ts:854","pc":[3195]},{"teal":3432,"source":"contracts/stakingPool.algo.ts:854","pc":[3196]},{"teal":3433,"source":"contracts/stakingPool.algo.ts:854","pc":[3197,3198]},{"teal":3434,"source":"contracts/stakingPool.algo.ts:854","pc":[3199,3200,3201,3202,3203,3204]},{"teal":3435,"source":"contracts/stakingPool.algo.ts:854","pc":[3205,3206]},{"teal":3439,"source":"contracts/stakingPool.algo.ts:855","pc":[3207]},{"teal":3440,"source":"contracts/stakingPool.algo.ts:855","pc":[3208]},{"teal":3441,"source":"contracts/stakingPool.algo.ts:855","pc":[3209,3210]},{"teal":3451,"source":"contracts/stakingPool.algo.ts:857","pc":[3211]},{"teal":3452,"source":"contracts/stakingPool.algo.ts:857","pc":[3212]},{"teal":3453,"source":"contracts/stakingPool.algo.ts:857","pc":[3213]},{"teal":3454,"source":"contracts/stakingPool.algo.ts:857","pc":[3214,3215]},{"teal":3455,"source":"contracts/stakingPool.algo.ts:857","pc":[3216]},{"teal":3456,"source":"contracts/stakingPool.algo.ts:857","pc":[3217]},{"teal":3457,"source":"contracts/stakingPool.algo.ts:857","pc":[3218]},{"teal":3458,"source":"contracts/stakingPool.algo.ts:857","pc":[3219,3220,3221]},{"teal":3459,"source":"contracts/stakingPool.algo.ts:857","pc":[3222]},{"teal":3460,"source":"contracts/stakingPool.algo.ts:857","pc":[3223]},{"teal":3461,"source":"contracts/stakingPool.algo.ts:857","pc":[3224,3225]},{"teal":3462,"source":"contracts/stakingPool.algo.ts:858","pc":[3226,3227]},{"teal":3463,"source":"contracts/stakingPool.algo.ts:858","pc":[3228]},{"teal":3464,"source":"contracts/stakingPool.algo.ts:858","pc":[3229,3230]},{"teal":3465,"source":"contracts/stakingPool.algo.ts:859","pc":[3231,3232]},{"teal":3466,"source":"contracts/stakingPool.algo.ts:859","pc":[3233]},{"teal":3467,"source":"contracts/stakingPool.algo.ts:859","pc":[3234,3235]},{"teal":3468,"source":"contracts/stakingPool.algo.ts:860","pc":[3236,3237]},{"teal":3469,"source":"contracts/stakingPool.algo.ts:860","pc":[3238]},{"teal":3470,"source":"contracts/stakingPool.algo.ts:860","pc":[3239,3240]},{"teal":3471,"source":"contracts/stakingPool.algo.ts:861","pc":[3241,3242]},{"teal":3472,"source":"contracts/stakingPool.algo.ts:861","pc":[3243]},{"teal":3473,"source":"contracts/stakingPool.algo.ts:861","pc":[3244,3245]},{"teal":3476,"source":"contracts/stakingPool.algo.ts:854","pc":[3246]},{"teal":3477,"source":"contracts/stakingPool.algo.ts:854","pc":[3247,3248]},{"teal":3480,"source":"contracts/stakingPool.algo.ts:854","pc":[3249]},{"teal":3481,"source":"contracts/stakingPool.algo.ts:512","pc":[3250]},{"teal":3486,"source":"contracts/stakingPool.algo.ts:886","pc":[3251,3252,3253]},{"teal":3487,"source":"contracts/stakingPool.algo.ts:886","pc":[3254]},{"teal":3490,"source":"contracts/stakingPool.algo.ts:885","pc":[3255,3256,3257]},{"teal":3491,"source":"contracts/stakingPool.algo.ts:885","pc":[3258]},{"teal":3494,"source":"contracts/stakingPool.algo.ts:884","pc":[3259,3260,3261]},{"teal":3495,"source":"contracts/stakingPool.algo.ts:884","pc":[3262]},{"teal":3498,"source":"contracts/stakingPool.algo.ts:883","pc":[3263,3264,3265]},{"teal":3499,"source":"contracts/stakingPool.algo.ts:883","pc":[3266,3267,3268]},{"teal":3502,"source":"contracts/stakingPool.algo.ts:882","pc":[3269,3270,3271]},{"teal":3503,"source":"contracts/stakingPool.algo.ts:882","pc":[3272,3273,3274]},{"teal":3506,"source":"contracts/stakingPool.algo.ts:881","pc":[3275,3276,3277]},{"teal":3507,"source":"contracts/stakingPool.algo.ts:881","pc":[3278,3279,3280]},{"teal":3510,"source":"contracts/stakingPool.algo.ts:880","pc":[3281,3282]},{"teal":3511,"source":"contracts/stakingPool.algo.ts:880","pc":[3283]},{"teal":3512,"source":"contracts/stakingPool.algo.ts:880","pc":[3284]},{"teal":3513,"source":"contracts/stakingPool.algo.ts:880","pc":[3285]},{"teal":3514,"source":"contracts/stakingPool.algo.ts:880","pc":[3286,3287]},{"teal":3515,"source":"contracts/stakingPool.algo.ts:880","pc":[3288]},{"teal":3516,"source":"contracts/stakingPool.algo.ts:880","pc":[3289]},{"teal":3519,"source":"contracts/stakingPool.algo.ts:880","errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3290]},{"teal":3522,"source":"contracts/stakingPool.algo.ts:879","pc":[3291,3292,3293]},{"teal":3523,"source":"contracts/stakingPool.algo.ts:879","pc":[3294]},{"teal":3524,"source":"contracts/stakingPool.algo.ts:879","pc":[3295]},{"teal":3540,"source":"contracts/stakingPool.algo.ts:879","pc":[3296,3297,3298]},{"teal":3543,"source":"contracts/stakingPool.algo.ts:879","pc":[3299]},{"teal":3547,"source":"contracts/stakingPool.algo.ts:888","pc":[3300,3301,3302]},{"teal":3550,"source":"contracts/stakingPool.algo.ts:888","errorMessage":"can only be called by owner or manager of validator","pc":[3303]},{"teal":3554,"source":"contracts/stakingPool.algo.ts:889","pc":[3304,3305,3306]},{"teal":3555,"source":"contracts/stakingPool.algo.ts:889","pc":[3307,3308]},{"teal":3560,"source":"contracts/stakingPool.algo.ts:890","pc":[3309,3310]},{"teal":3561,"source":"contracts/stakingPool.algo.ts:890","pc":[3311,3312]},{"teal":3562,"source":"contracts/stakingPool.algo.ts:890","pc":[3313,3314]},{"teal":3563,"source":"contracts/stakingPool.algo.ts:890","pc":[3315]},{"teal":3566,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3316]},{"teal":3569,"source":"contracts/stakingPool.algo.ts:890","pc":[3317,3318]},{"teal":3570,"source":"contracts/stakingPool.algo.ts:890","pc":[3319,3320]},{"teal":3571,"source":"contracts/stakingPool.algo.ts:890","pc":[3321,3322]},{"teal":3572,"source":"contracts/stakingPool.algo.ts:890","pc":[3323]},{"teal":3575,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3324]},{"teal":3587,"source":"contracts/stakingPool.algo.ts:891","pc":[3325]},{"teal":3588,"source":"contracts/stakingPool.algo.ts:891","pc":[3326,3327]},{"teal":3589,"source":"contracts/stakingPool.algo.ts:891","pc":[3328,3329]},{"teal":3593,"source":"contracts/stakingPool.algo.ts:892","pc":[3330,3331]},{"teal":3594,"source":"contracts/stakingPool.algo.ts:892","pc":[3332,3333]},{"teal":3598,"source":"contracts/stakingPool.algo.ts:893","pc":[3334,3335]},{"teal":3599,"source":"contracts/stakingPool.algo.ts:893","pc":[3336,3337]},{"teal":3603,"source":"contracts/stakingPool.algo.ts:894","pc":[3338,3339]},{"teal":3604,"source":"contracts/stakingPool.algo.ts:894","pc":[3340,3341]},{"teal":3608,"source":"contracts/stakingPool.algo.ts:895","pc":[3342,3343]},{"teal":3609,"source":"contracts/stakingPool.algo.ts:895","pc":[3344,3345]},{"teal":3613,"source":"contracts/stakingPool.algo.ts:896","pc":[3346,3347]},{"teal":3614,"source":"contracts/stakingPool.algo.ts:896","pc":[3348,3349]},{"teal":3618,"source":"contracts/stakingPool.algo.ts:897","pc":[3350,3351]},{"teal":3619,"source":"contracts/stakingPool.algo.ts:897","pc":[3352,3353]},{"teal":3623,"source":"contracts/stakingPool.algo.ts:898","pc":[3354,3355]},{"teal":3624,"source":"contracts/stakingPool.algo.ts:898","pc":[3356,3357]},{"teal":3627,"source":"contracts/stakingPool.algo.ts:891","pc":[3358]},{"teal":3628,"source":"contracts/stakingPool.algo.ts:879","pc":[3359]},{"teal":3633,"source":"contracts/stakingPool.algo.ts:907","pc":[3360,3361,3362]},{"teal":3634,"source":"contracts/stakingPool.algo.ts:907","pc":[3363]},{"teal":3635,"source":"contracts/stakingPool.algo.ts:907","pc":[3364]},{"teal":3642,"source":"contracts/stakingPool.algo.ts:907","pc":[3365,3366,3367]},{"teal":3647,"source":"contracts/stakingPool.algo.ts:910","pc":[3368,3369]},{"teal":3648,"source":"contracts/stakingPool.algo.ts:910","pc":[3370]},{"teal":3649,"source":"contracts/stakingPool.algo.ts:910","pc":[3371]},{"teal":3650,"source":"contracts/stakingPool.algo.ts:910","pc":[3372,3373]},{"teal":3651,"source":"contracts/stakingPool.algo.ts:910","pc":[3374]},{"teal":3652,"source":"contracts/stakingPool.algo.ts:910","pc":[3375]},{"teal":3653,"source":"contracts/stakingPool.algo.ts:910","pc":[3376,3377,3378]},{"teal":3658,"source":"contracts/stakingPool.algo.ts:911","pc":[3379,3380,3381]},{"teal":3661,"source":"contracts/stakingPool.algo.ts:911","errorMessage":"can only be called by owner or manager of validator","pc":[3382]},{"teal":3666,"source":"contracts/stakingPool.algo.ts:914","pc":[3383]},{"teal":3667,"source":"contracts/stakingPool.algo.ts:914","pc":[3384,3385]},{"teal":3668,"source":"contracts/stakingPool.algo.ts:914","pc":[3386,3387]},{"teal":3671,"source":"contracts/stakingPool.algo.ts:914","pc":[3388]},{"teal":3672,"source":"contracts/stakingPool.algo.ts:914","pc":[3389,3390]},{"teal":3675,"source":"contracts/stakingPool.algo.ts:914","pc":[3391]},{"teal":3676,"source":"contracts/stakingPool.algo.ts:907","pc":[3392]},{"teal":3681,"source":"contracts/stakingPool.algo.ts:920","pc":[3393,3394,3395]},{"teal":3682,"source":"contracts/stakingPool.algo.ts:920","pc":[3396,3397,3398]},{"teal":3685,"source":"contracts/stakingPool.algo.ts:920","pc":[3399,3400,3401]},{"teal":3686,"source":"contracts/stakingPool.algo.ts:920","pc":[3402]},{"teal":3689,"source":"contracts/stakingPool.algo.ts:920","pc":[3403,3404,3405]},{"teal":3690,"source":"contracts/stakingPool.algo.ts:920","pc":[3406]},{"teal":3691,"source":"contracts/stakingPool.algo.ts:920","pc":[3407]},{"teal":3695,"source":"contracts/stakingPool.algo.ts:920","pc":[3408,3409,3410]},{"teal":3699,"source":"contracts/stakingPool.algo.ts:921","pc":[3411,3412,3413]},{"teal":3702,"source":"contracts/stakingPool.algo.ts:921","errorMessage":"can only be called by owner or manager of validator","pc":[3414]},{"teal":3710,"source":"contracts/stakingPool.algo.ts:923","pc":[3415]},{"teal":3711,"source":"contracts/stakingPool.algo.ts:923","pc":[3416]},{"teal":3712,"source":"contracts/stakingPool.algo.ts:923","pc":[3417,3418]},{"teal":3716,"source":"contracts/stakingPool.algo.ts:924","pc":[3419,3420]},{"teal":3717,"source":"contracts/stakingPool.algo.ts:924","pc":[3421,3422]},{"teal":3721,"source":"contracts/stakingPool.algo.ts:925","pc":[3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439]},{"teal":3722,"source":"contracts/stakingPool.algo.ts:925","pc":[3440,3441]},{"teal":3723,"source":"contracts/stakingPool.algo.ts:925","pc":[3442,3443]},{"teal":3724,"source":"contracts/stakingPool.algo.ts:925","pc":[3444,3445]},{"teal":3725,"source":"contracts/stakingPool.algo.ts:925","pc":[3446,3447]},{"teal":3726,"source":"contracts/stakingPool.algo.ts:925","pc":[3448]},{"teal":3727,"source":"contracts/stakingPool.algo.ts:925","pc":[3449,3450]},{"teal":3728,"source":"contracts/stakingPool.algo.ts:925","pc":[3451,3452]},{"teal":3729,"source":"contracts/stakingPool.algo.ts:925","pc":[3453,3454]},{"teal":3733,"source":"contracts/stakingPool.algo.ts:926","pc":[3455,3456]},{"teal":3734,"source":"contracts/stakingPool.algo.ts:926","pc":[3457,3458]},{"teal":3737,"source":"contracts/stakingPool.algo.ts:923","pc":[3459]},{"teal":3738,"source":"contracts/stakingPool.algo.ts:923","pc":[3460,3461]},{"teal":3741,"source":"contracts/stakingPool.algo.ts:923","pc":[3462]},{"teal":3742,"source":"contracts/stakingPool.algo.ts:920","pc":[3463]},{"teal":3747,"source":"contracts/stakingPool.algo.ts:936","pc":[3464,3465]},{"teal":3750,"source":"contracts/stakingPool.algo.ts:936","pc":[3466,3467,3468]},{"teal":3751,"source":"contracts/stakingPool.algo.ts:936","pc":[3469]},{"teal":3752,"source":"contracts/stakingPool.algo.ts:936","pc":[3470]},{"teal":3753,"source":"contracts/stakingPool.algo.ts:936","pc":[3471,3472]},{"teal":3754,"source":"contracts/stakingPool.algo.ts:936","pc":[3473]},{"teal":3757,"source":"contracts/stakingPool.algo.ts:936","errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3474]},{"teal":3760,"source":"contracts/stakingPool.algo.ts:936","pc":[3475,3476,3477]},{"teal":3761,"source":"contracts/stakingPool.algo.ts:936","pc":[3478]},{"teal":3762,"source":"contracts/stakingPool.algo.ts:936","pc":[3479]},{"teal":3763,"source":"contracts/stakingPool.algo.ts:936","pc":[3480]},{"teal":3764,"source":"contracts/stakingPool.algo.ts:936","pc":[3481]},{"teal":3773,"source":"contracts/stakingPool.algo.ts:936","pc":[3482,3483,3484]},{"teal":3776,"source":"contracts/stakingPool.algo.ts:936","pc":[3485]},{"teal":3780,"source":"contracts/stakingPool.algo.ts:937","pc":[3486]},{"teal":3781,"source":"contracts/stakingPool.algo.ts:937","pc":[3487]},{"teal":3782,"source":"contracts/stakingPool.algo.ts:937","pc":[3488,3489]},{"teal":3783,"source":"contracts/stakingPool.algo.ts:937","pc":[3490,3491,3492]},{"teal":3784,"source":"contracts/stakingPool.algo.ts:937","pc":[3493]},{"teal":3785,"source":"contracts/stakingPool.algo.ts:937","pc":[3494]},{"teal":3788,"source":"contracts/stakingPool.algo.ts:937","errorMessage":"caller must be part of same validator set!","pc":[3495]},{"teal":3792,"source":"contracts/stakingPool.algo.ts:938","pc":[3496,3497]},{"teal":3793,"source":"contracts/stakingPool.algo.ts:938","pc":[3498]},{"teal":3794,"source":"contracts/stakingPool.algo.ts:938","pc":[3499]},{"teal":3795,"source":"contracts/stakingPool.algo.ts:938","pc":[3500]},{"teal":3798,"source":"contracts/stakingPool.algo.ts:938","errorMessage":"callee must be pool 1","pc":[3501]},{"teal":3802,"source":"contracts/stakingPool.algo.ts:939","pc":[3502,3503]},{"teal":3803,"source":"contracts/stakingPool.algo.ts:939","pc":[3504,3505,3506]},{"teal":3804,"source":"contracts/stakingPool.algo.ts:939","pc":[3507]},{"teal":3805,"source":"contracts/stakingPool.algo.ts:939","pc":[3508]},{"teal":3806,"source":"contracts/stakingPool.algo.ts:939","pc":[3509]},{"teal":3809,"source":"contracts/stakingPool.algo.ts:939","errorMessage":"caller must NOT be pool 1","pc":[3510]},{"teal":3816,"source":"contracts/stakingPool.algo.ts:941","pc":[3511]},{"teal":3817,"source":"contracts/stakingPool.algo.ts:941","pc":[3512]},{"teal":3818,"source":"contracts/stakingPool.algo.ts:941","pc":[3513,3514]},{"teal":3819,"source":"contracts/stakingPool.algo.ts:941","pc":[3515,3516]},{"teal":3820,"source":"contracts/stakingPool.algo.ts:941","pc":[3517,3518]},{"teal":3824,"source":"contracts/stakingPool.algo.ts:942","pc":[3519]},{"teal":3825,"source":"contracts/stakingPool.algo.ts:942","pc":[3520]},{"teal":3826,"source":"contracts/stakingPool.algo.ts:942","pc":[3521,3522]},{"teal":3830,"source":"contracts/stakingPool.algo.ts:943","pc":[3523,3524]},{"teal":3831,"source":"contracts/stakingPool.algo.ts:943","pc":[3525,3526,3527]},{"teal":3832,"source":"contracts/stakingPool.algo.ts:943","pc":[3528]},{"teal":3833,"source":"contracts/stakingPool.algo.ts:943","pc":[3529]},{"teal":3834,"source":"contracts/stakingPool.algo.ts:943","pc":[3530,3531]},{"teal":3835,"source":"contracts/stakingPool.algo.ts:943","pc":[3532,3533]},{"teal":3836,"source":"contracts/stakingPool.algo.ts:943","pc":[3534,3535,3536]},{"teal":3837,"source":"contracts/stakingPool.algo.ts:943","pc":[3537]},{"teal":3838,"source":"contracts/stakingPool.algo.ts:943","pc":[3538]},{"teal":3839,"source":"contracts/stakingPool.algo.ts:943","pc":[3539,3540]},{"teal":3842,"source":"contracts/stakingPool.algo.ts:941","pc":[3541]},{"teal":3843,"source":"contracts/stakingPool.algo.ts:941","pc":[3542,3543]},{"teal":3846,"source":"contracts/stakingPool.algo.ts:941","pc":[3544]},{"teal":3847,"source":"contracts/stakingPool.algo.ts:941","pc":[3545,3546]},{"teal":3848,"source":"contracts/stakingPool.algo.ts:941","pc":[3547]},{"teal":3849,"source":"contracts/stakingPool.algo.ts:941","pc":[3548]},{"teal":3850,"source":"contracts/stakingPool.algo.ts:941","pc":[3549,3550]},{"teal":3851,"source":"contracts/stakingPool.algo.ts:941","pc":[3551,3552,3553]},{"teal":3852,"source":"contracts/stakingPool.algo.ts:941","pc":[3554]},{"teal":3853,"source":"contracts/stakingPool.algo.ts:941","pc":[3555,3556]},{"teal":3857,"source":"contracts/stakingPool.algo.ts:945","pc":[3557,3558]},{"teal":3858,"source":"contracts/stakingPool.algo.ts:945","pc":[3559,3560]},{"teal":3859,"source":"contracts/stakingPool.algo.ts:945","pc":[3561,3562,3563]},{"teal":3860,"source":"contracts/stakingPool.algo.ts:945","pc":[3564]},{"teal":3861,"source":"contracts/stakingPool.algo.ts:945","pc":[3565]},{"teal":3862,"source":"contracts/stakingPool.algo.ts:945","pc":[3566]},{"teal":3866,"source":"contracts/stakingPool.algo.ts:946","pc":[3567,3568]},{"teal":3867,"source":"contracts/stakingPool.algo.ts:946","pc":[3569,3570]},{"teal":3868,"source":"contracts/stakingPool.algo.ts:946","pc":[3571,3572,3573]},{"teal":3869,"source":"contracts/stakingPool.algo.ts:946","pc":[3574]},{"teal":3870,"source":"contracts/stakingPool.algo.ts:946","pc":[3575,3576]},{"teal":3871,"source":"contracts/stakingPool.algo.ts:946","pc":[3577]},{"teal":3872,"source":"contracts/stakingPool.algo.ts:946","pc":[3578]},{"teal":3873,"source":"contracts/stakingPool.algo.ts:946","pc":[3579]},{"teal":3880,"source":"contracts/stakingPool.algo.ts:948","pc":[3580]},{"teal":3881,"source":"contracts/stakingPool.algo.ts:948","pc":[3581]},{"teal":3882,"source":"contracts/stakingPool.algo.ts:948","pc":[3582,3583]},{"teal":3883,"source":"contracts/stakingPool.algo.ts:948","pc":[3584,3585]},{"teal":3884,"source":"contracts/stakingPool.algo.ts:948","pc":[3586,3587]},{"teal":3888,"source":"contracts/stakingPool.algo.ts:949","pc":[3588]},{"teal":3889,"source":"contracts/stakingPool.algo.ts:949","pc":[3589]},{"teal":3890,"source":"contracts/stakingPool.algo.ts:949","pc":[3590,3591]},{"teal":3894,"source":"contracts/stakingPool.algo.ts:950","pc":[3592]},{"teal":3895,"source":"contracts/stakingPool.algo.ts:950","pc":[3593]},{"teal":3896,"source":"contracts/stakingPool.algo.ts:950","pc":[3594]},{"teal":3897,"source":"contracts/stakingPool.algo.ts:950","pc":[3595,3596]},{"teal":3900,"source":"contracts/stakingPool.algo.ts:948","pc":[3597]},{"teal":3901,"source":"contracts/stakingPool.algo.ts:948","pc":[3598,3599]},{"teal":3904,"source":"contracts/stakingPool.algo.ts:948","pc":[3600]},{"teal":3905,"source":"contracts/stakingPool.algo.ts:948","pc":[3601,3602]},{"teal":3906,"source":"contracts/stakingPool.algo.ts:948","pc":[3603]},{"teal":3907,"source":"contracts/stakingPool.algo.ts:948","pc":[3604]},{"teal":3908,"source":"contracts/stakingPool.algo.ts:948","pc":[3605,3606]},{"teal":3909,"source":"contracts/stakingPool.algo.ts:948","pc":[3607,3608,3609]},{"teal":3912,"source":"contracts/stakingPool.algo.ts:936","pc":[3610,3611]},{"teal":3913,"source":"contracts/stakingPool.algo.ts:936","pc":[3612]},{"teal":3917,"source":"contracts/stakingPool.algo.ts:954","pc":[3613,3614,3615]},{"teal":3920,"source":"contracts/stakingPool.algo.ts:954","pc":[3616]},{"teal":3927,"source":"contracts/stakingPool.algo.ts:955","pc":[3617]},{"teal":3928,"source":"contracts/stakingPool.algo.ts:955","pc":[3618]},{"teal":3929,"source":"contracts/stakingPool.algo.ts:955","pc":[3619,3620]},{"teal":3930,"source":"contracts/stakingPool.algo.ts:955","pc":[3621,3622,3623,3624,3625,3626]},{"teal":3931,"source":"contracts/stakingPool.algo.ts:955","pc":[3627,3628]},{"teal":3935,"source":"contracts/stakingPool.algo.ts:956","pc":[3629]},{"teal":3936,"source":"contracts/stakingPool.algo.ts:956","pc":[3630]},{"teal":3937,"source":"contracts/stakingPool.algo.ts:956","pc":[3631,3632]},{"teal":3941,"source":"contracts/stakingPool.algo.ts:957","pc":[3633]},{"teal":3942,"source":"contracts/stakingPool.algo.ts:957","pc":[3634]},{"teal":3943,"source":"contracts/stakingPool.algo.ts:957","pc":[3635]},{"teal":3944,"source":"contracts/stakingPool.algo.ts:957","pc":[3636,3637]},{"teal":3947,"source":"contracts/stakingPool.algo.ts:955","pc":[3638]},{"teal":3948,"source":"contracts/stakingPool.algo.ts:955","pc":[3639,3640]},{"teal":3951,"source":"contracts/stakingPool.algo.ts:955","pc":[3641]},{"teal":3952,"source":"contracts/stakingPool.algo.ts:955","pc":[3642,3643]},{"teal":3953,"source":"contracts/stakingPool.algo.ts:955","pc":[3644]},{"teal":3954,"source":"contracts/stakingPool.algo.ts:955","pc":[3645]},{"teal":3955,"source":"contracts/stakingPool.algo.ts:955","pc":[3646,3647]},{"teal":3956,"source":"contracts/stakingPool.algo.ts:955","pc":[3648,3649,3650]},{"teal":3957,"source":"contracts/stakingPool.algo.ts:955","pc":[3651,3652]},{"teal":3961,"source":"contracts/stakingPool.algo.ts:959","pc":[3653,3654]},{"teal":3962,"source":"contracts/stakingPool.algo.ts:959","pc":[3655,3656]},{"teal":3963,"source":"contracts/stakingPool.algo.ts:959","pc":[3657,3658,3659]},{"teal":3964,"source":"contracts/stakingPool.algo.ts:959","pc":[3660]},{"teal":3965,"source":"contracts/stakingPool.algo.ts:959","pc":[3661]},{"teal":3966,"source":"contracts/stakingPool.algo.ts:959","pc":[3662,3663,3664]},{"teal":3967,"source":"contracts/stakingPool.algo.ts:959","pc":[3665,3666]},{"teal":3968,"source":"contracts/stakingPool.algo.ts:959","pc":[3667,3668]},{"teal":3969,"source":"contracts/stakingPool.algo.ts:959","pc":[3669,3670,3671]},{"teal":3970,"source":"contracts/stakingPool.algo.ts:959","pc":[3672]},{"teal":3971,"source":"contracts/stakingPool.algo.ts:959","pc":[3673]},{"teal":3975,"source":"contracts/stakingPool.algo.ts:954","pc":[3674,3675]},{"teal":3976,"source":"contracts/stakingPool.algo.ts:954","pc":[3676]},{"teal":3983,"source":"contracts/stakingPool.algo.ts:966","pc":[3677,3678,3679]},{"teal":3986,"source":"contracts/stakingPool.algo.ts:966","pc":[3680]},{"teal":3990,"source":"contracts/stakingPool.algo.ts:967","pc":[3681,3682,3683]},{"teal":3991,"source":"contracts/stakingPool.algo.ts:967","pc":[3684,3685]},{"teal":3995,"source":"contracts/stakingPool.algo.ts:969","pc":[3686,3687]},{"teal":3996,"source":"contracts/stakingPool.algo.ts:969","pc":[3688,3689]},{"teal":3997,"source":"contracts/stakingPool.algo.ts:969","pc":[3690]},{"teal":3998,"source":"contracts/stakingPool.algo.ts:969","pc":[3691]},{"teal":3999,"source":"contracts/stakingPool.algo.ts:969","pc":[3692,3693]},{"teal":4000,"source":"contracts/stakingPool.algo.ts:969","pc":[3694]},{"teal":4001,"source":"contracts/stakingPool.algo.ts:969","pc":[3695]},{"teal":4002,"source":"contracts/stakingPool.algo.ts:969","pc":[3696]},{"teal":4003,"source":"contracts/stakingPool.algo.ts:969","pc":[3697]},{"teal":4004,"source":"contracts/stakingPool.algo.ts:969","pc":[3698]},{"teal":4007,"source":"contracts/stakingPool.algo.ts:969","errorMessage":"wideRatio failed","pc":[3699]},{"teal":4010,"source":"contracts/stakingPool.algo.ts:966","pc":[3700,3701]},{"teal":4011,"source":"contracts/stakingPool.algo.ts:966","pc":[3702]},{"teal":4015,"source":"contracts/stakingPool.algo.ts:972","pc":[3703,3704,3705]},{"teal":4020,"source":"contracts/stakingPool.algo.ts:974","pc":[3706,3707]},{"teal":4021,"source":"contracts/stakingPool.algo.ts:974","pc":[3708,3709]},{"teal":4022,"source":"contracts/stakingPool.algo.ts:974","pc":[3710]},{"teal":4023,"source":"contracts/stakingPool.algo.ts:974","pc":[3711]},{"teal":4024,"source":"contracts/stakingPool.algo.ts:974","pc":[3712,3713,3714]},{"teal":4029,"source":"contracts/stakingPool.algo.ts:975","pc":[3715,3716]},{"teal":4030,"source":"contracts/stakingPool.algo.ts:975","pc":[3717]},{"teal":4035,"source":"contracts/stakingPool.algo.ts:977","pc":[3718]},{"teal":4036,"source":"contracts/stakingPool.algo.ts:972","pc":[3719]},{"teal":4040,"source":"contracts/stakingPool.algo.ts:980","pc":[3720,3721,3722]},{"teal":4044,"source":"contracts/stakingPool.algo.ts:981","pc":[3723]},{"teal":4045,"source":"contracts/stakingPool.algo.ts:980","pc":[3724]},{"teal":4051,"source":"contracts/stakingPool.algo.ts:987","pc":[3725,3726,3727]},{"teal":4054,"source":"contracts/stakingPool.algo.ts:987","pc":[3728]},{"teal":4055,"source":"contracts/stakingPool.algo.ts:987","pc":[3729,3730]},{"teal":4059,"source":"contracts/stakingPool.algo.ts:988","pc":[3731,3732]},{"teal":4060,"source":"contracts/stakingPool.algo.ts:988","pc":[3733]},{"teal":4061,"source":"contracts/stakingPool.algo.ts:988","pc":[3734]},{"teal":4062,"source":"contracts/stakingPool.algo.ts:988","pc":[3735,3736]},{"teal":4067,"source":"contracts/stakingPool.algo.ts:989","pc":[3737,3738]},{"teal":4068,"source":"contracts/stakingPool.algo.ts:989","pc":[3739,3740]},{"teal":4069,"source":"contracts/stakingPool.algo.ts:989","pc":[3741]},{"teal":4070,"source":"contracts/stakingPool.algo.ts:989","pc":[3742,3743]},{"teal":4071,"source":"contracts/stakingPool.algo.ts:989","pc":[3744]},{"teal":4072,"source":"contracts/stakingPool.algo.ts:989","pc":[3745]},{"teal":4073,"source":"contracts/stakingPool.algo.ts:989","pc":[3746]},{"teal":4074,"source":"contracts/stakingPool.algo.ts:989","pc":[3747]},{"teal":4077,"source":"contracts/stakingPool.algo.ts:989","errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[3748]},{"teal":4078,"source":"contracts/stakingPool.algo.ts:989","pc":[3749,3750,3751,3752,3753,3754,3755,3756,3757,3758]},{"teal":4079,"source":"contracts/stakingPool.algo.ts:989","pc":[3759]},{"teal":4080,"source":"contracts/stakingPool.algo.ts:989","pc":[3760]},{"teal":4081,"source":"contracts/stakingPool.algo.ts:989","pc":[3761]},{"teal":4082,"source":"contracts/stakingPool.algo.ts:989","pc":[3762]},{"teal":4083,"source":"contracts/stakingPool.algo.ts:989","pc":[3763,3764]},{"teal":4084,"source":"contracts/stakingPool.algo.ts:989","pc":[3765]},{"teal":4085,"source":"contracts/stakingPool.algo.ts:989","pc":[3766]},{"teal":4086,"source":"contracts/stakingPool.algo.ts:989","pc":[3767]},{"teal":4087,"source":"contracts/stakingPool.algo.ts:989","pc":[3768]},{"teal":4088,"source":"contracts/stakingPool.algo.ts:989","pc":[3769]},{"teal":4089,"source":"contracts/stakingPool.algo.ts:989","pc":[3770]},{"teal":4090,"source":"contracts/stakingPool.algo.ts:989","pc":[3771,3772,3773]},{"teal":4096,"source":"contracts/stakingPool.algo.ts:990","pc":[3774,3775]},{"teal":4097,"source":"contracts/stakingPool.algo.ts:990","pc":[3776,3777]},{"teal":4098,"source":"contracts/stakingPool.algo.ts:990","pc":[3778]},{"teal":4099,"source":"contracts/stakingPool.algo.ts:990","pc":[3779,3780,3781]},{"teal":4104,"source":"contracts/stakingPool.algo.ts:991","pc":[3782]},{"teal":4105,"source":"contracts/stakingPool.algo.ts:991","pc":[3783]},{"teal":4106,"source":"contracts/stakingPool.algo.ts:991","pc":[3784,3785]},{"teal":4107,"source":"contracts/stakingPool.algo.ts:991","pc":[3786]},{"teal":4108,"source":"contracts/stakingPool.algo.ts:991","pc":[3787,3788]},{"teal":4109,"source":"contracts/stakingPool.algo.ts:991","pc":[3789,3790]},{"teal":4110,"source":"contracts/stakingPool.algo.ts:991","pc":[3791]},{"teal":4111,"source":"contracts/stakingPool.algo.ts:991","pc":[3792,3793]},{"teal":4112,"source":"contracts/stakingPool.algo.ts:991","pc":[3794,3795]},{"teal":4113,"source":"contracts/stakingPool.algo.ts:991","pc":[3796,3797]},{"teal":4114,"source":"contracts/stakingPool.algo.ts:991","pc":[3798,3799]},{"teal":4115,"source":"contracts/stakingPool.algo.ts:991","pc":[3800]},{"teal":4120,"source":"contracts/stakingPool.algo.ts:993","pc":[3801,3802]},{"teal":4121,"source":"contracts/stakingPool.algo.ts:993","pc":[3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820]},{"teal":4122,"source":"contracts/stakingPool.algo.ts:993","pc":[3821]},{"teal":4123,"source":"contracts/stakingPool.algo.ts:993","pc":[3822]},{"teal":4124,"source":"contracts/stakingPool.algo.ts:993","pc":[3823]},{"teal":4125,"source":"contracts/stakingPool.algo.ts:993","pc":[3824,3825]},{"teal":4126,"source":"contracts/stakingPool.algo.ts:993","pc":[3826]},{"teal":4129,"source":"contracts/stakingPool.algo.ts:993","errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[3827]},{"teal":4130,"source":"contracts/stakingPool.algo.ts:993","pc":[3828,3829]},{"teal":4131,"source":"contracts/stakingPool.algo.ts:993","pc":[3830]},{"teal":4132,"source":"contracts/stakingPool.algo.ts:993","pc":[3831]},{"teal":4133,"source":"contracts/stakingPool.algo.ts:993","pc":[3832]},{"teal":4134,"source":"contracts/stakingPool.algo.ts:993","pc":[3833]},{"teal":4135,"source":"contracts/stakingPool.algo.ts:993","pc":[3834,3835]},{"teal":4136,"source":"contracts/stakingPool.algo.ts:993","pc":[3836]},{"teal":4137,"source":"contracts/stakingPool.algo.ts:993","pc":[3837]},{"teal":4138,"source":"contracts/stakingPool.algo.ts:993","pc":[3838]},{"teal":4139,"source":"contracts/stakingPool.algo.ts:993","pc":[3839,3840]},{"teal":4143,"source":"contracts/stakingPool.algo.ts:994","pc":[3841,3842]},{"teal":4144,"source":"contracts/stakingPool.algo.ts:994","pc":[3843]},{"teal":4145,"source":"contracts/stakingPool.algo.ts:994","pc":[3844,3845]},{"teal":4146,"source":"contracts/stakingPool.algo.ts:994","pc":[3846]},{"teal":4147,"source":"contracts/stakingPool.algo.ts:994","pc":[3847]},{"teal":4148,"source":"contracts/stakingPool.algo.ts:994","pc":[3848]},{"teal":4149,"source":"contracts/stakingPool.algo.ts:994","pc":[3849,3850]},{"teal":4150,"source":"contracts/stakingPool.algo.ts:994","pc":[3851]},{"teal":4153,"source":"contracts/stakingPool.algo.ts:994","errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[3852]},{"teal":4154,"source":"contracts/stakingPool.algo.ts:994","pc":[3853,3854]},{"teal":4155,"source":"contracts/stakingPool.algo.ts:994","pc":[3855]},{"teal":4156,"source":"contracts/stakingPool.algo.ts:994","pc":[3856]},{"teal":4157,"source":"contracts/stakingPool.algo.ts:994","pc":[3857]},{"teal":4158,"source":"contracts/stakingPool.algo.ts:994","pc":[3858]},{"teal":4159,"source":"contracts/stakingPool.algo.ts:994","pc":[3859,3860]},{"teal":4160,"source":"contracts/stakingPool.algo.ts:994","pc":[3861]},{"teal":4161,"source":"contracts/stakingPool.algo.ts:994","pc":[3862]},{"teal":4162,"source":"contracts/stakingPool.algo.ts:994","pc":[3863]},{"teal":4163,"source":"contracts/stakingPool.algo.ts:994","pc":[3864,3865]},{"teal":4168,"source":"contracts/stakingPool.algo.ts:995","pc":[3866,3867]},{"teal":4169,"source":"contracts/stakingPool.algo.ts:995","pc":[3868,3869]},{"teal":4170,"source":"contracts/stakingPool.algo.ts:995","pc":[3870]},{"teal":4171,"source":"contracts/stakingPool.algo.ts:995","pc":[3871,3872,3873]},{"teal":4178,"source":"contracts/stakingPool.algo.ts:1000","pc":[3874,3875]},{"teal":4179,"source":"contracts/stakingPool.algo.ts:1000","pc":[3876]},{"teal":4180,"source":"contracts/stakingPool.algo.ts:1000","pc":[3877]},{"teal":4181,"source":"contracts/stakingPool.algo.ts:1000","pc":[3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895]},{"teal":4182,"source":"contracts/stakingPool.algo.ts:1000","pc":[3896]},{"teal":4183,"source":"contracts/stakingPool.algo.ts:1000","pc":[3897,3898]},{"teal":4184,"source":"contracts/stakingPool.algo.ts:1000","pc":[3899]},{"teal":4185,"source":"contracts/stakingPool.algo.ts:1001","pc":[3900,3901]},{"teal":4186,"source":"contracts/stakingPool.algo.ts:1001","pc":[3902,3903]},{"teal":4187,"source":"contracts/stakingPool.algo.ts:1001","pc":[3904]},{"teal":4188,"source":"contracts/stakingPool.algo.ts:1000","pc":[3905]},{"teal":4189,"source":"contracts/stakingPool.algo.ts:1000","pc":[3906]},{"teal":4190,"source":"contracts/stakingPool.algo.ts:1000","pc":[3907]},{"teal":4191,"source":"contracts/stakingPool.algo.ts:1000","pc":[3908,3909]},{"teal":4192,"source":"contracts/stakingPool.algo.ts:1000","pc":[3910]},{"teal":4195,"source":"contracts/stakingPool.algo.ts:1000","errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[3911]},{"teal":4196,"source":"contracts/stakingPool.algo.ts:1000","pc":[3912,3913]},{"teal":4197,"source":"contracts/stakingPool.algo.ts:1000","pc":[3914]},{"teal":4198,"source":"contracts/stakingPool.algo.ts:1000","pc":[3915]},{"teal":4199,"source":"contracts/stakingPool.algo.ts:1000","pc":[3916]},{"teal":4200,"source":"contracts/stakingPool.algo.ts:1000","pc":[3917]},{"teal":4201,"source":"contracts/stakingPool.algo.ts:1000","pc":[3918,3919]},{"teal":4202,"source":"contracts/stakingPool.algo.ts:1000","pc":[3920]},{"teal":4203,"source":"contracts/stakingPool.algo.ts:1000","pc":[3921]},{"teal":4204,"source":"contracts/stakingPool.algo.ts:1000","pc":[3922]},{"teal":4205,"source":"contracts/stakingPool.algo.ts:999","pc":[3923,3924]},{"teal":4209,"source":"contracts/stakingPool.algo.ts:1003","pc":[3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942]},{"teal":4210,"source":"contracts/stakingPool.algo.ts:1003","pc":[3943,3944]},{"teal":4215,"source":"contracts/stakingPool.algo.ts:1005","pc":[3945,3946]},{"teal":4216,"source":"contracts/stakingPool.algo.ts:1005","pc":[3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964]},{"teal":4217,"source":"contracts/stakingPool.algo.ts:1005","pc":[3965]},{"teal":4218,"source":"contracts/stakingPool.algo.ts:1005","pc":[3966,3967,3968]},{"teal":4223,"source":"contracts/stakingPool.algo.ts:1006","pc":[3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986]},{"teal":4224,"source":"contracts/stakingPool.algo.ts:1006","pc":[3987,3988]},{"teal":4231,"source":"contracts/stakingPool.algo.ts:1008","pc":[3989,3990]},{"teal":4232,"source":"contracts/stakingPool.algo.ts:1008","pc":[3991]},{"teal":4233,"source":"contracts/stakingPool.algo.ts:1009","pc":[3992]},{"teal":4234,"source":"contracts/stakingPool.algo.ts:1009","pc":[3993,3994]},{"teal":4235,"source":"contracts/stakingPool.algo.ts:1009","pc":[3995,3996]},{"teal":4236,"source":"contracts/stakingPool.algo.ts:1009","pc":[3997]},{"teal":4237,"source":"contracts/stakingPool.algo.ts:1009","pc":[3998]},{"teal":4238,"source":"contracts/stakingPool.algo.ts:1009","pc":[3999,4000]},{"teal":4239,"source":"contracts/stakingPool.algo.ts:1009","pc":[4001]},{"teal":4240,"source":"contracts/stakingPool.algo.ts:1010","pc":[4002,4003]},{"teal":4241,"source":"contracts/stakingPool.algo.ts:1010","pc":[4004,4005]},{"teal":4242,"source":"contracts/stakingPool.algo.ts:1010","pc":[4006]},{"teal":4243,"source":"contracts/stakingPool.algo.ts:1010","pc":[4007,4008]},{"teal":4244,"source":"contracts/stakingPool.algo.ts:1010","pc":[4009]},{"teal":4245,"source":"contracts/stakingPool.algo.ts:1009","pc":[4010]},{"teal":4246,"source":"contracts/stakingPool.algo.ts:1009","pc":[4011]},{"teal":4247,"source":"contracts/stakingPool.algo.ts:1009","pc":[4012]},{"teal":4248,"source":"contracts/stakingPool.algo.ts:1009","pc":[4013,4014]},{"teal":4249,"source":"contracts/stakingPool.algo.ts:1009","pc":[4015]},{"teal":4252,"source":"contracts/stakingPool.algo.ts:1009","errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4016]},{"teal":4253,"source":"contracts/stakingPool.algo.ts:1009","pc":[4017,4018]},{"teal":4254,"source":"contracts/stakingPool.algo.ts:1009","pc":[4019]},{"teal":4255,"source":"contracts/stakingPool.algo.ts:1009","pc":[4020]},{"teal":4256,"source":"contracts/stakingPool.algo.ts:1009","pc":[4021]},{"teal":4257,"source":"contracts/stakingPool.algo.ts:1009","pc":[4022]},{"teal":4258,"source":"contracts/stakingPool.algo.ts:1009","pc":[4023,4024]},{"teal":4259,"source":"contracts/stakingPool.algo.ts:1009","pc":[4025]},{"teal":4260,"source":"contracts/stakingPool.algo.ts:1009","pc":[4026]},{"teal":4261,"source":"contracts/stakingPool.algo.ts:1009","pc":[4027]},{"teal":4262,"source":"contracts/stakingPool.algo.ts:1008","pc":[4028]},{"teal":4267,"source":"contracts/stakingPool.algo.ts:1014","pc":[4029,4030,4031]},{"teal":4271,"source":"contracts/stakingPool.algo.ts:1015","pc":[4032,4033]},{"teal":4272,"source":"contracts/stakingPool.algo.ts:1015","pc":[4034,4035]},{"teal":4273,"source":"contracts/stakingPool.algo.ts:1015","pc":[4036]},{"teal":4274,"source":"contracts/stakingPool.algo.ts:1015","pc":[4037]},{"teal":4275,"source":"contracts/stakingPool.algo.ts:1015","pc":[4038,4039]},{"teal":4276,"source":"contracts/stakingPool.algo.ts:1015","pc":[4040]},{"teal":4277,"source":"contracts/stakingPool.algo.ts:1015","pc":[4041]},{"teal":4278,"source":"contracts/stakingPool.algo.ts:1015","pc":[4042]},{"teal":4279,"source":"contracts/stakingPool.algo.ts:1015","pc":[4043]},{"teal":4280,"source":"contracts/stakingPool.algo.ts:1015","pc":[4044]},{"teal":4281,"source":"contracts/stakingPool.algo.ts:1015","pc":[4045,4046]},{"teal":4282,"source":"contracts/stakingPool.algo.ts:1015","pc":[4047]},{"teal":4285,"source":"contracts/stakingPool.algo.ts:1015","errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4048]},{"teal":4286,"source":"contracts/stakingPool.algo.ts:1015","pc":[4049,4050]},{"teal":4287,"source":"contracts/stakingPool.algo.ts:1015","pc":[4051]},{"teal":4288,"source":"contracts/stakingPool.algo.ts:1015","pc":[4052]},{"teal":4289,"source":"contracts/stakingPool.algo.ts:1015","pc":[4053]},{"teal":4290,"source":"contracts/stakingPool.algo.ts:1015","pc":[4054]},{"teal":4291,"source":"contracts/stakingPool.algo.ts:1015","pc":[4055,4056]},{"teal":4292,"source":"contracts/stakingPool.algo.ts:1015","pc":[4057]},{"teal":4293,"source":"contracts/stakingPool.algo.ts:1015","pc":[4058]},{"teal":4294,"source":"contracts/stakingPool.algo.ts:1015","pc":[4059]},{"teal":4295,"source":"contracts/stakingPool.algo.ts:1015","pc":[4060]},{"teal":4299,"source":"contracts/stakingPool.algo.ts:1016","pc":[4061,4062]},{"teal":4300,"source":"contracts/stakingPool.algo.ts:1016","pc":[4063]},{"teal":4301,"source":"contracts/stakingPool.algo.ts:1016","pc":[4064]},{"teal":4305,"source":"contracts/stakingPool.algo.ts:1017","pc":[4065,4066]},{"teal":4306,"source":"contracts/stakingPool.algo.ts:1017","pc":[4067,4068]},{"teal":4307,"source":"contracts/stakingPool.algo.ts:1017","pc":[4069,4070]},{"teal":4308,"source":"contracts/stakingPool.algo.ts:1017","pc":[4071,4072]},{"teal":4309,"source":"contracts/stakingPool.algo.ts:1017","pc":[4073]},{"teal":4310,"source":"contracts/stakingPool.algo.ts:1017","pc":[4074]},{"teal":4311,"source":"contracts/stakingPool.algo.ts:1017","pc":[4075]},{"teal":4312,"source":"contracts/stakingPool.algo.ts:1017","pc":[4076]},{"teal":4315,"source":"contracts/stakingPool.algo.ts:987","pc":[4077]},{"teal":4319,"source":"contracts/stakingPool.algo.ts:1021","pc":[4078,4079,4080]},{"teal":4322,"source":"contracts/stakingPool.algo.ts:1021","pc":[4081]},{"teal":4327,"source":"contracts/stakingPool.algo.ts:1026","pc":[4082,4083]},{"teal":4328,"source":"contracts/stakingPool.algo.ts:1026","pc":[4084,4085]},{"teal":4329,"source":"contracts/stakingPool.algo.ts:1026","pc":[4086]},{"teal":4330,"source":"contracts/stakingPool.algo.ts:1026","pc":[4087,4088,4089]},{"teal":4335,"source":"contracts/stakingPool.algo.ts:1028","pc":[4090,4091]},{"teal":4336,"source":"contracts/stakingPool.algo.ts:1028","pc":[4092,4093]},{"teal":4337,"source":"contracts/stakingPool.algo.ts:1028","pc":[4094]},{"teal":4341,"source":"contracts/stakingPool.algo.ts:1029","pc":[4095]},{"teal":4347,"source":"contracts/stakingPool.algo.ts:1033","pc":[4096,4097]},{"teal":4348,"source":"contracts/stakingPool.algo.ts:1033","pc":[4098]},{"teal":4349,"source":"contracts/stakingPool.algo.ts:1033","pc":[4099]},{"teal":4350,"source":"contracts/stakingPool.algo.ts:1033","pc":[4100,4101]},{"teal":4351,"source":"contracts/stakingPool.algo.ts:1033","pc":[4102,4103]},{"teal":4352,"source":"contracts/stakingPool.algo.ts:1033","pc":[4104,4105]},{"teal":4353,"source":"contracts/stakingPool.algo.ts:1033","pc":[4106]},{"teal":4354,"source":"contracts/stakingPool.algo.ts:1033","pc":[4107,4108]},{"teal":4355,"source":"contracts/stakingPool.algo.ts:1033","pc":[4109]},{"teal":4356,"source":"contracts/stakingPool.algo.ts:1032","pc":[4110,4111]},{"teal":4361,"source":"contracts/stakingPool.algo.ts:1034","pc":[4112,4113]},{"teal":4362,"source":"contracts/stakingPool.algo.ts:1034","pc":[4114]},{"teal":4363,"source":"contracts/stakingPool.algo.ts:1034","pc":[4115]},{"teal":4364,"source":"contracts/stakingPool.algo.ts:1034","pc":[4116,4117,4118]},{"teal":4369,"source":"contracts/stakingPool.algo.ts:1036","pc":[4119,4120]},{"teal":4370,"source":"contracts/stakingPool.algo.ts:1036","pc":[4121,4122]},{"teal":4371,"source":"contracts/stakingPool.algo.ts:1036","pc":[4123]},{"teal":4375,"source":"contracts/stakingPool.algo.ts:1037","pc":[4124]},{"teal":4380,"source":"contracts/stakingPool.algo.ts:1042","pc":[4125,4126]},{"teal":4381,"source":"contracts/stakingPool.algo.ts:1042","pc":[4127,4128,4129,4130]},{"teal":4382,"source":"contracts/stakingPool.algo.ts:1042","pc":[4131,4132]},{"teal":4383,"source":"contracts/stakingPool.algo.ts:1042","pc":[4133]},{"teal":4384,"source":"contracts/stakingPool.algo.ts:1042","pc":[4134]},{"teal":4385,"source":"contracts/stakingPool.algo.ts:1021","pc":[4135]},{"teal":4388,"source":"contracts/stakingPool.algo.ts:37","pc":[4136,4137,4138,4139,4140,4141]},{"teal":4389,"source":"contracts/stakingPool.algo.ts:37","pc":[4142,4143,4144]},{"teal":4390,"source":"contracts/stakingPool.algo.ts:37","pc":[4145,4146,4147,4148]},{"teal":4393,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4149]},{"teal":4396,"source":"contracts/stakingPool.algo.ts:37","pc":[4150,4151,4152,4153,4154,4155]},{"teal":4397,"source":"contracts/stakingPool.algo.ts:37","pc":[4156,4157,4158,4159,4160,4161]},{"teal":4398,"source":"contracts/stakingPool.algo.ts:37","pc":[4162,4163,4164,4165,4166,4167]},{"teal":4399,"source":"contracts/stakingPool.algo.ts:37","pc":[4168,4169,4170,4171,4172,4173]},{"teal":4400,"source":"contracts/stakingPool.algo.ts:37","pc":[4174,4175,4176,4177,4178,4179]},{"teal":4401,"source":"contracts/stakingPool.algo.ts:37","pc":[4180,4181,4182,4183,4184,4185]},{"teal":4402,"source":"contracts/stakingPool.algo.ts:37","pc":[4186,4187,4188,4189,4190,4191]},{"teal":4403,"source":"contracts/stakingPool.algo.ts:37","pc":[4192,4193,4194,4195,4196,4197]},{"teal":4404,"source":"contracts/stakingPool.algo.ts:37","pc":[4198,4199,4200,4201,4202,4203]},{"teal":4405,"source":"contracts/stakingPool.algo.ts:37","pc":[4204,4205,4206,4207,4208,4209]},{"teal":4406,"source":"contracts/stakingPool.algo.ts:37","pc":[4210,4211,4212,4213,4214,4215]},{"teal":4407,"source":"contracts/stakingPool.algo.ts:37","pc":[4216,4217,4218,4219,4220,4221]},{"teal":4408,"source":"contracts/stakingPool.algo.ts:37","pc":[4222,4223]},{"teal":4409,"source":"contracts/stakingPool.algo.ts:37","pc":[4224,4225,4226]},{"teal":4410,"source":"contracts/stakingPool.algo.ts:37","pc":[4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254]},{"teal":4413,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4255]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract /** * A state record containing binary data diff --git a/contracts/contracts/clients/ValidatorRegistryClient.ts b/contracts/contracts/clients/ValidatorRegistryClient.ts index f1ecbeac..ddf062f6 100644 --- a/contracts/contracts/clients/ValidatorRegistryClient.ts +++ b/contracts/contracts/clients/ValidatorRegistryClient.ts @@ -24,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { Address, encodeAddress, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/validatorRegistry.algo.ts:50","pc":[1,2]},{"teal":16,"source":"contracts/validatorRegistry.algo.ts:50","pc":[3]},{"teal":17,"source":"contracts/validatorRegistry.algo.ts:50","pc":[4,5]},{"teal":18,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6]},{"teal":19,"source":"contracts/validatorRegistry.algo.ts:50","pc":[7,8]},{"teal":20,"source":"contracts/validatorRegistry.algo.ts:50","pc":[9]},{"teal":21,"source":"contracts/validatorRegistry.algo.ts:50","pc":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]},{"teal":25,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[36]},{"teal":30,"source":"contracts/validatorRegistry.algo.ts:81","pc":[37,38,39]},{"teal":31,"source":"contracts/validatorRegistry.algo.ts:81","pc":[40]},{"teal":32,"source":"contracts/validatorRegistry.algo.ts:81","pc":[41]},{"teal":36,"source":"contracts/validatorRegistry.algo.ts:81","pc":[42,43,44]},{"teal":40,"source":"contracts/validatorRegistry.algo.ts:82","pc":[45,46]},{"teal":41,"source":"contracts/validatorRegistry.algo.ts:82","pc":[47]},{"teal":42,"source":"contracts/validatorRegistry.algo.ts:82","pc":[48,49]},{"teal":43,"source":"contracts/validatorRegistry.algo.ts:82","pc":[50]},{"teal":44,"source":"contracts/validatorRegistry.algo.ts:82","pc":[51,52]},{"teal":45,"source":"contracts/validatorRegistry.algo.ts:82","pc":[53]},{"teal":46,"source":"contracts/validatorRegistry.algo.ts:82","pc":[54]},{"teal":50,"source":"contracts/validatorRegistry.algo.ts:83","pc":[55,56]},{"teal":51,"source":"contracts/validatorRegistry.algo.ts:83","pc":[57]},{"teal":52,"source":"contracts/validatorRegistry.algo.ts:83","pc":[58]},{"teal":56,"source":"contracts/validatorRegistry.algo.ts:84","pc":[59,60]},{"teal":57,"source":"contracts/validatorRegistry.algo.ts:84","pc":[61]},{"teal":58,"source":"contracts/validatorRegistry.algo.ts:84","pc":[62]},{"teal":62,"source":"contracts/validatorRegistry.algo.ts:85","pc":[63,64]},{"teal":63,"source":"contracts/validatorRegistry.algo.ts:85","pc":[65]},{"teal":64,"source":"contracts/validatorRegistry.algo.ts:85","pc":[66]},{"teal":65,"source":"contracts/validatorRegistry.algo.ts:81","pc":[67]},{"teal":70,"source":"contracts/validatorRegistry.algo.ts:88","pc":[68,69,70]},{"teal":71,"source":"contracts/validatorRegistry.algo.ts:88","pc":[71]},{"teal":74,"source":"contracts/validatorRegistry.algo.ts:88","pc":[72,73,74]},{"teal":75,"source":"contracts/validatorRegistry.algo.ts:88","pc":[75]},{"teal":76,"source":"contracts/validatorRegistry.algo.ts:88","pc":[76]},{"teal":80,"source":"contracts/validatorRegistry.algo.ts:88","pc":[77,78,79]},{"teal":84,"source":"contracts/validatorRegistry.algo.ts:90","pc":[80,81]},{"teal":85,"source":"contracts/validatorRegistry.algo.ts:90","pc":[82,83]},{"teal":86,"source":"contracts/validatorRegistry.algo.ts:90","pc":[84]},{"teal":87,"source":"contracts/validatorRegistry.algo.ts:90","pc":[85]},{"teal":88,"source":"contracts/validatorRegistry.algo.ts:88","pc":[86]},{"teal":93,"source":"contracts/validatorRegistry.algo.ts:93","pc":[87,88,89]},{"teal":94,"source":"contracts/validatorRegistry.algo.ts:93","pc":[90,91,92]},{"teal":97,"source":"contracts/validatorRegistry.algo.ts:93","pc":[93,94,95]},{"teal":98,"source":"contracts/validatorRegistry.algo.ts:93","pc":[96]},{"teal":101,"source":"contracts/validatorRegistry.algo.ts:93","pc":[97,98,99]},{"teal":102,"source":"contracts/validatorRegistry.algo.ts:93","pc":[100]},{"teal":103,"source":"contracts/validatorRegistry.algo.ts:93","pc":[101]},{"teal":107,"source":"contracts/validatorRegistry.algo.ts:93","pc":[102,103,104]},{"teal":111,"source":"contracts/validatorRegistry.algo.ts:94","pc":[105,106]},{"teal":112,"source":"contracts/validatorRegistry.algo.ts:94","pc":[107]},{"teal":113,"source":"contracts/validatorRegistry.algo.ts:94","pc":[108]},{"teal":114,"source":"contracts/validatorRegistry.algo.ts:94","pc":[109]},{"teal":115,"source":"contracts/validatorRegistry.algo.ts:94","pc":[110]},{"teal":116,"source":"contracts/validatorRegistry.algo.ts:94","pc":[111]},{"teal":120,"source":"contracts/validatorRegistry.algo.ts:95","pc":[112,113]},{"teal":121,"source":"contracts/validatorRegistry.algo.ts:95","pc":[114,115]},{"teal":122,"source":"contracts/validatorRegistry.algo.ts:95","pc":[116,117]},{"teal":123,"source":"contracts/validatorRegistry.algo.ts:95","pc":[118]},{"teal":124,"source":"contracts/validatorRegistry.algo.ts:93","pc":[119]},{"teal":129,"source":"contracts/validatorRegistry.algo.ts:98","pc":[120,121,122]},{"teal":130,"source":"contracts/validatorRegistry.algo.ts:98","pc":[123]},{"teal":131,"source":"contracts/validatorRegistry.algo.ts:98","pc":[124]},{"teal":135,"source":"contracts/validatorRegistry.algo.ts:98","pc":[125,126,127]},{"teal":139,"source":"contracts/validatorRegistry.algo.ts:99","pc":[128,129]},{"teal":140,"source":"contracts/validatorRegistry.algo.ts:99","pc":[130]},{"teal":141,"source":"contracts/validatorRegistry.algo.ts:99","pc":[131,132]},{"teal":142,"source":"contracts/validatorRegistry.algo.ts:99","pc":[133]},{"teal":143,"source":"contracts/validatorRegistry.algo.ts:99","pc":[134,135]},{"teal":144,"source":"contracts/validatorRegistry.algo.ts:99","pc":[136]},{"teal":145,"source":"contracts/validatorRegistry.algo.ts:99","pc":[137]},{"teal":146,"source":"contracts/validatorRegistry.algo.ts:98","pc":[138]},{"teal":151,"source":"contracts/validatorRegistry.algo.ts:105","pc":[139,140,141]},{"teal":152,"source":"contracts/validatorRegistry.algo.ts:105","pc":[142]},{"teal":153,"source":"contracts/validatorRegistry.algo.ts:105","pc":[143]},{"teal":159,"source":"contracts/validatorRegistry.algo.ts:105","pc":[144,145,146]},{"teal":160,"source":"contracts/validatorRegistry.algo.ts:105","pc":[147]},{"teal":165,"source":"contracts/validatorRegistry.algo.ts:116","pc":[148]},{"teal":168,"source":"contracts/validatorRegistry.algo.ts:116","pc":[149,150,151]},{"teal":169,"source":"contracts/validatorRegistry.algo.ts:116","pc":[152]},{"teal":170,"source":"contracts/validatorRegistry.algo.ts:116","pc":[153]},{"teal":171,"source":"contracts/validatorRegistry.algo.ts:116","pc":[154]},{"teal":172,"source":"contracts/validatorRegistry.algo.ts:116","pc":[155]},{"teal":184,"source":"contracts/validatorRegistry.algo.ts:116","pc":[156,157,158]},{"teal":209,"source":"contracts/validatorRegistry.algo.ts:121","pc":[159,160,161]},{"teal":210,"source":"contracts/validatorRegistry.algo.ts:121","pc":[162,163,164]},{"teal":211,"source":"contracts/validatorRegistry.algo.ts:121","pc":[165]},{"teal":212,"source":"contracts/validatorRegistry.algo.ts:131","pc":[166,167]},{"teal":213,"source":"contracts/validatorRegistry.algo.ts:130","pc":[168,169]},{"teal":214,"source":"contracts/validatorRegistry.algo.ts:129","pc":[170]},{"teal":215,"source":"contracts/validatorRegistry.algo.ts:129","pc":[171,172]},{"teal":216,"source":"contracts/validatorRegistry.algo.ts:126","pc":[173,174]},{"teal":217,"source":"contracts/validatorRegistry.algo.ts:123","pc":[175]},{"teal":218,"source":"contracts/validatorRegistry.algo.ts:122","pc":[176,177,178]},{"teal":219,"source":"contracts/validatorRegistry.algo.ts:122","pc":[179]},{"teal":220,"source":"contracts/validatorRegistry.algo.ts:122","pc":[180]},{"teal":221,"source":"contracts/validatorRegistry.algo.ts:134","pc":[181,182]},{"teal":222,"source":"contracts/validatorRegistry.algo.ts:135","pc":[183,184,185]},{"teal":223,"source":"contracts/validatorRegistry.algo.ts:135","pc":[186,187,188]},{"teal":224,"source":"contracts/validatorRegistry.algo.ts:134","pc":[189]},{"teal":225,"source":"contracts/validatorRegistry.algo.ts:134","pc":[190]},{"teal":226,"source":"contracts/validatorRegistry.algo.ts:134","pc":[191]},{"teal":227,"source":"contracts/validatorRegistry.algo.ts:139","pc":[192,193,194]},{"teal":228,"source":"contracts/validatorRegistry.algo.ts:138","pc":[195,196,197]},{"teal":229,"source":"contracts/validatorRegistry.algo.ts:138","pc":[198]},{"teal":230,"source":"contracts/validatorRegistry.algo.ts:138","pc":[199]},{"teal":231,"source":"contracts/validatorRegistry.algo.ts:116","pc":[200]},{"teal":236,"source":"contracts/validatorRegistry.algo.ts:147","pc":[201]},{"teal":239,"source":"contracts/validatorRegistry.algo.ts:147","pc":[202,203,204]},{"teal":240,"source":"contracts/validatorRegistry.algo.ts:147","pc":[205]},{"teal":241,"source":"contracts/validatorRegistry.algo.ts:147","pc":[206]},{"teal":242,"source":"contracts/validatorRegistry.algo.ts:147","pc":[207]},{"teal":243,"source":"contracts/validatorRegistry.algo.ts:147","pc":[208]},{"teal":249,"source":"contracts/validatorRegistry.algo.ts:147","pc":[209,210,211]},{"teal":265,"source":"contracts/validatorRegistry.algo.ts:154","pc":[212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253]},{"teal":266,"source":"contracts/validatorRegistry.algo.ts:155","pc":[254,255,256]},{"teal":267,"source":"contracts/validatorRegistry.algo.ts:155","pc":[257]},{"teal":268,"source":"contracts/validatorRegistry.algo.ts:155","pc":[258]},{"teal":269,"source":"contracts/validatorRegistry.algo.ts:156","pc":[259,260,261]},{"teal":270,"source":"contracts/validatorRegistry.algo.ts:156","pc":[262]},{"teal":271,"source":"contracts/validatorRegistry.algo.ts:156","pc":[263]},{"teal":272,"source":"contracts/validatorRegistry.algo.ts:157","pc":[264,265,266]},{"teal":273,"source":"contracts/validatorRegistry.algo.ts:157","pc":[267]},{"teal":274,"source":"contracts/validatorRegistry.algo.ts:157","pc":[268]},{"teal":275,"source":"contracts/validatorRegistry.algo.ts:158","pc":[269,270,271,272,273,274,275,276,277,278]},{"teal":276,"source":"contracts/validatorRegistry.algo.ts:158","pc":[279]},{"teal":277,"source":"contracts/validatorRegistry.algo.ts:159","pc":[280,281,282,283,284,285,286,287,288,289]},{"teal":278,"source":"contracts/validatorRegistry.algo.ts:159","pc":[290]},{"teal":279,"source":"contracts/validatorRegistry.algo.ts:160","pc":[291,292,293,294,295,296,297,298,299,300]},{"teal":280,"source":"contracts/validatorRegistry.algo.ts:160","pc":[301]},{"teal":281,"source":"contracts/validatorRegistry.algo.ts:147","pc":[302]},{"teal":286,"source":"contracts/validatorRegistry.algo.ts:167","pc":[303]},{"teal":289,"source":"contracts/validatorRegistry.algo.ts:167","pc":[304,305,306]},{"teal":290,"source":"contracts/validatorRegistry.algo.ts:167","pc":[307]},{"teal":291,"source":"contracts/validatorRegistry.algo.ts:167","pc":[308]},{"teal":292,"source":"contracts/validatorRegistry.algo.ts:167","pc":[309]},{"teal":293,"source":"contracts/validatorRegistry.algo.ts:167","pc":[310]},{"teal":294,"source":"contracts/validatorRegistry.algo.ts:167","pc":[311]},{"teal":300,"source":"contracts/validatorRegistry.algo.ts:167","pc":[312,313,314]},{"teal":304,"source":"contracts/validatorRegistry.algo.ts:169","pc":[315,316]},{"teal":305,"source":"contracts/validatorRegistry.algo.ts:169","pc":[317]},{"teal":306,"source":"contracts/validatorRegistry.algo.ts:167","pc":[318]},{"teal":311,"source":"contracts/validatorRegistry.algo.ts:172","pc":[319]},{"teal":314,"source":"contracts/validatorRegistry.algo.ts:173","pc":[320,321,322]},{"teal":315,"source":"contracts/validatorRegistry.algo.ts:173","pc":[323]},{"teal":318,"source":"contracts/validatorRegistry.algo.ts:172","pc":[324,325,326]},{"teal":319,"source":"contracts/validatorRegistry.algo.ts:172","pc":[327]},{"teal":320,"source":"contracts/validatorRegistry.algo.ts:172","pc":[328]},{"teal":321,"source":"contracts/validatorRegistry.algo.ts:172","pc":[329]},{"teal":322,"source":"contracts/validatorRegistry.algo.ts:172","pc":[330]},{"teal":326,"source":"contracts/validatorRegistry.algo.ts:172","pc":[331,332,333]},{"teal":330,"source":"contracts/validatorRegistry.algo.ts:174","pc":[334]},{"teal":331,"source":"contracts/validatorRegistry.algo.ts:174","pc":[335,336]},{"teal":332,"source":"contracts/validatorRegistry.algo.ts:174","pc":[337]},{"teal":333,"source":"contracts/validatorRegistry.algo.ts:174","pc":[338,339]},{"teal":334,"source":"contracts/validatorRegistry.algo.ts:174","pc":[340]},{"teal":335,"source":"contracts/validatorRegistry.algo.ts:174","pc":[341]},{"teal":336,"source":"contracts/validatorRegistry.algo.ts:174","pc":[342,343]},{"teal":337,"source":"contracts/validatorRegistry.algo.ts:174","pc":[344]},{"teal":338,"source":"contracts/validatorRegistry.algo.ts:172","pc":[345]},{"teal":343,"source":"contracts/validatorRegistry.algo.ts:177","pc":[346]},{"teal":346,"source":"contracts/validatorRegistry.algo.ts:178","pc":[347,348,349]},{"teal":347,"source":"contracts/validatorRegistry.algo.ts:178","pc":[350]},{"teal":350,"source":"contracts/validatorRegistry.algo.ts:177","pc":[351,352,353]},{"teal":351,"source":"contracts/validatorRegistry.algo.ts:177","pc":[354]},{"teal":352,"source":"contracts/validatorRegistry.algo.ts:177","pc":[355]},{"teal":353,"source":"contracts/validatorRegistry.algo.ts:177","pc":[356]},{"teal":354,"source":"contracts/validatorRegistry.algo.ts:177","pc":[357]},{"teal":358,"source":"contracts/validatorRegistry.algo.ts:177","pc":[358,359,360]},{"teal":362,"source":"contracts/validatorRegistry.algo.ts:179","pc":[361,362]},{"teal":363,"source":"contracts/validatorRegistry.algo.ts:179","pc":[363,364]},{"teal":364,"source":"contracts/validatorRegistry.algo.ts:179","pc":[365]},{"teal":365,"source":"contracts/validatorRegistry.algo.ts:179","pc":[366,367]},{"teal":366,"source":"contracts/validatorRegistry.algo.ts:179","pc":[368]},{"teal":367,"source":"contracts/validatorRegistry.algo.ts:179","pc":[369]},{"teal":368,"source":"contracts/validatorRegistry.algo.ts:179","pc":[370,371]},{"teal":369,"source":"contracts/validatorRegistry.algo.ts:179","pc":[372]},{"teal":370,"source":"contracts/validatorRegistry.algo.ts:177","pc":[373]},{"teal":375,"source":"contracts/validatorRegistry.algo.ts:182","pc":[374]},{"teal":378,"source":"contracts/validatorRegistry.algo.ts:183","pc":[375,376,377]},{"teal":379,"source":"contracts/validatorRegistry.algo.ts:183","pc":[378]},{"teal":382,"source":"contracts/validatorRegistry.algo.ts:182","pc":[379,380,381]},{"teal":383,"source":"contracts/validatorRegistry.algo.ts:182","pc":[382]},{"teal":384,"source":"contracts/validatorRegistry.algo.ts:182","pc":[383]},{"teal":385,"source":"contracts/validatorRegistry.algo.ts:182","pc":[384]},{"teal":386,"source":"contracts/validatorRegistry.algo.ts:182","pc":[385]},{"teal":390,"source":"contracts/validatorRegistry.algo.ts:182","pc":[386,387,388]},{"teal":397,"source":"contracts/validatorRegistry.algo.ts:185","pc":[389]},{"teal":398,"source":"contracts/validatorRegistry.algo.ts:185","pc":[390,391]},{"teal":399,"source":"contracts/validatorRegistry.algo.ts:185","pc":[392]},{"teal":400,"source":"contracts/validatorRegistry.algo.ts:185","pc":[393,394]},{"teal":401,"source":"contracts/validatorRegistry.algo.ts:185","pc":[395]},{"teal":402,"source":"contracts/validatorRegistry.algo.ts:185","pc":[396]},{"teal":403,"source":"contracts/validatorRegistry.algo.ts:185","pc":[397,398]},{"teal":404,"source":"contracts/validatorRegistry.algo.ts:185","pc":[399]},{"teal":405,"source":"contracts/validatorRegistry.algo.ts:186","pc":[400,401]},{"teal":406,"source":"contracts/validatorRegistry.algo.ts:186","pc":[402,403]},{"teal":407,"source":"contracts/validatorRegistry.algo.ts:186","pc":[404]},{"teal":408,"source":"contracts/validatorRegistry.algo.ts:186","pc":[405,406]},{"teal":409,"source":"contracts/validatorRegistry.algo.ts:186","pc":[407]},{"teal":410,"source":"contracts/validatorRegistry.algo.ts:186","pc":[408]},{"teal":411,"source":"contracts/validatorRegistry.algo.ts:186","pc":[409,410]},{"teal":412,"source":"contracts/validatorRegistry.algo.ts:186","pc":[411]},{"teal":413,"source":"contracts/validatorRegistry.algo.ts:186","pc":[412]},{"teal":414,"source":"contracts/validatorRegistry.algo.ts:182","pc":[413]},{"teal":419,"source":"contracts/validatorRegistry.algo.ts:196","pc":[414]},{"teal":422,"source":"contracts/validatorRegistry.algo.ts:197","pc":[415,416,417]},{"teal":423,"source":"contracts/validatorRegistry.algo.ts:197","pc":[418]},{"teal":426,"source":"contracts/validatorRegistry.algo.ts:196","pc":[419,420,421]},{"teal":427,"source":"contracts/validatorRegistry.algo.ts:196","pc":[422]},{"teal":428,"source":"contracts/validatorRegistry.algo.ts:196","pc":[423]},{"teal":429,"source":"contracts/validatorRegistry.algo.ts:196","pc":[424,425]},{"teal":430,"source":"contracts/validatorRegistry.algo.ts:196","pc":[426]},{"teal":431,"source":"contracts/validatorRegistry.algo.ts:196","pc":[427]},{"teal":432,"source":"contracts/validatorRegistry.algo.ts:196","pc":[428,429,430]},{"teal":433,"source":"contracts/validatorRegistry.algo.ts:196","pc":[431]},{"teal":434,"source":"contracts/validatorRegistry.algo.ts:196","pc":[432]},{"teal":435,"source":"contracts/validatorRegistry.algo.ts:196","pc":[433]},{"teal":436,"source":"contracts/validatorRegistry.algo.ts:196","pc":[434]},{"teal":437,"source":"contracts/validatorRegistry.algo.ts:196","pc":[435]},{"teal":438,"source":"contracts/validatorRegistry.algo.ts:196","pc":[436]},{"teal":447,"source":"contracts/validatorRegistry.algo.ts:196","pc":[437,438,439]},{"teal":450,"source":"contracts/validatorRegistry.algo.ts:196","pc":[440]},{"teal":451,"source":"contracts/validatorRegistry.algo.ts:196","pc":[441,442]},{"teal":455,"source":"contracts/validatorRegistry.algo.ts:198","pc":[443]},{"teal":456,"source":"contracts/validatorRegistry.algo.ts:198","pc":[444,445]},{"teal":460,"source":"contracts/validatorRegistry.algo.ts:199","pc":[446,447]},{"teal":461,"source":"contracts/validatorRegistry.algo.ts:199","pc":[448,449]},{"teal":462,"source":"contracts/validatorRegistry.algo.ts:199","pc":[450]},{"teal":463,"source":"contracts/validatorRegistry.algo.ts:199","pc":[451,452]},{"teal":464,"source":"contracts/validatorRegistry.algo.ts:199","pc":[453]},{"teal":465,"source":"contracts/validatorRegistry.algo.ts:199","pc":[454]},{"teal":466,"source":"contracts/validatorRegistry.algo.ts:199","pc":[455,456]},{"teal":467,"source":"contracts/validatorRegistry.algo.ts:199","pc":[457]},{"teal":468,"source":"contracts/validatorRegistry.algo.ts:199","pc":[458,459]},{"teal":472,"source":"contracts/validatorRegistry.algo.ts:200","pc":[460]},{"teal":473,"source":"contracts/validatorRegistry.algo.ts:200","pc":[461,462]},{"teal":478,"source":"contracts/validatorRegistry.algo.ts:200","pc":[463,464]},{"teal":479,"source":"contracts/validatorRegistry.algo.ts:200","pc":[465]},{"teal":480,"source":"contracts/validatorRegistry.algo.ts:200","pc":[466]},{"teal":481,"source":"contracts/validatorRegistry.algo.ts:200","pc":[467,468,469]},{"teal":486,"source":"contracts/validatorRegistry.algo.ts:201","pc":[470,471]},{"teal":487,"source":"contracts/validatorRegistry.algo.ts:201","pc":[472,473]},{"teal":488,"source":"contracts/validatorRegistry.algo.ts:201","pc":[474,475]},{"teal":489,"source":"contracts/validatorRegistry.algo.ts:201","pc":[476]},{"teal":490,"source":"contracts/validatorRegistry.algo.ts:201","pc":[477]},{"teal":491,"source":"contracts/validatorRegistry.algo.ts:201","pc":[478]},{"teal":492,"source":"contracts/validatorRegistry.algo.ts:201","pc":[479]},{"teal":493,"source":"contracts/validatorRegistry.algo.ts:201","pc":[480]},{"teal":494,"source":"contracts/validatorRegistry.algo.ts:201","pc":[481]},{"teal":495,"source":"contracts/validatorRegistry.algo.ts:201","pc":[482]},{"teal":496,"source":"contracts/validatorRegistry.algo.ts:201","pc":[483]},{"teal":497,"source":"contracts/validatorRegistry.algo.ts:201","pc":[484,485,486]},{"teal":500,"source":"contracts/validatorRegistry.algo.ts:203","pc":[487,488,489]},{"teal":505,"source":"contracts/validatorRegistry.algo.ts:205","pc":[490,491]},{"teal":506,"source":"contracts/validatorRegistry.algo.ts:205","pc":[492,493]},{"teal":507,"source":"contracts/validatorRegistry.algo.ts:205","pc":[494,495]},{"teal":508,"source":"contracts/validatorRegistry.algo.ts:205","pc":[496,497]},{"teal":509,"source":"contracts/validatorRegistry.algo.ts:205","pc":[498]},{"teal":510,"source":"contracts/validatorRegistry.algo.ts:205","pc":[499,500]},{"teal":511,"source":"contracts/validatorRegistry.algo.ts:205","pc":[501]},{"teal":512,"source":"contracts/validatorRegistry.algo.ts:205","pc":[502]},{"teal":513,"source":"contracts/validatorRegistry.algo.ts:205","pc":[503,504]},{"teal":518,"source":"contracts/validatorRegistry.algo.ts:200","pc":[505,506]},{"teal":519,"source":"contracts/validatorRegistry.algo.ts:200","pc":[507]},{"teal":520,"source":"contracts/validatorRegistry.algo.ts:200","pc":[508]},{"teal":521,"source":"contracts/validatorRegistry.algo.ts:200","pc":[509,510]},{"teal":522,"source":"contracts/validatorRegistry.algo.ts:200","pc":[511,512,513]},{"teal":527,"source":"contracts/validatorRegistry.algo.ts:207","pc":[514,515]},{"teal":530,"source":"contracts/validatorRegistry.algo.ts:196","pc":[516,517]},{"teal":533,"source":"contracts/validatorRegistry.algo.ts:196","pc":[518,519]},{"teal":534,"source":"contracts/validatorRegistry.algo.ts:196","pc":[520]},{"teal":539,"source":"contracts/validatorRegistry.algo.ts:215","pc":[521]},{"teal":542,"source":"contracts/validatorRegistry.algo.ts:216","pc":[522,523,524]},{"teal":543,"source":"contracts/validatorRegistry.algo.ts:216","pc":[525]},{"teal":546,"source":"contracts/validatorRegistry.algo.ts:216","pc":[526,527,528]},{"teal":547,"source":"contracts/validatorRegistry.algo.ts:216","pc":[529]},{"teal":550,"source":"contracts/validatorRegistry.algo.ts:215","pc":[530,531,532]},{"teal":551,"source":"contracts/validatorRegistry.algo.ts:215","pc":[533]},{"teal":552,"source":"contracts/validatorRegistry.algo.ts:215","pc":[534]},{"teal":553,"source":"contracts/validatorRegistry.algo.ts:215","pc":[535]},{"teal":554,"source":"contracts/validatorRegistry.algo.ts:215","pc":[536]},{"teal":555,"source":"contracts/validatorRegistry.algo.ts:215","pc":[537]},{"teal":563,"source":"contracts/validatorRegistry.algo.ts:215","pc":[538,539,540]},{"teal":570,"source":"contracts/validatorRegistry.algo.ts:218","pc":[541,542]},{"teal":571,"source":"contracts/validatorRegistry.algo.ts:218","pc":[543]},{"teal":572,"source":"contracts/validatorRegistry.algo.ts:218","pc":[544]},{"teal":573,"source":"contracts/validatorRegistry.algo.ts:218","pc":[545]},{"teal":574,"source":"contracts/validatorRegistry.algo.ts:218","pc":[546,547,548]},{"teal":575,"source":"contracts/validatorRegistry.algo.ts:218","pc":[549,550]},{"teal":576,"source":"contracts/validatorRegistry.algo.ts:218","pc":[551]},{"teal":577,"source":"contracts/validatorRegistry.algo.ts:218","pc":[552]},{"teal":578,"source":"contracts/validatorRegistry.algo.ts:218","pc":[553]},{"teal":582,"source":"contracts/validatorRegistry.algo.ts:217","errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[554]},{"teal":586,"source":"contracts/validatorRegistry.algo.ts:221","pc":[555,556]},{"teal":587,"source":"contracts/validatorRegistry.algo.ts:221","pc":[557,558]},{"teal":588,"source":"contracts/validatorRegistry.algo.ts:221","pc":[559]},{"teal":589,"source":"contracts/validatorRegistry.algo.ts:221","pc":[560]},{"teal":590,"source":"contracts/validatorRegistry.algo.ts:221","pc":[561,562]},{"teal":591,"source":"contracts/validatorRegistry.algo.ts:221","pc":[563]},{"teal":592,"source":"contracts/validatorRegistry.algo.ts:221","pc":[564]},{"teal":593,"source":"contracts/validatorRegistry.algo.ts:221","pc":[565]},{"teal":594,"source":"contracts/validatorRegistry.algo.ts:221","pc":[566]},{"teal":595,"source":"contracts/validatorRegistry.algo.ts:221","pc":[567]},{"teal":596,"source":"contracts/validatorRegistry.algo.ts:221","pc":[568]},{"teal":597,"source":"contracts/validatorRegistry.algo.ts:221","pc":[569,570]},{"teal":598,"source":"contracts/validatorRegistry.algo.ts:221","pc":[571]},{"teal":599,"source":"contracts/validatorRegistry.algo.ts:221","pc":[572]},{"teal":600,"source":"contracts/validatorRegistry.algo.ts:221","pc":[573,574]},{"teal":601,"source":"contracts/validatorRegistry.algo.ts:221","pc":[575]},{"teal":602,"source":"contracts/validatorRegistry.algo.ts:221","pc":[576]},{"teal":603,"source":"contracts/validatorRegistry.algo.ts:215","pc":[577]},{"teal":608,"source":"contracts/validatorRegistry.algo.ts:224","pc":[578]},{"teal":611,"source":"contracts/validatorRegistry.algo.ts:225","pc":[579,580,581]},{"teal":612,"source":"contracts/validatorRegistry.algo.ts:225","pc":[582]},{"teal":613,"source":"contracts/validatorRegistry.algo.ts:225","pc":[583]},{"teal":614,"source":"contracts/validatorRegistry.algo.ts:225","pc":[584]},{"teal":615,"source":"contracts/validatorRegistry.algo.ts:225","pc":[585]},{"teal":618,"source":"contracts/validatorRegistry.algo.ts:225","errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[586]},{"teal":621,"source":"contracts/validatorRegistry.algo.ts:224","pc":[587,588,589]},{"teal":622,"source":"contracts/validatorRegistry.algo.ts:224","pc":[590]},{"teal":623,"source":"contracts/validatorRegistry.algo.ts:224","pc":[591]},{"teal":624,"source":"contracts/validatorRegistry.algo.ts:224","pc":[592]},{"teal":625,"source":"contracts/validatorRegistry.algo.ts:224","pc":[593]},{"teal":629,"source":"contracts/validatorRegistry.algo.ts:224","pc":[594,595,596]},{"teal":633,"source":"contracts/validatorRegistry.algo.ts:226","pc":[597,598]},{"teal":634,"source":"contracts/validatorRegistry.algo.ts:226","pc":[599,600]},{"teal":635,"source":"contracts/validatorRegistry.algo.ts:226","pc":[601,602,603]},{"teal":636,"source":"contracts/validatorRegistry.algo.ts:226","pc":[604]},{"teal":637,"source":"contracts/validatorRegistry.algo.ts:226","pc":[605]},{"teal":638,"source":"contracts/validatorRegistry.algo.ts:226","pc":[606]},{"teal":639,"source":"contracts/validatorRegistry.algo.ts:226","pc":[607,608]},{"teal":640,"source":"contracts/validatorRegistry.algo.ts:226","pc":[609]},{"teal":641,"source":"contracts/validatorRegistry.algo.ts:226","pc":[610]},{"teal":642,"source":"contracts/validatorRegistry.algo.ts:226","pc":[611,612]},{"teal":643,"source":"contracts/validatorRegistry.algo.ts:226","pc":[613]},{"teal":644,"source":"contracts/validatorRegistry.algo.ts:226","pc":[614,615]},{"teal":645,"source":"contracts/validatorRegistry.algo.ts:226","pc":[616,617,618]},{"teal":646,"source":"contracts/validatorRegistry.algo.ts:226","pc":[619]},{"teal":647,"source":"contracts/validatorRegistry.algo.ts:226","pc":[620]},{"teal":648,"source":"contracts/validatorRegistry.algo.ts:226","pc":[621]},{"teal":649,"source":"contracts/validatorRegistry.algo.ts:226","pc":[622,623]},{"teal":650,"source":"contracts/validatorRegistry.algo.ts:226","pc":[624]},{"teal":651,"source":"contracts/validatorRegistry.algo.ts:224","pc":[625]},{"teal":656,"source":"contracts/validatorRegistry.algo.ts:236","pc":[626]},{"teal":659,"source":"contracts/validatorRegistry.algo.ts:237","pc":[627,628,629]},{"teal":660,"source":"contracts/validatorRegistry.algo.ts:237","pc":[630]},{"teal":663,"source":"contracts/validatorRegistry.algo.ts:236","pc":[631,632,633]},{"teal":664,"source":"contracts/validatorRegistry.algo.ts:236","pc":[634]},{"teal":665,"source":"contracts/validatorRegistry.algo.ts:236","pc":[635]},{"teal":666,"source":"contracts/validatorRegistry.algo.ts:236","pc":[636]},{"teal":667,"source":"contracts/validatorRegistry.algo.ts:236","pc":[637]},{"teal":668,"source":"contracts/validatorRegistry.algo.ts:236","pc":[638]},{"teal":678,"source":"contracts/validatorRegistry.algo.ts:236","pc":[639,640,641]},{"teal":681,"source":"contracts/validatorRegistry.algo.ts:236","pc":[642]},{"teal":682,"source":"contracts/validatorRegistry.algo.ts:236","pc":[643,644]},{"teal":686,"source":"contracts/validatorRegistry.algo.ts:238","pc":[645,646]},{"teal":687,"source":"contracts/validatorRegistry.algo.ts:238","pc":[647,648]},{"teal":688,"source":"contracts/validatorRegistry.algo.ts:238","pc":[649]},{"teal":689,"source":"contracts/validatorRegistry.algo.ts:238","pc":[650,651]},{"teal":690,"source":"contracts/validatorRegistry.algo.ts:238","pc":[652]},{"teal":691,"source":"contracts/validatorRegistry.algo.ts:238","pc":[653]},{"teal":692,"source":"contracts/validatorRegistry.algo.ts:238","pc":[654,655]},{"teal":693,"source":"contracts/validatorRegistry.algo.ts:238","pc":[656]},{"teal":694,"source":"contracts/validatorRegistry.algo.ts:238","pc":[657]},{"teal":695,"source":"contracts/validatorRegistry.algo.ts:238","pc":[658,659]},{"teal":699,"source":"contracts/validatorRegistry.algo.ts:239","pc":[660,661,662]},{"teal":700,"source":"contracts/validatorRegistry.algo.ts:239","pc":[663,664]},{"teal":701,"source":"contracts/validatorRegistry.algo.ts:239","pc":[665]},{"teal":702,"source":"contracts/validatorRegistry.algo.ts:239","pc":[666,667]},{"teal":706,"source":"contracts/validatorRegistry.algo.ts:240","pc":[668,669,670]},{"teal":707,"source":"contracts/validatorRegistry.algo.ts:240","pc":[671]},{"teal":708,"source":"contracts/validatorRegistry.algo.ts:240","pc":[672]},{"teal":709,"source":"contracts/validatorRegistry.algo.ts:240","pc":[673,674]},{"teal":710,"source":"contracts/validatorRegistry.algo.ts:240","pc":[675]},{"teal":711,"source":"contracts/validatorRegistry.algo.ts:240","pc":[676]},{"teal":712,"source":"contracts/validatorRegistry.algo.ts:240","pc":[677,678]},{"teal":713,"source":"contracts/validatorRegistry.algo.ts:240","pc":[679]},{"teal":714,"source":"contracts/validatorRegistry.algo.ts:240","pc":[680]},{"teal":715,"source":"contracts/validatorRegistry.algo.ts:240","pc":[681,682]},{"teal":720,"source":"contracts/validatorRegistry.algo.ts:241","pc":[683,684]},{"teal":721,"source":"contracts/validatorRegistry.algo.ts:241","pc":[685]},{"teal":722,"source":"contracts/validatorRegistry.algo.ts:241","pc":[686]},{"teal":723,"source":"contracts/validatorRegistry.algo.ts:241","pc":[687,688,689]},{"teal":728,"source":"contracts/validatorRegistry.algo.ts:242","pc":[690,691,692]},{"teal":729,"source":"contracts/validatorRegistry.algo.ts:242","pc":[693,694]},{"teal":735,"source":"contracts/validatorRegistry.algo.ts:244","pc":[695,696]},{"teal":736,"source":"contracts/validatorRegistry.algo.ts:244","pc":[697,698]},{"teal":737,"source":"contracts/validatorRegistry.algo.ts:244","pc":[699]},{"teal":738,"source":"contracts/validatorRegistry.algo.ts:244","pc":[700,701,702]},{"teal":743,"source":"contracts/validatorRegistry.algo.ts:245","pc":[703,704]},{"teal":744,"source":"contracts/validatorRegistry.algo.ts:245","pc":[705,706]},{"teal":749,"source":"contracts/validatorRegistry.algo.ts:247","pc":[707,708]},{"teal":752,"source":"contracts/validatorRegistry.algo.ts:236","pc":[709,710]},{"teal":755,"source":"contracts/validatorRegistry.algo.ts:236","pc":[711,712]},{"teal":756,"source":"contracts/validatorRegistry.algo.ts:236","pc":[713]},{"teal":761,"source":"contracts/validatorRegistry.algo.ts:254","pc":[714]},{"teal":764,"source":"contracts/validatorRegistry.algo.ts:255","pc":[715,716,717]},{"teal":765,"source":"contracts/validatorRegistry.algo.ts:255","pc":[718]},{"teal":766,"source":"contracts/validatorRegistry.algo.ts:255","pc":[719]},{"teal":767,"source":"contracts/validatorRegistry.algo.ts:255","pc":[720,721]},{"teal":768,"source":"contracts/validatorRegistry.algo.ts:255","pc":[722]},{"teal":771,"source":"contracts/validatorRegistry.algo.ts:255","errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[723]},{"teal":774,"source":"contracts/validatorRegistry.algo.ts:254","pc":[724,725,726]},{"teal":775,"source":"contracts/validatorRegistry.algo.ts:254","pc":[727,728]},{"teal":776,"source":"contracts/validatorRegistry.algo.ts:254","pc":[729]},{"teal":777,"source":"contracts/validatorRegistry.algo.ts:254","pc":[730,731]},{"teal":778,"source":"contracts/validatorRegistry.algo.ts:254","pc":[732]},{"teal":779,"source":"contracts/validatorRegistry.algo.ts:254","pc":[733]},{"teal":780,"source":"contracts/validatorRegistry.algo.ts:254","pc":[734]},{"teal":781,"source":"contracts/validatorRegistry.algo.ts:254","pc":[735]},{"teal":782,"source":"contracts/validatorRegistry.algo.ts:254","pc":[736]},{"teal":789,"source":"contracts/validatorRegistry.algo.ts:254","pc":[737,738,739]},{"teal":793,"source":"contracts/validatorRegistry.algo.ts:256","pc":[740]},{"teal":794,"source":"contracts/validatorRegistry.algo.ts:256","pc":[741,742]},{"teal":795,"source":"contracts/validatorRegistry.algo.ts:256","pc":[743]},{"teal":796,"source":"contracts/validatorRegistry.algo.ts:256","pc":[744]},{"teal":797,"source":"contracts/validatorRegistry.algo.ts:256","pc":[745]},{"teal":798,"source":"contracts/validatorRegistry.algo.ts:256","pc":[746]},{"teal":799,"source":"contracts/validatorRegistry.algo.ts:256","pc":[747]},{"teal":800,"source":"contracts/validatorRegistry.algo.ts:254","pc":[748]},{"teal":805,"source":"contracts/validatorRegistry.algo.ts:265","pc":[749]},{"teal":808,"source":"contracts/validatorRegistry.algo.ts:266","pc":[750,751,752]},{"teal":809,"source":"contracts/validatorRegistry.algo.ts:266","pc":[753]},{"teal":810,"source":"contracts/validatorRegistry.algo.ts:266","pc":[754]},{"teal":811,"source":"contracts/validatorRegistry.algo.ts:266","pc":[755,756]},{"teal":812,"source":"contracts/validatorRegistry.algo.ts:266","pc":[757]},{"teal":815,"source":"contracts/validatorRegistry.algo.ts:266","errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[758]},{"teal":818,"source":"contracts/validatorRegistry.algo.ts:265","pc":[759,760,761]},{"teal":819,"source":"contracts/validatorRegistry.algo.ts:265","pc":[762]},{"teal":820,"source":"contracts/validatorRegistry.algo.ts:265","pc":[763]},{"teal":821,"source":"contracts/validatorRegistry.algo.ts:265","pc":[764]},{"teal":822,"source":"contracts/validatorRegistry.algo.ts:265","pc":[765]},{"teal":823,"source":"contracts/validatorRegistry.algo.ts:265","pc":[766]},{"teal":824,"source":"contracts/validatorRegistry.algo.ts:265","pc":[767,768,769]},{"teal":825,"source":"contracts/validatorRegistry.algo.ts:265","pc":[770]},{"teal":826,"source":"contracts/validatorRegistry.algo.ts:265","pc":[771]},{"teal":827,"source":"contracts/validatorRegistry.algo.ts:265","pc":[772]},{"teal":828,"source":"contracts/validatorRegistry.algo.ts:265","pc":[773]},{"teal":829,"source":"contracts/validatorRegistry.algo.ts:265","pc":[774]},{"teal":830,"source":"contracts/validatorRegistry.algo.ts:265","pc":[775]},{"teal":839,"source":"contracts/validatorRegistry.algo.ts:265","pc":[776,777,778]},{"teal":842,"source":"contracts/validatorRegistry.algo.ts:265","pc":[779]},{"teal":843,"source":"contracts/validatorRegistry.algo.ts:265","pc":[780,781]},{"teal":848,"source":"contracts/validatorRegistry.algo.ts:267","pc":[782]},{"teal":849,"source":"contracts/validatorRegistry.algo.ts:267","pc":[783,784]},{"teal":850,"source":"contracts/validatorRegistry.algo.ts:267","pc":[785]},{"teal":851,"source":"contracts/validatorRegistry.algo.ts:267","pc":[786]},{"teal":852,"source":"contracts/validatorRegistry.algo.ts:267","pc":[787]},{"teal":853,"source":"contracts/validatorRegistry.algo.ts:267","pc":[788]},{"teal":854,"source":"contracts/validatorRegistry.algo.ts:267","pc":[789]},{"teal":855,"source":"contracts/validatorRegistry.algo.ts:267","pc":[790,791,792]},{"teal":860,"source":"contracts/validatorRegistry.algo.ts:268","pc":[793]},{"teal":861,"source":"contracts/validatorRegistry.algo.ts:268","pc":[794,795,796]},{"teal":866,"source":"contracts/validatorRegistry.algo.ts:270","pc":[797]},{"teal":867,"source":"contracts/validatorRegistry.algo.ts:270","pc":[798,799]},{"teal":871,"source":"contracts/validatorRegistry.algo.ts:271","pc":[800]},{"teal":872,"source":"contracts/validatorRegistry.algo.ts:271","pc":[801,802]},{"teal":873,"source":"contracts/validatorRegistry.algo.ts:271","pc":[803]},{"teal":874,"source":"contracts/validatorRegistry.algo.ts:271","pc":[804]},{"teal":877,"source":"contracts/validatorRegistry.algo.ts:271","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[805]},{"teal":878,"source":"contracts/validatorRegistry.algo.ts:271","pc":[806,807]},{"teal":882,"source":"contracts/validatorRegistry.algo.ts:272","pc":[808]},{"teal":883,"source":"contracts/validatorRegistry.algo.ts:272","pc":[809,810]},{"teal":888,"source":"contracts/validatorRegistry.algo.ts:272","pc":[811,812]},{"teal":889,"source":"contracts/validatorRegistry.algo.ts:272","pc":[813,814]},{"teal":890,"source":"contracts/validatorRegistry.algo.ts:272","pc":[815]},{"teal":891,"source":"contracts/validatorRegistry.algo.ts:272","pc":[816,817,818]},{"teal":896,"source":"contracts/validatorRegistry.algo.ts:273","pc":[819,820]},{"teal":897,"source":"contracts/validatorRegistry.algo.ts:273","pc":[821,822]},{"teal":898,"source":"contracts/validatorRegistry.algo.ts:273","pc":[823]},{"teal":899,"source":"contracts/validatorRegistry.algo.ts:273","pc":[824]},{"teal":900,"source":"contracts/validatorRegistry.algo.ts:273","pc":[825]},{"teal":901,"source":"contracts/validatorRegistry.algo.ts:273","pc":[826]},{"teal":902,"source":"contracts/validatorRegistry.algo.ts:273","pc":[827]},{"teal":903,"source":"contracts/validatorRegistry.algo.ts:273","pc":[828]},{"teal":904,"source":"contracts/validatorRegistry.algo.ts:273","pc":[829]},{"teal":905,"source":"contracts/validatorRegistry.algo.ts:273","pc":[830]},{"teal":906,"source":"contracts/validatorRegistry.algo.ts:273","pc":[831]},{"teal":907,"source":"contracts/validatorRegistry.algo.ts:273","pc":[832,833,834]},{"teal":912,"source":"contracts/validatorRegistry.algo.ts:274","pc":[835,836]},{"teal":913,"source":"contracts/validatorRegistry.algo.ts:274","pc":[837,838]},{"teal":914,"source":"contracts/validatorRegistry.algo.ts:274","pc":[839,840]},{"teal":915,"source":"contracts/validatorRegistry.algo.ts:274","pc":[841]},{"teal":916,"source":"contracts/validatorRegistry.algo.ts:274","pc":[842]},{"teal":917,"source":"contracts/validatorRegistry.algo.ts:274","pc":[843]},{"teal":918,"source":"contracts/validatorRegistry.algo.ts:274","pc":[844]},{"teal":919,"source":"contracts/validatorRegistry.algo.ts:274","pc":[845]},{"teal":920,"source":"contracts/validatorRegistry.algo.ts:274","pc":[846,847]},{"teal":927,"source":"contracts/validatorRegistry.algo.ts:272","pc":[848,849]},{"teal":928,"source":"contracts/validatorRegistry.algo.ts:272","pc":[850]},{"teal":929,"source":"contracts/validatorRegistry.algo.ts:272","pc":[851]},{"teal":930,"source":"contracts/validatorRegistry.algo.ts:272","pc":[852,853]},{"teal":931,"source":"contracts/validatorRegistry.algo.ts:272","pc":[854,855,856]},{"teal":936,"source":"contracts/validatorRegistry.algo.ts:277","pc":[857,858]},{"teal":940,"source":"contracts/validatorRegistry.algo.ts:265","pc":[859,860]},{"teal":943,"source":"contracts/validatorRegistry.algo.ts:265","pc":[861,862]},{"teal":944,"source":"contracts/validatorRegistry.algo.ts:265","pc":[863]},{"teal":949,"source":"contracts/validatorRegistry.algo.ts:287","pc":[864]},{"teal":952,"source":"contracts/validatorRegistry.algo.ts:288","pc":[865,866,867]},{"teal":953,"source":"contracts/validatorRegistry.algo.ts:288","pc":[868]},{"teal":956,"source":"contracts/validatorRegistry.algo.ts:287","pc":[869,870,871]},{"teal":957,"source":"contracts/validatorRegistry.algo.ts:287","pc":[872]},{"teal":958,"source":"contracts/validatorRegistry.algo.ts:287","pc":[873]},{"teal":959,"source":"contracts/validatorRegistry.algo.ts:287","pc":[874]},{"teal":960,"source":"contracts/validatorRegistry.algo.ts:287","pc":[875]},{"teal":970,"source":"contracts/validatorRegistry.algo.ts:287","pc":[876,877,878]},{"teal":974,"source":"contracts/validatorRegistry.algo.ts:289","pc":[879,880]},{"teal":975,"source":"contracts/validatorRegistry.algo.ts:289","pc":[881,882]},{"teal":976,"source":"contracts/validatorRegistry.algo.ts:289","pc":[883]},{"teal":977,"source":"contracts/validatorRegistry.algo.ts:289","pc":[884,885]},{"teal":978,"source":"contracts/validatorRegistry.algo.ts:289","pc":[886]},{"teal":979,"source":"contracts/validatorRegistry.algo.ts:289","pc":[887]},{"teal":980,"source":"contracts/validatorRegistry.algo.ts:289","pc":[888,889]},{"teal":981,"source":"contracts/validatorRegistry.algo.ts:289","pc":[890]},{"teal":982,"source":"contracts/validatorRegistry.algo.ts:287","pc":[891]},{"teal":987,"source":"contracts/validatorRegistry.algo.ts:292","pc":[892]},{"teal":990,"source":"contracts/validatorRegistry.algo.ts:293","pc":[893,894,895]},{"teal":991,"source":"contracts/validatorRegistry.algo.ts:293","pc":[896]},{"teal":994,"source":"contracts/validatorRegistry.algo.ts:292","pc":[897,898,899]},{"teal":995,"source":"contracts/validatorRegistry.algo.ts:292","pc":[900]},{"teal":996,"source":"contracts/validatorRegistry.algo.ts:292","pc":[901]},{"teal":997,"source":"contracts/validatorRegistry.algo.ts:292","pc":[902]},{"teal":998,"source":"contracts/validatorRegistry.algo.ts:292","pc":[903]},{"teal":1002,"source":"contracts/validatorRegistry.algo.ts:292","pc":[904,905,906]},{"teal":1006,"source":"contracts/validatorRegistry.algo.ts:294","pc":[907]},{"teal":1007,"source":"contracts/validatorRegistry.algo.ts:294","pc":[908,909]},{"teal":1008,"source":"contracts/validatorRegistry.algo.ts:294","pc":[910]},{"teal":1009,"source":"contracts/validatorRegistry.algo.ts:294","pc":[911]},{"teal":1010,"source":"contracts/validatorRegistry.algo.ts:294","pc":[912]},{"teal":1011,"source":"contracts/validatorRegistry.algo.ts:294","pc":[913]},{"teal":1012,"source":"contracts/validatorRegistry.algo.ts:294","pc":[914]},{"teal":1015,"source":"contracts/validatorRegistry.algo.ts:294","errorMessage":"the specified validator id doesn't exist","pc":[915]},{"teal":1019,"source":"contracts/validatorRegistry.algo.ts:296","pc":[916,917]},{"teal":1020,"source":"contracts/validatorRegistry.algo.ts:296","pc":[918,919]},{"teal":1021,"source":"contracts/validatorRegistry.algo.ts:296","pc":[920]},{"teal":1022,"source":"contracts/validatorRegistry.algo.ts:296","pc":[921,922]},{"teal":1023,"source":"contracts/validatorRegistry.algo.ts:296","pc":[923]},{"teal":1024,"source":"contracts/validatorRegistry.algo.ts:296","pc":[924]},{"teal":1025,"source":"contracts/validatorRegistry.algo.ts:296","pc":[925,926]},{"teal":1026,"source":"contracts/validatorRegistry.algo.ts:296","pc":[927]},{"teal":1027,"source":"contracts/validatorRegistry.algo.ts:292","pc":[928]},{"teal":1032,"source":"contracts/validatorRegistry.algo.ts:299","pc":[929]},{"teal":1035,"source":"contracts/validatorRegistry.algo.ts:299","pc":[930,931,932]},{"teal":1036,"source":"contracts/validatorRegistry.algo.ts:299","pc":[933]},{"teal":1037,"source":"contracts/validatorRegistry.algo.ts:299","pc":[934]},{"teal":1038,"source":"contracts/validatorRegistry.algo.ts:299","pc":[935]},{"teal":1039,"source":"contracts/validatorRegistry.algo.ts:299","pc":[936]},{"teal":1040,"source":"contracts/validatorRegistry.algo.ts:299","pc":[937]},{"teal":1044,"source":"contracts/validatorRegistry.algo.ts:299","pc":[938,939,940]},{"teal":1048,"source":"contracts/validatorRegistry.algo.ts:301","pc":[941,942]},{"teal":1049,"source":"contracts/validatorRegistry.algo.ts:299","pc":[943]},{"teal":1054,"source":"contracts/validatorRegistry.algo.ts:312","pc":[944]},{"teal":1057,"source":"contracts/validatorRegistry.algo.ts:312","pc":[945,946,947]},{"teal":1058,"source":"contracts/validatorRegistry.algo.ts:312","pc":[948]},{"teal":1059,"source":"contracts/validatorRegistry.algo.ts:312","pc":[949]},{"teal":1060,"source":"contracts/validatorRegistry.algo.ts:312","pc":[950,951]},{"teal":1061,"source":"contracts/validatorRegistry.algo.ts:312","pc":[952]},{"teal":1064,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[953]},{"teal":1067,"source":"contracts/validatorRegistry.algo.ts:312","pc":[954,955,956]},{"teal":1068,"source":"contracts/validatorRegistry.algo.ts:312","pc":[957,958,959]},{"teal":1071,"source":"contracts/validatorRegistry.algo.ts:312","pc":[960,961]},{"teal":1072,"source":"contracts/validatorRegistry.algo.ts:312","pc":[962]},{"teal":1073,"source":"contracts/validatorRegistry.algo.ts:312","pc":[963]},{"teal":1074,"source":"contracts/validatorRegistry.algo.ts:312","pc":[964]},{"teal":1075,"source":"contracts/validatorRegistry.algo.ts:312","pc":[965,966]},{"teal":1076,"source":"contracts/validatorRegistry.algo.ts:312","pc":[967]},{"teal":1077,"source":"contracts/validatorRegistry.algo.ts:312","pc":[968]},{"teal":1080,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[969]},{"teal":1083,"source":"contracts/validatorRegistry.algo.ts:312","pc":[970,971,972]},{"teal":1084,"source":"contracts/validatorRegistry.algo.ts:312","pc":[973]},{"teal":1085,"source":"contracts/validatorRegistry.algo.ts:312","pc":[974]},{"teal":1086,"source":"contracts/validatorRegistry.algo.ts:312","pc":[975]},{"teal":1087,"source":"contracts/validatorRegistry.algo.ts:312","pc":[976]},{"teal":1088,"source":"contracts/validatorRegistry.algo.ts:312","pc":[977]},{"teal":1100,"source":"contracts/validatorRegistry.algo.ts:312","pc":[978,979,980]},{"teal":1103,"source":"contracts/validatorRegistry.algo.ts:312","pc":[981]},{"teal":1107,"source":"contracts/validatorRegistry.algo.ts:313","pc":[982,983]},{"teal":1108,"source":"contracts/validatorRegistry.algo.ts:313","pc":[984,985,986]},{"teal":1113,"source":"contracts/validatorRegistry.algo.ts:315","pc":[987,988]},{"teal":1114,"source":"contracts/validatorRegistry.algo.ts:315","pc":[989,990]},{"teal":1115,"source":"contracts/validatorRegistry.algo.ts:315","pc":[991,992]},{"teal":1116,"source":"contracts/validatorRegistry.algo.ts:315","pc":[993]},{"teal":1119,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[994]},{"teal":1122,"source":"contracts/validatorRegistry.algo.ts:315","pc":[995,996]},{"teal":1123,"source":"contracts/validatorRegistry.algo.ts:315","pc":[997,998]},{"teal":1124,"source":"contracts/validatorRegistry.algo.ts:315","pc":[999,1000,1001]},{"teal":1125,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1002,1003,1004]},{"teal":1126,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1005]},{"teal":1127,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1006]},{"teal":1130,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1007]},{"teal":1134,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1008,1009]},{"teal":1135,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1010,1011]},{"teal":1136,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1012,1013,1014,1015,1016]},{"teal":1137,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1017]},{"teal":1140,"source":"contracts/validatorRegistry.algo.ts:317","errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1018]},{"teal":1144,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1019,1020]},{"teal":1145,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1021]},{"teal":1146,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1022]},{"teal":1147,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1023]},{"teal":1148,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1024,1025]},{"teal":1152,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1026,1027]},{"teal":1153,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1028,1029]},{"teal":1154,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1030]},{"teal":1158,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1031]},{"teal":1159,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1032,1033]},{"teal":1160,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1034]},{"teal":1161,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1035]},{"teal":1162,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1036,1037,1038]},{"teal":1163,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1039]},{"teal":1164,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1040]},{"teal":1168,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1041]},{"teal":1169,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1042,1043]},{"teal":1170,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1044]},{"teal":1171,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1045,1046]},{"teal":1172,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1047]},{"teal":1173,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1048]},{"teal":1174,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1049,1050]},{"teal":1175,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1051]},{"teal":1179,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1052]},{"teal":1180,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1053,1054]},{"teal":1181,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1055]},{"teal":1182,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1056]},{"teal":1183,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1057,1058]},{"teal":1184,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1059]},{"teal":1185,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1060]},{"teal":1186,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1061,1062]},{"teal":1187,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1063]},{"teal":1192,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1064,1065]},{"teal":1193,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1066,1067,1068]},{"teal":1194,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1069]},{"teal":1195,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1070]},{"teal":1196,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1071]},{"teal":1197,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1072,1073,1074]},{"teal":1202,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1075,1076]},{"teal":1203,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1077,1078,1079]},{"teal":1204,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1080]},{"teal":1205,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1081,1082,1083]},{"teal":1208,"source":"contracts/validatorRegistry.algo.ts:330","errorMessage":"provided NFD must be valid","pc":[1084]},{"teal":1215,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1085,1086]},{"teal":1216,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1087,1088]},{"teal":1217,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1089,1090,1091]},{"teal":1218,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1092]},{"teal":1219,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1093,1094]},{"teal":1220,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1095]},{"teal":1223,"source":"contracts/validatorRegistry.algo.ts:333","errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1096]},{"teal":1224,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1097]},{"teal":1227,"source":"contracts/validatorRegistry.algo.ts:332","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1098]},{"teal":1234,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1099,1100]},{"teal":1235,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1101,1102,1103]},{"teal":1236,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1104]},{"teal":1237,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1105,1106]},{"teal":1238,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1107]},{"teal":1239,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1108]},{"teal":1240,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1109,1110,1111]},{"teal":1241,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1112,1113]},{"teal":1242,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1114,1115,1116]},{"teal":1243,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1117]},{"teal":1244,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1118,1119]},{"teal":1245,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1120]},{"teal":1246,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1121]},{"teal":1249,"source":"contracts/validatorRegistry.algo.ts:337","pc":[1122,1123,1124]},{"teal":1257,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1125,1126]},{"teal":1258,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1127,1128,1129]},{"teal":1259,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1130]},{"teal":1260,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1131,1132,1133]},{"teal":1263,"source":"contracts/validatorRegistry.algo.ts:342","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1134]},{"teal":1268,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1135,1136,1137,1138,1139,1140]},{"teal":1269,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1141,1142]},{"teal":1270,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1143]},{"teal":1271,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1144,1145]},{"teal":1272,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1146,1147,1148]},{"teal":1273,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1149]},{"teal":1274,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1150,1151]},{"teal":1275,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1152,1153,1154]},{"teal":1276,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1155]},{"teal":1277,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1156]},{"teal":1278,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1157]},{"teal":1282,"source":"contracts/validatorRegistry.algo.ts:348","pc":[1158,1159]},{"teal":1285,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1160,1161]},{"teal":1286,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1162]},{"teal":1291,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1163,1164,1165]},{"teal":1292,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1166]},{"teal":1293,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1167]},{"teal":1294,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1168,1169]},{"teal":1295,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1170]},{"teal":1298,"source":"contracts/validatorRegistry.algo.ts:358","errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1171]},{"teal":1301,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1172,1173,1174]},{"teal":1302,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1175]},{"teal":1305,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1176,1177,1178]},{"teal":1306,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1179]},{"teal":1307,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1180]},{"teal":1317,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1181,1182,1183]},{"teal":1321,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1184,1185]},{"teal":1322,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1186,1187,1188]},{"teal":1326,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1189,1190]},{"teal":1327,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1191,1192]},{"teal":1328,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1193]},{"teal":1331,"source":"contracts/validatorRegistry.algo.ts:360","errorMessage":"needs to at least be valid address","pc":[1194]},{"teal":1335,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1195,1196]},{"teal":1336,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1197,1198]},{"teal":1337,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1199]},{"teal":1338,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1200,1201]},{"teal":1339,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1202]},{"teal":1340,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1203]},{"teal":1341,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1204,1205]},{"teal":1342,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1206]},{"teal":1343,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1207]},{"teal":1348,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1208,1209,1210]},{"teal":1349,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1211]},{"teal":1352,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1212,1213,1214]},{"teal":1353,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1215]},{"teal":1356,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1216,1217,1218]},{"teal":1357,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1219]},{"teal":1360,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1220,1221,1222]},{"teal":1361,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1223]},{"teal":1362,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1224]},{"teal":1373,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1225,1226,1227]},{"teal":1377,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1228,1229]},{"teal":1378,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1230,1231,1232]},{"teal":1382,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1233,1234]},{"teal":1383,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1235,1236]},{"teal":1384,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1237]},{"teal":1385,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1238]},{"teal":1386,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1239,1240]},{"teal":1387,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1241]},{"teal":1388,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1242]},{"teal":1389,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1243,1244]},{"teal":1390,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1245]},{"teal":1394,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1246,1247,1248]},{"teal":1395,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1249,1250]},{"teal":1396,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1251]},{"teal":1397,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1252]},{"teal":1398,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1253,1254]},{"teal":1399,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1255]},{"teal":1400,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1256]},{"teal":1401,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1257,1258]},{"teal":1402,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1259]},{"teal":1403,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1260]},{"teal":1408,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1261,1262,1263]},{"teal":1409,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1264,1265,1266]},{"teal":1412,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1267,1268,1269]},{"teal":1413,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1270]},{"teal":1416,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1271,1272,1273]},{"teal":1417,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1274]},{"teal":1420,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1275,1276,1277]},{"teal":1421,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1278]},{"teal":1422,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1279]},{"teal":1433,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1280,1281,1282]},{"teal":1437,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1283,1284]},{"teal":1438,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1285,1286,1287]},{"teal":1442,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1288,1289]},{"teal":1443,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1290,1291,1292]},{"teal":1446,"source":"contracts/validatorRegistry.algo.ts:389","errorMessage":"provided NFD must be valid","pc":[1293]},{"teal":1453,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1294,1295]},{"teal":1454,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1296,1297]},{"teal":1455,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1298,1299]},{"teal":1456,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1300]},{"teal":1459,"source":"contracts/validatorRegistry.algo.ts:392","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1301]},{"teal":1460,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1302]},{"teal":1463,"source":"contracts/validatorRegistry.algo.ts:391","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1303]},{"teal":1467,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1304,1305]},{"teal":1468,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1306,1307]},{"teal":1469,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1308]},{"teal":1470,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1309]},{"teal":1471,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1310,1311]},{"teal":1472,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1312]},{"teal":1473,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1313]},{"teal":1474,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1314,1315]},{"teal":1475,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1316]},{"teal":1476,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1317]},{"teal":1481,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1318,1319,1320]},{"teal":1482,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1321]},{"teal":1483,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1322]},{"teal":1484,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1323,1324]},{"teal":1485,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1325]},{"teal":1488,"source":"contracts/validatorRegistry.algo.ts:402","errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1326]},{"teal":1491,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1327,1328,1329]},{"teal":1492,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1330]},{"teal":1495,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1331,1332,1333]},{"teal":1496,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1334]},{"teal":1497,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1335]},{"teal":1504,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1336,1337,1338]},{"teal":1508,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1339,1340]},{"teal":1509,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1341,1342,1343]},{"teal":1513,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1344,1345]},{"teal":1514,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1346,1347]},{"teal":1515,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1348]},{"teal":1516,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1349]},{"teal":1520,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1350,1351,1352]},{"teal":1521,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1353,1354]},{"teal":1522,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1355]},{"teal":1523,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1356,1357]},{"teal":1524,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1358]},{"teal":1525,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1359]},{"teal":1526,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1360,1361]},{"teal":1527,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1362]},{"teal":1528,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1363]},{"teal":1533,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1364,1365,1366]},{"teal":1534,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1367]},{"teal":1537,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1368,1369,1370]},{"teal":1538,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1371]},{"teal":1541,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1372,1373,1374]},{"teal":1542,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1375]},{"teal":1543,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1376]},{"teal":1544,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1377,1378]},{"teal":1545,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1379]},{"teal":1548,"source":"contracts/validatorRegistry.algo.ts:416","errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1380]},{"teal":1551,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1381,1382,1383]},{"teal":1552,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1384]},{"teal":1553,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1385]},{"teal":1554,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1386,1387]},{"teal":1555,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1388]},{"teal":1558,"source":"contracts/validatorRegistry.algo.ts:415","errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1389]},{"teal":1561,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1390,1391,1392]},{"teal":1562,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1393]},{"teal":1563,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1394]},{"teal":1564,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1395]},{"teal":1565,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1396]},{"teal":1568,"source":"contracts/validatorRegistry.algo.ts:414","errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1397]},{"teal":1569,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1398]},{"teal":1572,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1399,1400,1401]},{"teal":1573,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1402]},{"teal":1576,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1403,1404,1405]},{"teal":1577,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1406]},{"teal":1578,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1407]},{"teal":1585,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1408,1409,1410]},{"teal":1589,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1411,1412]},{"teal":1590,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1413,1414,1415]},{"teal":1597,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1416,1417]},{"teal":1598,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1418]},{"teal":1599,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1419]},{"teal":1600,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1420]},{"teal":1601,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1421,1422,1423]},{"teal":1602,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1424,1425]},{"teal":1603,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1426,1427]},{"teal":1604,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1428]},{"teal":1605,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1429]},{"teal":1609,"source":"contracts/validatorRegistry.algo.ts:422","errorMessage":"invalid Entry gating type","pc":[1430]},{"teal":1614,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1431,1432]},{"teal":1615,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1433]},{"teal":1616,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1434]},{"teal":1617,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1435,1436,1437]},{"teal":1622,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1438,1439]},{"teal":1623,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1440,1441]},{"teal":1624,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1442]},{"teal":1625,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1443]},{"teal":1632,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1444,1445]},{"teal":1633,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1446,1447]},{"teal":1634,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1448]},{"teal":1635,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1449]},{"teal":1636,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1450,1451,1452]},{"teal":1637,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1453,1454]},{"teal":1638,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1455,1456]},{"teal":1639,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1457]},{"teal":1640,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1458]},{"teal":1643,"source":"contracts/validatorRegistry.algo.ts:429","pc":[1459,1460,1461]},{"teal":1648,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1462,1463]},{"teal":1649,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1464,1465,1466]},{"teal":1650,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1467]},{"teal":1651,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1468,1469,1470]},{"teal":1654,"source":"contracts/validatorRegistry.algo.ts:433","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1471]},{"teal":1659,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1472,1473]},{"teal":1660,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1474,1475]},{"teal":1661,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1476]},{"teal":1662,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1477,1478,1479]},{"teal":1663,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1480]},{"teal":1664,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1481,1482]},{"teal":1665,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1483]},{"teal":1666,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1484]},{"teal":1667,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1485,1486]},{"teal":1668,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1487]},{"teal":1672,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1488,1489]},{"teal":1673,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1490,1491]},{"teal":1674,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1492]},{"teal":1675,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1493,1494]},{"teal":1676,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1495]},{"teal":1677,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1496]},{"teal":1678,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1497,1498]},{"teal":1679,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1499]},{"teal":1683,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1500,1501]},{"teal":1684,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1502,1503]},{"teal":1685,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1504]},{"teal":1686,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1505,1506]},{"teal":1687,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1507]},{"teal":1688,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1508]},{"teal":1689,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1509,1510]},{"teal":1690,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1511]},{"teal":1694,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1512,1513]},{"teal":1695,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1514,1515]},{"teal":1696,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1516]},{"teal":1697,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1517]},{"teal":1698,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1518,1519]},{"teal":1699,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1520]},{"teal":1700,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1521]},{"teal":1701,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1522,1523]},{"teal":1702,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1524]},{"teal":1706,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1525,1526,1527]},{"teal":1707,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1528,1529]},{"teal":1708,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1530]},{"teal":1709,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1531]},{"teal":1710,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1532,1533]},{"teal":1711,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1534]},{"teal":1712,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1535]},{"teal":1713,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1536,1537]},{"teal":1714,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1538]},{"teal":1715,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1539]},{"teal":1720,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1540]},{"teal":1723,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1541,1542,1543]},{"teal":1724,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1544]},{"teal":1727,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1545,1546,1547]},{"teal":1728,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1548]},{"teal":1731,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1549,1550]},{"teal":1732,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1551]},{"teal":1733,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1552]},{"teal":1734,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1553]},{"teal":1735,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1554,1555]},{"teal":1736,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1556]},{"teal":1737,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1557]},{"teal":1740,"source":"contracts/validatorRegistry.algo.ts:453","errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1558]},{"teal":1743,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1559,1560,1561]},{"teal":1744,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1562]},{"teal":1745,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1563]},{"teal":1746,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1564]},{"teal":1747,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1565]},{"teal":1760,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1566,1567,1568]},{"teal":1763,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1569]},{"teal":1764,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1570]},{"teal":1768,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1571,1572]},{"teal":1769,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1573,1574,1575]},{"teal":1774,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1576,1577]},{"teal":1775,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1578,1579]},{"teal":1776,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1580,1581]},{"teal":1777,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1582]},{"teal":1780,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1583]},{"teal":1783,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1584,1585]},{"teal":1784,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1586,1587]},{"teal":1785,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1588,1589,1590]},{"teal":1786,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1591,1592,1593]},{"teal":1787,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1594]},{"teal":1788,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1595]},{"teal":1791,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1596]},{"teal":1795,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1597]},{"teal":1796,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1598,1599]},{"teal":1797,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1600]},{"teal":1798,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1601]},{"teal":1799,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1602]},{"teal":1800,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1603]},{"teal":1801,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1604]},{"teal":1804,"source":"contracts/validatorRegistry.algo.ts:459","errorMessage":"specified validator id isn't valid","pc":[1605]},{"teal":1808,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1606,1607]},{"teal":1809,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1608,1609]},{"teal":1810,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1610]},{"teal":1811,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1611,1612]},{"teal":1812,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1613]},{"teal":1813,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1614]},{"teal":1814,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1615,1616]},{"teal":1815,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1617]},{"teal":1816,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1618]},{"teal":1817,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1619,1620]},{"teal":1822,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1621,1622]},{"teal":1823,"source":"contracts/constants.algo.ts:30","pc":[1623]},{"teal":1824,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1624]},{"teal":1825,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1625,1626,1627]},{"teal":1829,"source":"contracts/validatorRegistry.algo.ts:463","errorMessage":"already at max pool size","pc":[1628]},{"teal":1834,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1629,1630]},{"teal":1835,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1631]},{"teal":1836,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1632]},{"teal":1837,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1633,1634]},{"teal":1859,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1635]},{"teal":1860,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1636,1637]},{"teal":1861,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1638,1639]},{"teal":1865,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1640]},{"teal":1866,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1641,1642]},{"teal":1873,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1643,1644]},{"teal":1874,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1645]},{"teal":1875,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1646,1647]},{"teal":1876,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1648]},{"teal":1877,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1649,1650]},{"teal":1878,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1651,1652]},{"teal":1879,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1653,1654]},{"teal":1880,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1655,1656]},{"teal":1881,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1657]},{"teal":1884,"source":"contracts/validatorRegistry.algo.ts:472","errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1658]},{"teal":1885,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1659,1660]},{"teal":1886,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1661]},{"teal":1887,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1662]},{"teal":1888,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1663,1664]},{"teal":1892,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1665,1666,1667]},{"teal":1893,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1668,1669]},{"teal":1897,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1670,1671]},{"teal":1898,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1672,1673]},{"teal":1902,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1674,1675]},{"teal":1903,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1676,1677]},{"teal":1907,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1678,1679]},{"teal":1908,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1680,1681]},{"teal":1919,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1682,1683,1684,1685,1686,1687]},{"teal":1920,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1688,1689]},{"teal":1921,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1690,1691,1692]},{"teal":1922,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1693]},{"teal":1923,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1694,1695]},{"teal":1924,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1696,1697]},{"teal":1925,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1698]},{"teal":1926,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1699,1700]},{"teal":1927,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1701,1702]},{"teal":1928,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1703]},{"teal":1929,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1704,1705]},{"teal":1930,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1706,1707]},{"teal":1931,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1708]},{"teal":1932,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1709]},{"teal":1933,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1710,1711]},{"teal":1934,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1712]},{"teal":1935,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1713]},{"teal":1936,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1714,1715]},{"teal":1937,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1716]},{"teal":1938,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1717]},{"teal":1939,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1718]},{"teal":1940,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1719,1720]},{"teal":1943,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1721]},{"teal":1944,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1722,1723]},{"teal":1947,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1724]},{"teal":1951,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1725,1726]},{"teal":1952,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1727,1728]},{"teal":1953,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1729]},{"teal":1954,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1730,1731,1732]},{"teal":1955,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1733]},{"teal":1956,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1734,1735]},{"teal":1957,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1736]},{"teal":1958,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1737]},{"teal":1959,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1738,1739]},{"teal":1960,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1740]},{"teal":1964,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1741,1742]},{"teal":1965,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1743,1744]},{"teal":1969,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1745,1746]},{"teal":1970,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1747,1748]},{"teal":1971,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1749]},{"teal":1972,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1750]},{"teal":1973,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1751,1752]},{"teal":1974,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1753]},{"teal":1975,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1754]},{"teal":1976,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1755]},{"teal":1977,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1756]},{"teal":1978,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1757,1758]},{"teal":1979,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1759]},{"teal":1980,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1760]},{"teal":1981,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1761,1762]},{"teal":1982,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1763]},{"teal":1983,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1764]},{"teal":1984,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1765,1766]},{"teal":1985,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1767]},{"teal":1989,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1768,1769]},{"teal":1990,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1770,1771]},{"teal":1991,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1772,1773]},{"teal":1992,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1774,1775,1776]},{"teal":2000,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1777,1778,1779,1780,1781,1782]},{"teal":2001,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1783,1784]},{"teal":2002,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1785]},{"teal":2003,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1786,1787]},{"teal":2004,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1788]},{"teal":2005,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1789]},{"teal":2006,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1790]},{"teal":2007,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1791,1792]},{"teal":2008,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1793]},{"teal":2011,"source":"contracts/validatorRegistry.algo.ts:497","errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1794]},{"teal":2012,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1795,1796,1797]},{"teal":2013,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1798]},{"teal":2014,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1799,1800]},{"teal":2015,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1801]},{"teal":2016,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1802]},{"teal":2017,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1803]},{"teal":2018,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1804]},{"teal":2022,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1805,1806]},{"teal":2023,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1807]},{"teal":2024,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1808,1809]},{"teal":2025,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1810]},{"teal":2026,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1811]},{"teal":2027,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1812,1813]},{"teal":2028,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1814]},{"teal":2029,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1815]},{"teal":2032,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1816,1817]},{"teal":2035,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1818,1819]},{"teal":2036,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1820]},{"teal":2041,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1821]},{"teal":2044,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1822,1823,1824]},{"teal":2045,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1825]},{"teal":2048,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1826,1827,1828]},{"teal":2049,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1829]},{"teal":2052,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1830,1831]},{"teal":2053,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1832]},{"teal":2054,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1833]},{"teal":2055,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1834]},{"teal":2056,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1835,1836]},{"teal":2057,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1837]},{"teal":2058,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1838]},{"teal":2061,"source":"contracts/validatorRegistry.algo.ts:513","errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[1839]},{"teal":2064,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1840,1841,1842]},{"teal":2065,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1843]},{"teal":2066,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1844]},{"teal":2067,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1845]},{"teal":2068,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1846]},{"teal":2080,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1847,1848,1849]},{"teal":2083,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1850]},{"teal":2084,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1851,1852]},{"teal":2088,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1853]},{"teal":2089,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1854,1855]},{"teal":2090,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1856]},{"teal":2091,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1857]},{"teal":2092,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1858]},{"teal":2093,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1859]},{"teal":2094,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1860]},{"teal":2097,"source":"contracts/validatorRegistry.algo.ts:514","errorMessage":"specified validator id isn't valid","pc":[1861]},{"teal":2102,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1862,1863]},{"teal":2103,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1864]},{"teal":2104,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1865]},{"teal":2105,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1866,1867]},{"teal":2106,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1868]},{"teal":2107,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1869]},{"teal":2108,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1870,1871]},{"teal":2109,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1872]},{"teal":2110,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1873]},{"teal":2111,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1874]},{"teal":2112,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1875]},{"teal":2113,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1876,1877,1878]},{"teal":2121,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1879,1880]},{"teal":2122,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1881]},{"teal":2123,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1882]},{"teal":2124,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1883,1884]},{"teal":2125,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1885]},{"teal":2126,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1886]},{"teal":2127,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1887,1888]},{"teal":2128,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1889]},{"teal":2129,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1890]},{"teal":2130,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1891,1892]},{"teal":2131,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1893]},{"teal":2134,"source":"contracts/validatorRegistry.algo.ts:519","errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[1894]},{"teal":2139,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1895,1896]},{"teal":2140,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1897,1898]},{"teal":2148,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1899,1900]},{"teal":2149,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1901,1902]},{"teal":2150,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1903,1904]},{"teal":2151,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1905]},{"teal":2154,"source":"contracts/validatorRegistry.algo.ts:530","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[1906]},{"teal":2157,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1907,1908]},{"teal":2158,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1909,1910]},{"teal":2159,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1911,1912]},{"teal":2160,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1913]},{"teal":2163,"source":"contracts/validatorRegistry.algo.ts:531","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1914]},{"teal":2167,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1915,1916]},{"teal":2168,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1917,1918]},{"teal":2169,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1919,1920,1921]},{"teal":2173,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1922,1923]},{"teal":2174,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1924,1925]},{"teal":2175,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1926,1927]},{"teal":2179,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1928]},{"teal":2180,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1929,1930]},{"teal":2185,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1931,1932]},{"teal":2186,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1933,1934,1935]},{"teal":2187,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1936,1937,1938]},{"teal":2192,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1939,1940,1941]},{"teal":2193,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1942,1943,1944]},{"teal":2194,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1945]},{"teal":2195,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1946,1947]},{"teal":2199,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1948,1949]},{"teal":2200,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1950,1951]},{"teal":2201,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1952]},{"teal":2202,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1953,1954]},{"teal":2206,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1955]},{"teal":2207,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1956,1957]},{"teal":2208,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1958]},{"teal":2209,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1959,1960,1961]},{"teal":2210,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1962]},{"teal":2211,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1963]},{"teal":2219,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1964,1965]},{"teal":2220,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1966]},{"teal":2221,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1967]},{"teal":2222,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1968,1969]},{"teal":2223,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1970]},{"teal":2224,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1971]},{"teal":2225,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1972,1973]},{"teal":2226,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1974]},{"teal":2227,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1975]},{"teal":2228,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1976,1977]},{"teal":2229,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1978]},{"teal":2230,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1979,1980,1981]},{"teal":2231,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1982]},{"teal":2234,"source":"contracts/validatorRegistry.algo.ts:551","errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[1983]},{"teal":2238,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1984,1985]},{"teal":2239,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1986,1987]},{"teal":2240,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1988,1989]},{"teal":2241,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1990,1991,1992]},{"teal":2242,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1993,1994]},{"teal":2248,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1995,1996]},{"teal":2249,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1997,1998]},{"teal":2250,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1999,2000]},{"teal":2251,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2001,2002]},{"teal":2252,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2003]},{"teal":2253,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2004,2005]},{"teal":2257,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2006,2007]},{"teal":2258,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2008,2009]},{"teal":2259,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2010,2011]},{"teal":2260,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2012,2013,2014]},{"teal":2261,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2015]},{"teal":2262,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2016,2017]},{"teal":2267,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2018,2019]},{"teal":2268,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2020,2021]},{"teal":2269,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2022,2023]},{"teal":2270,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2024,2025,2026]},{"teal":2271,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2027]},{"teal":2272,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2028]},{"teal":2273,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2029]},{"teal":2274,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2030,2031,2032]},{"teal":2278,"source":"contracts/validatorRegistry.algo.ts:563","errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2033]},{"teal":2283,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2034,2035]},{"teal":2284,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2036,2037]},{"teal":2285,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2038,2039]},{"teal":2286,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2040,2041,2042]},{"teal":2287,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2043,2044]},{"teal":2288,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2045,2046,2047]},{"teal":2298,"source":"contracts/validatorRegistry.algo.ts:575","pc":[2048,2049]},{"teal":2299,"source":"contracts/validatorRegistry.algo.ts:574","pc":[2050,2051]},{"teal":2300,"source":"contracts/validatorRegistry.algo.ts:573","pc":[2052,2053]},{"teal":2301,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2054,2055]},{"teal":2302,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2056,2057]},{"teal":2303,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2058,2059]},{"teal":2304,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2060,2061,2062]},{"teal":2305,"source":"contracts/validatorRegistry.algo.ts:571","pc":[2063,2064]},{"teal":2306,"source":"contracts/validatorRegistry.algo.ts:570","pc":[2065,2066,2067]},{"teal":2316,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2068,2069,2070,2071,2072,2073]},{"teal":2317,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2074,2075]},{"teal":2318,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2076]},{"teal":2319,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2077,2078]},{"teal":2320,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2079,2080]},{"teal":2321,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2081,2082]},{"teal":2322,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2083,2084,2085]},{"teal":2323,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2086]},{"teal":2324,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2087]},{"teal":2325,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2088]},{"teal":2326,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2089]},{"teal":2327,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2090,2091]},{"teal":2328,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2092]},{"teal":2331,"source":"contracts/validatorRegistry.algo.ts:579","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2093]},{"teal":2332,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2094,2095,2096]},{"teal":2333,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2097]},{"teal":2334,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2098,2099]},{"teal":2335,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2100,2101]},{"teal":2336,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2102,2103]},{"teal":2337,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2104,2105,2106]},{"teal":2338,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2107]},{"teal":2339,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2108]},{"teal":2340,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2109]},{"teal":2341,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2110,2111]},{"teal":2342,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2112]},{"teal":2343,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2113,2114]},{"teal":2344,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2115]},{"teal":2345,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2116]},{"teal":2346,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2117]},{"teal":2347,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2118]},{"teal":2351,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2119,2120]},{"teal":2352,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2121,2122]},{"teal":2353,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2123,2124]},{"teal":2354,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2125,2126,2127]},{"teal":2357,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2128,2129]},{"teal":2360,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2130,2131]},{"teal":2361,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2132]},{"teal":2366,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2133]},{"teal":2369,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2134,2135,2136]},{"teal":2370,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2137]},{"teal":2373,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2138,2139,2140]},{"teal":2374,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2141]},{"teal":2375,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2142]},{"teal":2376,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2143]},{"teal":2377,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2144]},{"teal":2395,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2145,2146,2147]},{"teal":2398,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2148]},{"teal":2399,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2149,2150]},{"teal":2403,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2151,2152]},{"teal":2404,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2153]},{"teal":2405,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2154]},{"teal":2406,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2155,2156]},{"teal":2407,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2157]},{"teal":2408,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2158]},{"teal":2409,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2159,2160]},{"teal":2410,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2161]},{"teal":2411,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2162]},{"teal":2412,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2163,2164]},{"teal":2416,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2165,2166]},{"teal":2417,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2167]},{"teal":2418,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2168]},{"teal":2419,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2169]},{"teal":2424,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2170,2171]},{"teal":2425,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2172,2173]},{"teal":2426,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2174,2175]},{"teal":2427,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2176]},{"teal":2428,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2177]},{"teal":2429,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2178,2179,2180]},{"teal":2434,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2181,2182]},{"teal":2435,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2183,2184]},{"teal":2436,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2185]},{"teal":2437,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2186,2187]},{"teal":2438,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2188]},{"teal":2439,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2189]},{"teal":2440,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2190,2191]},{"teal":2441,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2192]},{"teal":2442,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2193,2194,2195]},{"teal":2447,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2196,2197]},{"teal":2448,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2198,2199]},{"teal":2452,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2200,2201]},{"teal":2453,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2202]},{"teal":2454,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2203]},{"teal":2455,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2204,2205]},{"teal":2456,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2206]},{"teal":2457,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2207]},{"teal":2458,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2208,2209]},{"teal":2459,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2210]},{"teal":2460,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2211]},{"teal":2461,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2212,2213]},{"teal":2466,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2214,2215]},{"teal":2467,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2216]},{"teal":2468,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2217]},{"teal":2469,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2218,2219,2220]},{"teal":2475,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2221,2222]},{"teal":2476,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234]},{"teal":2477,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2235]},{"teal":2480,"source":"contracts/validatorRegistry.algo.ts:619","errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2236]},{"teal":2481,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2237,2238]},{"teal":2482,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2239]},{"teal":2483,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2240,2241,2242]},{"teal":2488,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2243,2244]},{"teal":2489,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2245,2246]},{"teal":2490,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2247]},{"teal":2491,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2248,2249]},{"teal":2492,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2250]},{"teal":2493,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2251]},{"teal":2494,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2252,2253]},{"teal":2495,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2254]},{"teal":2496,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2255,2256,2257]},{"teal":2501,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2258,2259,2260]},{"teal":2502,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2261,2262]},{"teal":2503,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2263]},{"teal":2504,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2264,2265]},{"teal":2505,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2266]},{"teal":2506,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2267]},{"teal":2507,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2268,2269]},{"teal":2508,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2270]},{"teal":2509,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2271]},{"teal":2510,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2272,2273]},{"teal":2514,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2274,2275]},{"teal":2515,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2276,2277]},{"teal":2516,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2278,2279]},{"teal":2517,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2280]},{"teal":2518,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2281]},{"teal":2519,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2282,2283]},{"teal":2524,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2284,2285]},{"teal":2525,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2286,2287]},{"teal":2526,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2288,2289]},{"teal":2527,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2290]},{"teal":2528,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2291]},{"teal":2529,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2292,2293]},{"teal":2530,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2294]},{"teal":2531,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2295,2296,2297]},{"teal":2536,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2298,2299]},{"teal":2537,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2300,2301]},{"teal":2538,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2302]},{"teal":2539,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2303,2304]},{"teal":2540,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2305]},{"teal":2541,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2306]},{"teal":2542,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2307,2308]},{"teal":2543,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2309]},{"teal":2544,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2310,2311,2312]},{"teal":2551,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2313,2314]},{"teal":2552,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2315,2316]},{"teal":2553,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2317]},{"teal":2554,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2318]},{"teal":2555,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2319,2320]},{"teal":2556,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2321]},{"teal":2557,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2322]},{"teal":2558,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2323,2324]},{"teal":2559,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2325]},{"teal":2563,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2326,2327]},{"teal":2564,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2328,2329]},{"teal":2565,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2330]},{"teal":2566,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2331,2332]},{"teal":2567,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2333]},{"teal":2568,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2334]},{"teal":2569,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2335,2336]},{"teal":2570,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2337]},{"teal":2571,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2338]},{"teal":2572,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2339,2340]},{"teal":2576,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2341,2342]},{"teal":2577,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2343]},{"teal":2578,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2344]},{"teal":2579,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2345,2346]},{"teal":2580,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2347]},{"teal":2581,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2348]},{"teal":2582,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2349,2350]},{"teal":2583,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2351]},{"teal":2584,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2352]},{"teal":2585,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2353,2354]},{"teal":2589,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2355]},{"teal":2590,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2356,2357]},{"teal":2595,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2358,2359]},{"teal":2596,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2360,2361]},{"teal":2597,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2362]},{"teal":2598,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2363,2364,2365]},{"teal":2605,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2366,2367]},{"teal":2606,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2368,2369]},{"teal":2607,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2370,2371]},{"teal":2608,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2372]},{"teal":2609,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2373]},{"teal":2610,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2374,2375]},{"teal":2611,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2376]},{"teal":2612,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2377]},{"teal":2613,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2378]},{"teal":2614,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2379,2380]},{"teal":2615,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2381]},{"teal":2616,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2382]},{"teal":2617,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2383,2384]},{"teal":2618,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2385]},{"teal":2619,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2386]},{"teal":2620,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2387,2388,2389,2390]},{"teal":2621,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2391]},{"teal":2622,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2392]},{"teal":2623,"source":"contracts/validatorRegistry.algo.ts:640","pc":[2393,2394]},{"teal":2624,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2395]},{"teal":2625,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2396]},{"teal":2626,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2397]},{"teal":2627,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2398]},{"teal":2628,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2399]},{"teal":2631,"source":"contracts/validatorRegistry.algo.ts:638","errorMessage":"wideRatio failed","pc":[2400]},{"teal":2632,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2401,2402]},{"teal":2636,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2403,2404]},{"teal":2637,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2405,2406]},{"teal":2638,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2407]},{"teal":2639,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2408]},{"teal":2640,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2409]},{"teal":2641,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2410,2411]},{"teal":2642,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2412]},{"teal":2643,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2413]},{"teal":2644,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2414,2415]},{"teal":2645,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2416]},{"teal":2646,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2417]},{"teal":2647,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2418,2419]},{"teal":2648,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2420]},{"teal":2653,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2421,2422]},{"teal":2654,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2423]},{"teal":2655,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2424]},{"teal":2656,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2425,2426]},{"teal":2657,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2427,2428,2429]},{"teal":2662,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2430,2431]},{"teal":2663,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2432,2433]},{"teal":2664,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2434]},{"teal":2665,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2435,2436]},{"teal":2666,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2437]},{"teal":2667,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2438]},{"teal":2668,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2439,2440]},{"teal":2669,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2441]},{"teal":2673,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2442,2443]},{"teal":2676,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2444,2445]},{"teal":2677,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2446]},{"teal":2682,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2447,2448,2449]},{"teal":2683,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2450]},{"teal":2686,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2451,2452,2453]},{"teal":2687,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2454]},{"teal":2690,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2455,2456,2457]},{"teal":2691,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2458]},{"teal":2694,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2459,2460,2461]},{"teal":2695,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2462]},{"teal":2698,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2463,2464,2465]},{"teal":2699,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2466]},{"teal":2700,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2467]},{"teal":2701,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2468]},{"teal":2702,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2469]},{"teal":2705,"source":"contracts/validatorRegistry.algo.ts:659","errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2470]},{"teal":2708,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2471,2472,2473]},{"teal":2709,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2474]},{"teal":2710,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2475]},{"teal":2724,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2476,2477,2478]},{"teal":2728,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2479,2480]},{"teal":2729,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2481,2482,2483]},{"teal":2733,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2484,2485]},{"teal":2734,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2486,2487]},{"teal":2735,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2488,2489,2490]},{"teal":2736,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2491]},{"teal":2737,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2492]},{"teal":2738,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2493]},{"teal":2739,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2494,2495]},{"teal":2740,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2496]},{"teal":2741,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2497]},{"teal":2742,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2498,2499]},{"teal":2743,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2500]},{"teal":2744,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2501,2502]},{"teal":2745,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2503,2504]},{"teal":2746,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2505,2506,2507]},{"teal":2747,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2508]},{"teal":2748,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2509]},{"teal":2749,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2510]},{"teal":2750,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2511,2512]},{"teal":2751,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2513]},{"teal":2752,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2514]},{"teal":2753,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2515,2516]},{"teal":2754,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2517]},{"teal":2755,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2518]},{"teal":2756,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2519]},{"teal":2757,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2520,2521]},{"teal":2758,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2522,2523,2524]},{"teal":2759,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2525]},{"teal":2760,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2526]},{"teal":2761,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2527]},{"teal":2762,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2528,2529]},{"teal":2763,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2530]},{"teal":2764,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2531]},{"teal":2765,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2532,2533]},{"teal":2766,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2534]},{"teal":2767,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2535]},{"teal":2768,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2536]},{"teal":2769,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2537,2538]},{"teal":2770,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2539,2540,2541]},{"teal":2771,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2542]},{"teal":2772,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2543]},{"teal":2773,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2544]},{"teal":2774,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2545,2546]},{"teal":2775,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2547]},{"teal":2779,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2548,2549]},{"teal":2780,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2550]},{"teal":2781,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2551]},{"teal":2782,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2552]},{"teal":2783,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2553,2554]},{"teal":2784,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2555,2556,2557]},{"teal":2785,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2558]},{"teal":2786,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2559]},{"teal":2787,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2560]},{"teal":2788,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2561,2562]},{"teal":2789,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2563]},{"teal":2790,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2564]},{"teal":2791,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2565,2566]},{"teal":2792,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2567]},{"teal":2793,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2568]},{"teal":2794,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2569]},{"teal":2795,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2570,2571]},{"teal":2796,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2572,2573,2574]},{"teal":2797,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2575]},{"teal":2798,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2576]},{"teal":2799,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2577]},{"teal":2800,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2578,2579]},{"teal":2801,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2580]},{"teal":2805,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2581,2582]},{"teal":2806,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2583]},{"teal":2807,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2584]},{"teal":2808,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2585]},{"teal":2809,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2586,2587]},{"teal":2810,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2588,2589,2590]},{"teal":2811,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2591]},{"teal":2812,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2592]},{"teal":2813,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2593]},{"teal":2814,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2594,2595]},{"teal":2815,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2596]},{"teal":2816,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2597]},{"teal":2817,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2598,2599]},{"teal":2818,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2600]},{"teal":2819,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2601]},{"teal":2820,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2602]},{"teal":2821,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2603,2604]},{"teal":2822,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2605,2606,2607]},{"teal":2823,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2608]},{"teal":2824,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2609]},{"teal":2825,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2610]},{"teal":2826,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2611,2612]},{"teal":2827,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2613]},{"teal":2831,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2614,2615]},{"teal":2832,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2616]},{"teal":2833,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2617,2618]},{"teal":2834,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2619]},{"teal":2835,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2620,2621]},{"teal":2836,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2622]},{"teal":2837,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2623]},{"teal":2841,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2624,2625]},{"teal":2842,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2626,2627,2628]},{"teal":2843,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2629]},{"teal":2844,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2630,2631,2632]},{"teal":2856,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2633,2634,2635,2636,2637,2638]},{"teal":2857,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2639,2640]},{"teal":2858,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2641,2642,2643]},{"teal":2859,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2644]},{"teal":2860,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2645]},{"teal":2861,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2646,2647]},{"teal":2862,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2648,2649,2650]},{"teal":2863,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2651]},{"teal":2864,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2652]},{"teal":2865,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2653]},{"teal":2866,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2654]},{"teal":2867,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2655,2656]},{"teal":2868,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2657]},{"teal":2871,"source":"contracts/validatorRegistry.algo.ts:679","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2658]},{"teal":2872,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2659,2660,2661]},{"teal":2873,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2662]},{"teal":2874,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2663,2664]},{"teal":2875,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2665,2666,2667]},{"teal":2876,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2668]},{"teal":2877,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2669]},{"teal":2878,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2670]},{"teal":2879,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2671,2672]},{"teal":2880,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2673]},{"teal":2881,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2674]},{"teal":2882,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2675,2676]},{"teal":2883,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2677]},{"teal":2884,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2678]},{"teal":2885,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2679,2680]},{"teal":2886,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2681]},{"teal":2887,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2682]},{"teal":2888,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2683,2684]},{"teal":2889,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2685]},{"teal":2890,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2686]},{"teal":2891,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2687]},{"teal":2892,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2688]},{"teal":2893,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2689]},{"teal":2898,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2690,2691,2692]},{"teal":2899,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2693]},{"teal":2900,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2694]},{"teal":2901,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2695]},{"teal":2902,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2696]},{"teal":2905,"source":"contracts/validatorRegistry.algo.ts:705","errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2697]},{"teal":2906,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2698]},{"teal":2907,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2699]},{"teal":2910,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2700,2701,2702]},{"teal":2911,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2703]},{"teal":2914,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2704,2705,2706]},{"teal":2915,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2707]},{"teal":2918,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2708,2709,2710]},{"teal":2919,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2711]},{"teal":2920,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2712]},{"teal":2921,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2713,2714]},{"teal":2922,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2715]},{"teal":2925,"source":"contracts/validatorRegistry.algo.ts:702","errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2716]},{"teal":2928,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2717,2718,2719]},{"teal":2929,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2720]},{"teal":2930,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2721]},{"teal":2931,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2722]},{"teal":2932,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2723]},{"teal":2935,"source":"contracts/validatorRegistry.algo.ts:701","errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2724]},{"teal":2938,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2725,2726,2727]},{"teal":2939,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2728]},{"teal":2940,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2729]},{"teal":2955,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2730,2731,2732]},{"teal":2958,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2733]},{"teal":2959,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2734,2735]},{"teal":2964,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2736,2737]},{"teal":2965,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2738,2739]},{"teal":2966,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2740]},{"teal":2967,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2741,2742,2743]},{"teal":2972,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2744]},{"teal":2973,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2745,2746]},{"teal":2974,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2747,2748]},{"teal":2975,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2749]},{"teal":2976,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2750,2751]},{"teal":2977,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2752,2753]},{"teal":2978,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2754]},{"teal":2979,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2755,2756]},{"teal":2980,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2757,2758]},{"teal":2981,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2759,2760]},{"teal":2982,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2761,2762]},{"teal":2983,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2763]},{"teal":2988,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2764,2765]},{"teal":2989,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2766,2767,2768]},{"teal":2993,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2769,2770]},{"teal":2994,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2771]},{"teal":2995,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2772]},{"teal":2996,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2773]},{"teal":2997,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2774,2775,2776]},{"teal":2998,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2777,2778]},{"teal":2999,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2779]},{"teal":3000,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2780]},{"teal":3001,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2781]},{"teal":3005,"source":"contracts/validatorRegistry.algo.ts:714","errorMessage":"should only be called if algo or reward was removed","pc":[2782]},{"teal":3009,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2783,2784]},{"teal":3010,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2785,2786]},{"teal":3011,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2787,2788,2789]},{"teal":3012,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2790]},{"teal":3013,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2791]},{"teal":3014,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2792]},{"teal":3015,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2793,2794]},{"teal":3016,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2795]},{"teal":3017,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2796]},{"teal":3018,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2797,2798]},{"teal":3019,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2799]},{"teal":3020,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2800,2801]},{"teal":3021,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2802,2803]},{"teal":3022,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2804,2805,2806]},{"teal":3023,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2807]},{"teal":3024,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2808]},{"teal":3025,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2809]},{"teal":3026,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2810,2811]},{"teal":3027,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2812]},{"teal":3028,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2813]},{"teal":3029,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2814,2815]},{"teal":3030,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2816]},{"teal":3031,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2817]},{"teal":3032,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2818]},{"teal":3033,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2819,2820]},{"teal":3034,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2821,2822,2823]},{"teal":3035,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2824]},{"teal":3036,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2825]},{"teal":3037,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2826]},{"teal":3038,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2827,2828]},{"teal":3039,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2829]},{"teal":3040,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2830]},{"teal":3041,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2831,2832]},{"teal":3042,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2833]},{"teal":3043,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2834]},{"teal":3044,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2835]},{"teal":3045,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2836,2837]},{"teal":3046,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2838,2839,2840]},{"teal":3047,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2841]},{"teal":3048,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2842]},{"teal":3049,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2843]},{"teal":3050,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2844,2845]},{"teal":3051,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2846]},{"teal":3055,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2847,2848]},{"teal":3056,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2849]},{"teal":3057,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2850]},{"teal":3058,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2851]},{"teal":3059,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2852,2853]},{"teal":3060,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2854,2855,2856]},{"teal":3061,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2857]},{"teal":3062,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2858]},{"teal":3063,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2859]},{"teal":3064,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2860,2861]},{"teal":3065,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2862]},{"teal":3066,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2863]},{"teal":3067,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2864,2865]},{"teal":3068,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2866]},{"teal":3069,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2867]},{"teal":3070,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2868]},{"teal":3071,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2869,2870]},{"teal":3072,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2871,2872,2873]},{"teal":3073,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2874]},{"teal":3074,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2875]},{"teal":3075,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2876]},{"teal":3076,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2877,2878]},{"teal":3077,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2879]},{"teal":3081,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2880,2881]},{"teal":3082,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2882]},{"teal":3083,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2883,2884]},{"teal":3084,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2885]},{"teal":3085,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2886,2887]},{"teal":3086,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2888]},{"teal":3087,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2889]},{"teal":3092,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2890,2891]},{"teal":3093,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2892]},{"teal":3094,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2893]},{"teal":3095,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2894,2895,2896]},{"teal":3100,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2897,2898]},{"teal":3101,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2899]},{"teal":3102,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2900]},{"teal":3103,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2901,2902]},{"teal":3104,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2903,2904,2905]},{"teal":3105,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2906]},{"teal":3106,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2907]},{"teal":3107,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2908]},{"teal":3108,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2909,2910]},{"teal":3109,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2911]},{"teal":3110,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2912]},{"teal":3111,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2913,2914]},{"teal":3115,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2915,2916]},{"teal":3116,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2917]},{"teal":3117,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2918]},{"teal":3120,"source":"contracts/validatorRegistry.algo.ts:723","errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[2919]},{"teal":3127,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2920,2921]},{"teal":3128,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2922]},{"teal":3129,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2923]},{"teal":3130,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2924,2925]},{"teal":3131,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2926,2927,2928]},{"teal":3132,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2929]},{"teal":3133,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2930]},{"teal":3134,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2931]},{"teal":3135,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2932,2933]},{"teal":3136,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2934]},{"teal":3137,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2935]},{"teal":3138,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2936,2937]},{"teal":3139,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2938]},{"teal":3142,"source":"contracts/validatorRegistry.algo.ts:724","errorMessage":"reward being removed must be covered by hold back amount","pc":[2939]},{"teal":3146,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2940,2941]},{"teal":3147,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2942]},{"teal":3148,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2943]},{"teal":3149,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2944]},{"teal":3150,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2945,2946]},{"teal":3151,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2947,2948,2949]},{"teal":3152,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2950]},{"teal":3153,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2951]},{"teal":3154,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2952]},{"teal":3155,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2953,2954]},{"teal":3156,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2955]},{"teal":3157,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2956]},{"teal":3158,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2957,2958]},{"teal":3159,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2959]},{"teal":3160,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2960]},{"teal":3161,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2961]},{"teal":3162,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2962,2963]},{"teal":3163,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2964,2965,2966]},{"teal":3164,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2967]},{"teal":3165,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2968]},{"teal":3166,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2969]},{"teal":3167,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2970,2971]},{"teal":3168,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2972]},{"teal":3173,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2973,2974]},{"teal":3174,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2975,2976,2977]},{"teal":3175,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2978]},{"teal":3176,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2979]},{"teal":3177,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2980]},{"teal":3178,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2981,2982,2983]},{"teal":3186,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2984]},{"teal":3187,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2985,2986]},{"teal":3188,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2987,2988]},{"teal":3189,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2989,2990]},{"teal":3190,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2991,2992]},{"teal":3194,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2993,2994]},{"teal":3195,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2995]},{"teal":3196,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2996]},{"teal":3197,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2997,2998]},{"teal":3198,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2999,3000,3001]},{"teal":3199,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3002]},{"teal":3200,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3003]},{"teal":3201,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3004]},{"teal":3202,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3005,3006]},{"teal":3203,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3007]},{"teal":3204,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3008]},{"teal":3205,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3009,3010]},{"teal":3209,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3011,3012]},{"teal":3210,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3013,3014]},{"teal":3211,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3015,3016]},{"teal":3212,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3017]},{"teal":3213,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3018,3019]},{"teal":3214,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3020,3021]},{"teal":3215,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3022]},{"teal":3216,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3023,3024]},{"teal":3219,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3025]},{"teal":3220,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3026,3027]},{"teal":3223,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3028]},{"teal":3236,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3029,3030]},{"teal":3237,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3031,3032]},{"teal":3238,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3033,3034,3035]},{"teal":3239,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3036]},{"teal":3240,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3037]},{"teal":3241,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3038,3039]},{"teal":3242,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3040,3041,3042]},{"teal":3243,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3043]},{"teal":3244,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3044]},{"teal":3245,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3045]},{"teal":3246,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3046]},{"teal":3247,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3047,3048]},{"teal":3248,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3049]},{"teal":3251,"source":"contracts/validatorRegistry.algo.ts:743","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3050]},{"teal":3252,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3051,3052,3053]},{"teal":3253,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3054]},{"teal":3254,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3055,3056]},{"teal":3255,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3057,3058,3059]},{"teal":3256,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3060]},{"teal":3257,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3061]},{"teal":3258,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3062]},{"teal":3259,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3063,3064]},{"teal":3260,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3065]},{"teal":3261,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3066,3067]},{"teal":3262,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3068]},{"teal":3263,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3069]},{"teal":3264,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3070,3071]},{"teal":3265,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3072]},{"teal":3266,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3073]},{"teal":3267,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3074,3075]},{"teal":3268,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3076]},{"teal":3269,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3077]},{"teal":3270,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3078]},{"teal":3271,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3079]},{"teal":3272,"source":"contracts/validatorRegistry.algo.ts:721","pc":[3080,3081,3082]},{"teal":3286,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3083,3084]},{"teal":3287,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3085,3086]},{"teal":3288,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3087,3088,3089]},{"teal":3289,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3090]},{"teal":3290,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3091]},{"teal":3291,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3092,3093]},{"teal":3292,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3094,3095,3096]},{"teal":3293,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3097]},{"teal":3294,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3098]},{"teal":3295,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3099]},{"teal":3296,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3100]},{"teal":3297,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3101,3102]},{"teal":3298,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3103]},{"teal":3301,"source":"contracts/validatorRegistry.algo.ts:753","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3104]},{"teal":3302,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3105,3106,3107]},{"teal":3303,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3108]},{"teal":3304,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3109,3110]},{"teal":3305,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3111,3112,3113]},{"teal":3306,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3114]},{"teal":3307,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3115]},{"teal":3308,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3116]},{"teal":3309,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3117,3118]},{"teal":3310,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3119]},{"teal":3311,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3120,3121]},{"teal":3312,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3122]},{"teal":3313,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3123]},{"teal":3314,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3124,3125]},{"teal":3315,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3126]},{"teal":3316,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3127,3128]},{"teal":3317,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3129]},{"teal":3318,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3130]},{"teal":3319,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3131]},{"teal":3325,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3132,3133]},{"teal":3326,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3134,3135,3136]},{"teal":3331,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3137,3138]},{"teal":3332,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3139,3140]},{"teal":3333,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3141,3142,3143]},{"teal":3334,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3144]},{"teal":3335,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3145]},{"teal":3336,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3146]},{"teal":3337,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3147,3148]},{"teal":3338,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3149]},{"teal":3339,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3150]},{"teal":3340,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3151]},{"teal":3341,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3152]},{"teal":3342,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3153,3154]},{"teal":3343,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3155,3156]},{"teal":3344,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3157,3158,3159]},{"teal":3345,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3160]},{"teal":3346,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3161]},{"teal":3347,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3162]},{"teal":3348,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3163,3164]},{"teal":3349,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3165]},{"teal":3350,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3166]},{"teal":3351,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3167]},{"teal":3352,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3168]},{"teal":3353,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3169,3170]},{"teal":3354,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3171]},{"teal":3355,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3172,3173]},{"teal":3356,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3174,3175,3176]},{"teal":3357,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3177]},{"teal":3358,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3178]},{"teal":3359,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3179]},{"teal":3360,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3180,3181]},{"teal":3361,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3182]},{"teal":3362,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3183]},{"teal":3363,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3184]},{"teal":3364,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3185]},{"teal":3365,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3186]},{"teal":3366,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3187,3188,3189]},{"teal":3367,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3190]},{"teal":3368,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3191,3192]},{"teal":3369,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3193,3194,3195]},{"teal":3370,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3196]},{"teal":3371,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3197]},{"teal":3372,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3198]},{"teal":3373,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3199,3200]},{"teal":3374,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3201]},{"teal":3382,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3202,3203]},{"teal":3383,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3204,3205,3206]},{"teal":3384,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3207]},{"teal":3385,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3208]},{"teal":3386,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3209,3210]},{"teal":3387,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3211,3212,3213]},{"teal":3388,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3214]},{"teal":3389,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3215]},{"teal":3390,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3216]},{"teal":3391,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3217,3218]},{"teal":3392,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3219,3220,3221]},{"teal":3393,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3222]},{"teal":3394,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3223]},{"teal":3395,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3224]},{"teal":3396,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3225,3226]},{"teal":3397,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3227,3228,3229]},{"teal":3398,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3230,3231]},{"teal":3402,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3232,3233]},{"teal":3403,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3234,3235]},{"teal":3404,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3236,3237]},{"teal":3405,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3238]},{"teal":3406,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3239]},{"teal":3407,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3240,3241]},{"teal":3411,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3242,3243]},{"teal":3412,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3244,3245]},{"teal":3413,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3246,3247]},{"teal":3414,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3248]},{"teal":3415,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3249]},{"teal":3416,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3250,3251]},{"teal":3421,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3252,3253]},{"teal":3422,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3254,3255,3256]},{"teal":3427,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3257,3258]},{"teal":3428,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3259]},{"teal":3429,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3260]},{"teal":3430,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3261]},{"teal":3431,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3262,3263]},{"teal":3432,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3264,3265,3266]},{"teal":3433,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3267]},{"teal":3434,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3268]},{"teal":3435,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3269]},{"teal":3436,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3270,3271]},{"teal":3437,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3272]},{"teal":3438,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3273]},{"teal":3439,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3274]},{"teal":3440,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3275]},{"teal":3441,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3276]},{"teal":3442,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3277]},{"teal":3443,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3278,3279]},{"teal":3444,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3280,3281,3282]},{"teal":3445,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3283]},{"teal":3446,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3284]},{"teal":3447,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3285]},{"teal":3448,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3286,3287]},{"teal":3449,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3288]},{"teal":3455,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3289,3290]},{"teal":3456,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3291,3292,3293]},{"teal":3461,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3294,3295]},{"teal":3462,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3296]},{"teal":3463,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3297]},{"teal":3464,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3298]},{"teal":3465,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3299,3300]},{"teal":3466,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3301]},{"teal":3467,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3302]},{"teal":3472,"source":"contracts/validatorRegistry.algo.ts:700","pc":[3303]},{"teal":3477,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3304]},{"teal":3480,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3305,3306,3307]},{"teal":3481,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3308]},{"teal":3484,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3309,3310,3311]},{"teal":3485,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3312]},{"teal":3486,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3313]},{"teal":3487,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3314,3315]},{"teal":3488,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3316]},{"teal":3491,"source":"contracts/validatorRegistry.algo.ts:799","errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3317]},{"teal":3494,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3318,3319,3320]},{"teal":3495,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3321]},{"teal":3498,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3322,3323,3324]},{"teal":3499,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3325]},{"teal":3500,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3326]},{"teal":3501,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3327]},{"teal":3502,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3328]},{"teal":3516,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3329,3330,3331]},{"teal":3519,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3332]},{"teal":3520,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3333,3334]},{"teal":3524,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3335]},{"teal":3525,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3336,3337]},{"teal":3529,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3338]},{"teal":3530,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3339,3340]},{"teal":3534,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3341,3342]},{"teal":3535,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3343,3344,3345]},{"teal":3536,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3346,3347]},{"teal":3541,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3348]},{"teal":3542,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3349,3350]},{"teal":3543,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3351]},{"teal":3544,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3352]},{"teal":3545,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3353]},{"teal":3546,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3354]},{"teal":3547,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3355,3356,3357]},{"teal":3552,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3358]},{"teal":3553,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3359,3360]},{"teal":3554,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3361]},{"teal":3555,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3362]},{"teal":3558,"source":"contracts/validatorRegistry.algo.ts:815","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3363]},{"teal":3559,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3364,3365]},{"teal":3563,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3366,3367]},{"teal":3564,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3368]},{"teal":3565,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3369]},{"teal":3566,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3370]},{"teal":3570,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3371]},{"teal":3571,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3372,3373]},{"teal":3576,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3374,3375]},{"teal":3577,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3376,3377]},{"teal":3578,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3378]},{"teal":3579,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3379,3380,3381]},{"teal":3584,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3382,3383]},{"teal":3585,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3384,3385]},{"teal":3586,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3386]},{"teal":3587,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3387,3388,3389]},{"teal":3592,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3390]},{"teal":3593,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3391,3392]},{"teal":3594,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3393,3394]},{"teal":3595,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3395]},{"teal":3596,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3396,3397]},{"teal":3597,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3398,3399]},{"teal":3598,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3400]},{"teal":3599,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3401,3402]},{"teal":3600,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3403,3404]},{"teal":3601,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3405,3406]},{"teal":3602,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3407,3408]},{"teal":3603,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3409]},{"teal":3609,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3410,3411]},{"teal":3610,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3412,3413]},{"teal":3611,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3414]},{"teal":3612,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3415]},{"teal":3613,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3416]},{"teal":3614,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3417]},{"teal":3615,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3418]},{"teal":3616,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3419]},{"teal":3617,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3420]},{"teal":3618,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3421]},{"teal":3619,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3422]},{"teal":3620,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3423,3424,3425]},{"teal":3623,"source":"contracts/validatorRegistry.algo.ts:822","pc":[3426,3427,3428]},{"teal":3628,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3429]},{"teal":3629,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3430,3431]},{"teal":3634,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3432,3433]},{"teal":3635,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3434,3435]},{"teal":3636,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3436]},{"teal":3637,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3437]},{"teal":3638,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3438]},{"teal":3639,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3439]},{"teal":3640,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3440]},{"teal":3641,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3441]},{"teal":3642,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3442]},{"teal":3643,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3443,3444]},{"teal":3644,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3445]},{"teal":3645,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3446,3447,3448]},{"teal":3650,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3449]},{"teal":3651,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3450,3451]},{"teal":3658,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3452,3453]},{"teal":3659,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3454,3455]},{"teal":3660,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3456,3457]},{"teal":3661,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3458]},{"teal":3662,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3459]},{"teal":3663,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3460]},{"teal":3664,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3461]},{"teal":3665,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3462]},{"teal":3666,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3463]},{"teal":3667,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3464]},{"teal":3668,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3465]},{"teal":3669,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3466]},{"teal":3670,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3467,3468]},{"teal":3671,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3469]},{"teal":3672,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3470]},{"teal":3673,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3471,3472]},{"teal":3674,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3473]},{"teal":3675,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3474]},{"teal":3676,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3475]},{"teal":3677,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3476,3477]},{"teal":3678,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3478]},{"teal":3679,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3479]},{"teal":3680,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3480,3481]},{"teal":3681,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3482]},{"teal":3682,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3483]},{"teal":3683,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3484,3485]},{"teal":3684,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3486]},{"teal":3685,"source":"contracts/validatorRegistry.algo.ts:831","pc":[3487,3488]},{"teal":3686,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3489]},{"teal":3687,"source":"contracts/validatorRegistry.algo.ts:828","pc":[3490,3491,3492]},{"teal":3692,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3493,3494]},{"teal":3693,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3495,3496]},{"teal":3694,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3497]},{"teal":3695,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3498]},{"teal":3696,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3499]},{"teal":3697,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3500]},{"teal":3698,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3501,3502]},{"teal":3699,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3503]},{"teal":3700,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3504,3505]},{"teal":3701,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3506]},{"teal":3702,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3507]},{"teal":3703,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3508,3509]},{"teal":3704,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3510]},{"teal":3705,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3511]},{"teal":3706,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3512,3513,3514]},{"teal":3715,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3515,3516]},{"teal":3716,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3517]},{"teal":3717,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3518]},{"teal":3718,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3519,3520]},{"teal":3719,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3521,3522,3523]},{"teal":3729,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3524,3525]},{"teal":3730,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3526,3527]},{"teal":3731,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3528]},{"teal":3732,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3529]},{"teal":3733,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3530,3531]},{"teal":3734,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3532]},{"teal":3735,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3533]},{"teal":3736,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3534,3535]},{"teal":3737,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3536]},{"teal":3738,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3537]},{"teal":3739,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3538]},{"teal":3742,"source":"contracts/validatorRegistry.algo.ts:840","errorMessage":"must stake at least the minimum for this pool","pc":[3539]},{"teal":3746,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3540,3541]},{"teal":3747,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3542,3543]},{"teal":3748,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3544]},{"teal":3749,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3545,3546]},{"teal":3750,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3547]},{"teal":3751,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3548]},{"teal":3752,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3549,3550]},{"teal":3753,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3551]},{"teal":3754,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3552,3553]},{"teal":3758,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3554,3555]},{"teal":3759,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3556,3557]},{"teal":3760,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3558]},{"teal":3761,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3559,3560]},{"teal":3762,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3561]},{"teal":3763,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3562]},{"teal":3764,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3563,3564]},{"teal":3765,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3565]},{"teal":3766,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3566]},{"teal":3767,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3567,3568]},{"teal":3771,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3569]},{"teal":3772,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3570,3571]},{"teal":3777,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3572,3573]},{"teal":3778,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3574,3575]},{"teal":3779,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3576]},{"teal":3780,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3577,3578,3579]},{"teal":3785,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3580,3581]},{"teal":3786,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3582,3583]},{"teal":3787,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3584,3585]},{"teal":3788,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3586]},{"teal":3789,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3587,3588]},{"teal":3790,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3589]},{"teal":3791,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3590]},{"teal":3792,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3591]},{"teal":3793,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3592]},{"teal":3794,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3593,3594]},{"teal":3795,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3595]},{"teal":3796,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3596,3597]},{"teal":3797,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3598]},{"teal":3798,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3599,3600,3601]},{"teal":3807,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3602,3603]},{"teal":3808,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3604]},{"teal":3809,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3605,3606]},{"teal":3810,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3607]},{"teal":3811,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3608]},{"teal":3812,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3609]},{"teal":3813,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3610]},{"teal":3814,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3611,3612]},{"teal":3815,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3613,3614]},{"teal":3816,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3615,3616]},{"teal":3817,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3617]},{"teal":3818,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3618]},{"teal":3819,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3619]},{"teal":3820,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3620]},{"teal":3821,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3621]},{"teal":3822,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3622]},{"teal":3823,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3623]},{"teal":3824,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3624]},{"teal":3825,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3625,3626]},{"teal":3826,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3627]},{"teal":3827,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3628,3629]},{"teal":3828,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3630]},{"teal":3829,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3631]},{"teal":3830,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3632,3633]},{"teal":3831,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3634]},{"teal":3832,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3635]},{"teal":3833,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3636,3637,3638]},{"teal":3840,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3639,3640]},{"teal":3841,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3641]},{"teal":3842,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3642]},{"teal":3843,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3643,3644]},{"teal":3844,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3645,3646,3647]},{"teal":3849,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3648,3649]},{"teal":3850,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3650]},{"teal":3851,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3651,3652]},{"teal":3852,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3653]},{"teal":3853,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3654,3655]},{"teal":3854,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3656]},{"teal":3855,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3657,3658]},{"teal":3856,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3659]},{"teal":3857,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3660,3661]},{"teal":3858,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3662]},{"teal":3859,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3663]},{"teal":3860,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3664,3665]},{"teal":3861,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3666]},{"teal":3862,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3667]},{"teal":3866,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3668,3669]},{"teal":3869,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3670,3671]},{"teal":3870,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3672]},{"teal":3875,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3673,3674,3675]},{"teal":3876,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3676]},{"teal":3879,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3677,3678,3679]},{"teal":3880,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3680]},{"teal":3883,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3681,3682,3683]},{"teal":3884,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3684]},{"teal":3887,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3685,3686,3687]},{"teal":3888,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3688]},{"teal":3889,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3689]},{"teal":3903,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3690,3691,3692]},{"teal":3906,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3693]},{"teal":3907,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3694,3695]},{"teal":3911,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3696,3697]},{"teal":3912,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3698,3699,3700]},{"teal":3916,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3701,3702]},{"teal":3917,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3703,3704]},{"teal":3918,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3705]},{"teal":3919,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3706,3707]},{"teal":3920,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3708]},{"teal":3921,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3709]},{"teal":3922,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3710,3711]},{"teal":3923,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3712]},{"teal":3924,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3713,3714]},{"teal":3928,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3715,3716]},{"teal":3929,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3717]},{"teal":3930,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3718]},{"teal":3931,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3719]},{"teal":3932,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3720,3721,3722]},{"teal":3933,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3723,3724]},{"teal":3934,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3725]},{"teal":3935,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3726]},{"teal":3936,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3727]},{"teal":3940,"source":"contracts/validatorRegistry.algo.ts:876","errorMessage":"node number out of allowable range","pc":[3728]},{"teal":3944,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3729]},{"teal":3945,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3730,3731]},{"teal":3950,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3732,3733]},{"teal":3951,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3734]},{"teal":3952,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3735]},{"teal":3953,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3736,3737,3738]},{"teal":3957,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3739]},{"teal":3958,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3740,3741]},{"teal":3963,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3742,3743]},{"teal":3964,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3744,3745]},{"teal":3965,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3746]},{"teal":3966,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3747,3748,3749]},{"teal":3971,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3750,3751]},{"teal":3972,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3752]},{"teal":3973,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3753,3754]},{"teal":3974,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3755]},{"teal":3975,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3756]},{"teal":3976,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3757]},{"teal":3977,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3758]},{"teal":3978,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3759]},{"teal":3979,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3760,3761]},{"teal":3980,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3762]},{"teal":3981,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3763]},{"teal":3982,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3764]},{"teal":3983,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3765]},{"teal":3984,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3766]},{"teal":3985,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3767]},{"teal":3986,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3768,3769]},{"teal":3987,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3770]},{"teal":3988,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3771,3772,3773]},{"teal":3993,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3774,3775]},{"teal":3994,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3776]},{"teal":3995,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3777]},{"teal":3996,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3778,3779]},{"teal":3997,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3780]},{"teal":4000,"source":"contracts/validatorRegistry.algo.ts:881","errorMessage":"can't move to same node","pc":[3781]},{"teal":4004,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3782,3783]},{"teal":4005,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3784,3785]},{"teal":4006,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3786]},{"teal":4007,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3787]},{"teal":4008,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3788]},{"teal":4009,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3789]},{"teal":4010,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3790]},{"teal":4011,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3791,3792]},{"teal":4012,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3793]},{"teal":4013,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3794]},{"teal":4014,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3795]},{"teal":4015,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3796,3797]},{"teal":4016,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3798]},{"teal":4017,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3799,3800]},{"teal":4018,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3801]},{"teal":4019,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3802]},{"teal":4020,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3803,3804]},{"teal":4021,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3805]},{"teal":4027,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3806]},{"teal":4028,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3807,3808]},{"teal":4029,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3809,3810]},{"teal":4030,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3811,3812,3813,3814,3815,3816]},{"teal":4031,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3817,3818]},{"teal":4035,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3819,3820]},{"teal":4036,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3821,3822]},{"teal":4039,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3823]},{"teal":4040,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3824,3825]},{"teal":4043,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3826]},{"teal":4047,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3827,3828]},{"teal":4048,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3829,3830]},{"teal":4049,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3831,3832]},{"teal":4050,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3833,3834,3835]},{"teal":4054,"source":"contracts/validatorRegistry.algo.ts:892","pc":[3836]},{"teal":4061,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3837,3838]},{"teal":4062,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3839]},{"teal":4063,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3840]},{"teal":4064,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3841,3842]},{"teal":4065,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3843,3844,3845]},{"teal":4072,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3846,3847]},{"teal":4073,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3848]},{"teal":4074,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3849]},{"teal":4075,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3850,3851]},{"teal":4076,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3852,3853,3854]},{"teal":4080,"source":"contracts/validatorRegistry.algo.ts:896","errorMessage":"couldn't find pool app id in nodes to move","pc":[3855]},{"teal":4081,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3856]},{"teal":4086,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3857]},{"teal":4089,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3858,3859,3860]},{"teal":4090,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3861]},{"teal":4091,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3862]},{"teal":4092,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3863,3864]},{"teal":4093,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3865]},{"teal":4096,"source":"contracts/validatorRegistry.algo.ts:910","errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[3866]},{"teal":4099,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3867,3868,3869]},{"teal":4100,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3870]},{"teal":4103,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3871,3872,3873]},{"teal":4104,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3874]},{"teal":4105,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3875]},{"teal":4106,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3876]},{"teal":4107,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3877]},{"teal":4108,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3878]},{"teal":4122,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3879,3880,3881]},{"teal":4125,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3882]},{"teal":4126,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3883,3884]},{"teal":4130,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3885,3886]},{"teal":4131,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3887,3888,3889]},{"teal":4135,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3890,3891]},{"teal":4136,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3892]},{"teal":4137,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3893]},{"teal":4138,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3894,3895]},{"teal":4139,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3896]},{"teal":4140,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3897]},{"teal":4141,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3898,3899]},{"teal":4142,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3900]},{"teal":4143,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3901]},{"teal":4144,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3902,3903]},{"teal":4148,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3904,3905]},{"teal":4149,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3906]},{"teal":4150,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3907]},{"teal":4151,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3908,3909]},{"teal":4152,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3910]},{"teal":4153,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3911]},{"teal":4154,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3912,3913]},{"teal":4155,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3914]},{"teal":4156,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3915]},{"teal":4157,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3916,3917]},{"teal":4161,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3918,3919]},{"teal":4162,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3920]},{"teal":4163,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3921]},{"teal":4166,"source":"contracts/validatorRegistry.algo.ts:914","errorMessage":"this validator doesn't have a reward token defined","pc":[3922]},{"teal":4170,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3923,3924]},{"teal":4171,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3925]},{"teal":4172,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3926]},{"teal":4173,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3927,3928]},{"teal":4174,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3929]},{"teal":4175,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3930]},{"teal":4176,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3931,3932]},{"teal":4177,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3933]},{"teal":4178,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3934]},{"teal":4179,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3935,3936]},{"teal":4184,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3937,3938]},{"teal":4185,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3939,3940]},{"teal":4186,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3941]},{"teal":4187,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3942,3943]},{"teal":4188,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3944,3945]},{"teal":4189,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3946]},{"teal":4190,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3947,3948]},{"teal":4191,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3949]},{"teal":4192,"source":"contracts/validatorRegistry.algo.ts:917","pc":[3950,3951]},{"teal":4199,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3952]},{"teal":4200,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3953,3954]},{"teal":4201,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3955,3956]},{"teal":4202,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3957,3958]},{"teal":4203,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3959,3960]},{"teal":4207,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3961,3962]},{"teal":4208,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3963,3964]},{"teal":4212,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3965,3966]},{"teal":4213,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3967,3968]},{"teal":4214,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3969,3970]},{"teal":4215,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3971]},{"teal":4216,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3972,3973]},{"teal":4217,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3974,3975]},{"teal":4218,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3976]},{"teal":4219,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3977,3978]},{"teal":4222,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3979]},{"teal":4223,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3980,3981]},{"teal":4226,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3982]},{"teal":4233,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3983,3984]},{"teal":4234,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3985,3986]},{"teal":4235,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3987]},{"teal":4236,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3988,3989]},{"teal":4237,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3990,3991]},{"teal":4238,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3992]},{"teal":4239,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3993,3994]},{"teal":4240,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3995]},{"teal":4243,"source":"contracts/validatorRegistry.algo.ts:925","errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[3996]},{"teal":4247,"source":"contracts/validatorRegistry.algo.ts:929","pc":[3997,3998]},{"teal":4250,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3999,4000]},{"teal":4253,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4001,4002]},{"teal":4254,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4003]},{"teal":4258,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4004,4005,4006]},{"teal":4265,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4007,4008]},{"teal":4266,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4009]},{"teal":4267,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4010,4011]},{"teal":4268,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4012]},{"teal":4269,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4013,4014]},{"teal":4270,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4015]},{"teal":4271,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4016]},{"teal":4272,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4017,4018]},{"teal":4273,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4019]},{"teal":4274,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4020]},{"teal":4277,"source":"contracts/validatorRegistry.algo.ts:1022","errorMessage":"can only be called by validator owner","pc":[4021]},{"teal":4278,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4022]},{"teal":4282,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4023,4024,4025]},{"teal":4290,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4026,4027]},{"teal":4291,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4028]},{"teal":4292,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4029,4030]},{"teal":4293,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4031]},{"teal":4294,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4032,4033]},{"teal":4295,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4034]},{"teal":4296,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4035]},{"teal":4297,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4036,4037]},{"teal":4298,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4038]},{"teal":4299,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4039]},{"teal":4300,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4040]},{"teal":4301,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4041,4042,4043]},{"teal":4302,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4044,4045]},{"teal":4303,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4046,4047]},{"teal":4304,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4048,4049]},{"teal":4305,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4050]},{"teal":4306,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4051,4052]},{"teal":4307,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4053]},{"teal":4308,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4054]},{"teal":4309,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4055,4056]},{"teal":4310,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4057]},{"teal":4311,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4058]},{"teal":4312,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4059]},{"teal":4316,"source":"contracts/validatorRegistry.algo.ts:1029","errorMessage":"can only be called by owner or manager of validator","pc":[4060]},{"teal":4317,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4061]},{"teal":4325,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4062,4063,4064]},{"teal":4329,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4065]},{"teal":4330,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4066,4067]},{"teal":4331,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4068,4069,4070]},{"teal":4332,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4071]},{"teal":4333,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4072]},{"teal":4334,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4073]},{"teal":4335,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4074]},{"teal":4336,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4075]},{"teal":4337,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4076]},{"teal":4340,"source":"contracts/validatorRegistry.algo.ts:1042","errorMessage":"the specified validator id isn't valid","pc":[4077]},{"teal":4344,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4078,4079]},{"teal":4345,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4080,4081,4082]},{"teal":4346,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4083]},{"teal":4347,"source":"contracts/constants.algo.ts:30","pc":[4084]},{"teal":4348,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4085]},{"teal":4351,"source":"contracts/validatorRegistry.algo.ts:1043","errorMessage":"pool id not in valid range","pc":[4086]},{"teal":4358,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4087,4088]},{"teal":4359,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4089,4090,4091]},{"teal":4360,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4092]},{"teal":4361,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4093]},{"teal":4362,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4094]},{"teal":4363,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4095]},{"teal":4364,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4096,4097,4098]},{"teal":4365,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4099,4100]},{"teal":4366,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4101,4102,4103]},{"teal":4367,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4104]},{"teal":4368,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4105,4106]},{"teal":4369,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4107,4108]},{"teal":4370,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4109]},{"teal":4371,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4110,4111]},{"teal":4372,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4112,4113,4114]},{"teal":4373,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4115]},{"teal":4374,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4116]},{"teal":4375,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4117]},{"teal":4376,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4118,4119]},{"teal":4377,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4120]},{"teal":4378,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4121]},{"teal":4379,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4122]},{"teal":4380,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4123]},{"teal":4384,"source":"contracts/validatorRegistry.algo.ts:1044","errorMessage":"pool id outside of range of pools created for this validator","pc":[4124]},{"teal":4391,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4125,4126]},{"teal":4392,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4127,4128,4129]},{"teal":4393,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4130]},{"teal":4394,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4131,4132]},{"teal":4395,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4133,4134]},{"teal":4396,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4135,4136,4137]},{"teal":4397,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4138]},{"teal":4398,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4139]},{"teal":4399,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4140]},{"teal":4400,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4141,4142]},{"teal":4401,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4143]},{"teal":4402,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4144]},{"teal":4403,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4145]},{"teal":4404,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4146]},{"teal":4405,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4147]},{"teal":4406,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4148]},{"teal":4407,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4149,4150]},{"teal":4408,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4151,4152,4153]},{"teal":4409,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4154]},{"teal":4410,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4155]},{"teal":4411,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4156]},{"teal":4412,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4157,4158]},{"teal":4413,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4159]},{"teal":4414,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4160]},{"teal":4415,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4161]},{"teal":4418,"source":"contracts/validatorRegistry.algo.ts:1050","errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4162]},{"teal":4422,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4163,4164]},{"teal":4423,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4165,4166]},{"teal":4424,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4167,4168,4169]},{"teal":4425,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4170]},{"teal":4426,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4171,4172]},{"teal":4427,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4173]},{"teal":4428,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4174]},{"teal":4429,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4175]},{"teal":4433,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4176,4177]},{"teal":4434,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4178,4179,4180]},{"teal":4435,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4181]},{"teal":4436,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4182,4183]},{"teal":4437,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4184,4185,4186]},{"teal":4438,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4187]},{"teal":4439,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200]},{"teal":4440,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4201]},{"teal":4443,"source":"contracts/validatorRegistry.algo.ts:1057","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4202]},{"teal":4444,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4203]},{"teal":4445,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4204]},{"teal":4449,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4205,4206]},{"teal":4450,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4207,4208,4209]},{"teal":4451,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4210]},{"teal":4452,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4211,4212]},{"teal":4453,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4213,4214,4215]},{"teal":4454,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4216]},{"teal":4455,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4217,4218,4219,4220,4221,4222,4223,4224]},{"teal":4456,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4225]},{"teal":4459,"source":"contracts/validatorRegistry.algo.ts:1058","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4226]},{"teal":4460,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4227]},{"teal":4461,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4228]},{"teal":4462,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4229]},{"teal":4471,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4230,4231,4232]},{"teal":4474,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4233]},{"teal":4475,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4234]},{"teal":4479,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4235]},{"teal":4480,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4236,4237]},{"teal":4481,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4238]},{"teal":4482,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4239]},{"teal":4483,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4240,4241]},{"teal":4488,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4242,4243]},{"teal":4489,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4244]},{"teal":4490,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4245]},{"teal":4491,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4246,4247]},{"teal":4492,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4248]},{"teal":4493,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4249]},{"teal":4494,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4250,4251]},{"teal":4495,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4252]},{"teal":4496,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4253]},{"teal":4497,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4254]},{"teal":4498,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4255]},{"teal":4499,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4256,4257,4258]},{"teal":4504,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4259,4260]},{"teal":4505,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4261]},{"teal":4506,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4262]},{"teal":4507,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4263,4264]},{"teal":4508,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4265]},{"teal":4509,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4266]},{"teal":4510,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4267,4268]},{"teal":4511,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4269]},{"teal":4512,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4270]},{"teal":4513,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4271,4272]},{"teal":4514,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4273]},{"teal":4517,"source":"contracts/validatorRegistry.algo.ts:1072","errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4274]},{"teal":4518,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4275,4276]},{"teal":4523,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4277]},{"teal":4524,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4278,4279]},{"teal":4525,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4280]},{"teal":4526,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4281,4282]},{"teal":4527,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4283]},{"teal":4528,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4284]},{"teal":4529,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4285,4286]},{"teal":4530,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4287]},{"teal":4531,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4288,4289]},{"teal":4532,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4290]},{"teal":4533,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4291]},{"teal":4534,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4292,4293,4294]},{"teal":4535,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4295,4296]},{"teal":4536,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4297,4298]},{"teal":4537,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4299]},{"teal":4538,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4300,4301]},{"teal":4539,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4302]},{"teal":4540,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4303]},{"teal":4541,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4304,4305]},{"teal":4542,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4306]},{"teal":4543,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4307,4308]},{"teal":4544,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4309]},{"teal":4545,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4310]},{"teal":4548,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4311,4312,4313]},{"teal":4553,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4314,4315]},{"teal":4554,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4316,4317]},{"teal":4555,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4318]},{"teal":4556,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4319,4320]},{"teal":4557,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4321]},{"teal":4558,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4322]},{"teal":4559,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4323,4324]},{"teal":4560,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4325]},{"teal":4565,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4326]},{"teal":4569,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4327,4328,4329]},{"teal":4573,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4330,4331]},{"teal":4574,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4332,4333,4334]},{"teal":4575,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4335,4336]},{"teal":4576,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4337]},{"teal":4577,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4338]},{"teal":4581,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4339,4340]},{"teal":4582,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4341,4342,4343]},{"teal":4583,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4344,4345]},{"teal":4584,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4346]},{"teal":4585,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4347]},{"teal":4589,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4348,4349]},{"teal":4590,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4350,4351]},{"teal":4591,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4352,4353,4354]},{"teal":4592,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4355]},{"teal":4595,"source":"contracts/validatorRegistry.algo.ts:1085","errorMessage":"sender must be owner to add new validator","pc":[4356]},{"teal":4602,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4357,4358]},{"teal":4603,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4359,4360,4361]},{"teal":4604,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4362]},{"teal":4605,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4363]},{"teal":4606,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4364]},{"teal":4607,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4365]},{"teal":4608,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4366,4367,4368]},{"teal":4609,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4369,4370]},{"teal":4610,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4371,4372,4373]},{"teal":4611,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4374]},{"teal":4612,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4375,4376]},{"teal":4613,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4377]},{"teal":4614,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4378]},{"teal":4618,"source":"contracts/validatorRegistry.algo.ts:1087","errorMessage":"gating type not valid","pc":[4379]},{"teal":4625,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4380,4381]},{"teal":4626,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4382,4383,4384]},{"teal":4627,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4385]},{"teal":4628,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4386]},{"teal":4629,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4387]},{"teal":4630,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4388]},{"teal":4631,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4389,4390,4391]},{"teal":4632,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4392,4393]},{"teal":4633,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4394,4395,4396]},{"teal":4634,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4397]},{"teal":4635,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4398,4399]},{"teal":4636,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4400]},{"teal":4637,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4401]},{"teal":4641,"source":"contracts/validatorRegistry.algo.ts:1091","errorMessage":"epoch length not in allowable range","pc":[4402]},{"teal":4648,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4403,4404]},{"teal":4649,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4405,4406,4407]},{"teal":4650,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4408]},{"teal":4651,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4409]},{"teal":4652,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4410]},{"teal":4653,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4411]},{"teal":4654,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4412,4413,4414]},{"teal":4655,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4415,4416]},{"teal":4656,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4417,4418,4419]},{"teal":4657,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4420]},{"teal":4658,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4421,4422]},{"teal":4659,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4423]},{"teal":4660,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4424]},{"teal":4664,"source":"contracts/validatorRegistry.algo.ts:1095","errorMessage":"commission percentage not valid","pc":[4425]},{"teal":4669,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4426,4427]},{"teal":4670,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4428,4429,4430]},{"teal":4671,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4431]},{"teal":4672,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4432]},{"teal":4673,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4433]},{"teal":4674,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4434,4435,4436]},{"teal":4682,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4437,4438]},{"teal":4683,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4439,4440,4441]},{"teal":4684,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4442,4443]},{"teal":4685,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4444]},{"teal":4688,"source":"contracts/validatorRegistry.algo.ts:1100","errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4445]},{"teal":4693,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4446,4447]},{"teal":4694,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4448,4449,4450]},{"teal":4695,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4451]},{"teal":4696,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4452,4453]},{"teal":4697,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4454]},{"teal":4700,"source":"contracts/validatorRegistry.algo.ts:1105","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4455]},{"teal":4707,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4456,4457]},{"teal":4708,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4458,4459,4460]},{"teal":4709,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4461]},{"teal":4710,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4462]},{"teal":4711,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4463]},{"teal":4712,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4464]},{"teal":4713,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4465,4466,4467]},{"teal":4714,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4468,4469]},{"teal":4715,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4470,4471,4472]},{"teal":4716,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4473]},{"teal":4717,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4474,4475]},{"teal":4718,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4476]},{"teal":4719,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4477]},{"teal":4723,"source":"contracts/validatorRegistry.algo.ts:1107","errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4478]},{"teal":4728,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4479,4480]},{"teal":4729,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4481,4482,4483]},{"teal":4730,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4484]},{"teal":4731,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4485]},{"teal":4732,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4486]},{"teal":4733,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4487,4488,4489]},{"teal":4738,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4490,4491]},{"teal":4739,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4492,4493,4494]},{"teal":4740,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4495]},{"teal":4741,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4496,4497]},{"teal":4742,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4498]},{"teal":4745,"source":"contracts/validatorRegistry.algo.ts:1112","errorMessage":"sunsettingOn must be later than now if set","pc":[4499]},{"teal":4748,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4500]},{"teal":4762,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4501,4502,4503]},{"teal":4765,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4504]},{"teal":4766,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4505,4506]},{"teal":4770,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4507,4508]},{"teal":4771,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4509,4510]},{"teal":4772,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4511,4512,4513]},{"teal":4773,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4514]},{"teal":4774,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4515]},{"teal":4775,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4516]},{"teal":4776,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4517,4518]},{"teal":4777,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4519]},{"teal":4778,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4520]},{"teal":4779,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4521]},{"teal":4780,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4522]},{"teal":4781,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4523]},{"teal":4782,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4524]},{"teal":4783,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4525,4526]},{"teal":4784,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4527,4528,4529]},{"teal":4785,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4530]},{"teal":4786,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4531]},{"teal":4787,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4532]},{"teal":4788,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4533,4534]},{"teal":4789,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4535]},{"teal":4790,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4536]},{"teal":4791,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4537,4538]},{"teal":4804,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4539]},{"teal":4805,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4540]},{"teal":4806,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4541,4542]},{"teal":4810,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4543,4544]},{"teal":4811,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4545,4546]},{"teal":4812,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4547,4548]},{"teal":4813,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4549]},{"teal":4814,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4550,4551]},{"teal":4818,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4552,4553]},{"teal":4819,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4554,4555]},{"teal":4820,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4556]},{"teal":4821,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4557,4558]},{"teal":4824,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4559]},{"teal":4825,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4560,4561]},{"teal":4826,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4562]},{"teal":4827,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4563,4564]},{"teal":4828,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4565,4566]},{"teal":4829,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4567,4568,4569,4570,4571,4572]},{"teal":4830,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4573,4574]},{"teal":4834,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4575,4576]},{"teal":4835,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4577,4578]},{"teal":4845,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4579,4580]},{"teal":4846,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4581,4582]},{"teal":4847,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4583,4584]},{"teal":4850,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4585]},{"teal":4851,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4586,4587]},{"teal":4854,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4588]},{"teal":4855,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4589,4590]},{"teal":4856,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4591]},{"teal":4857,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4592]},{"teal":4858,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4593,4594]},{"teal":4859,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4595,4596,4597]},{"teal":4860,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4598]},{"teal":4865,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4599,4600]},{"teal":4866,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4601,4602,4603]},{"teal":4867,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4604]},{"teal":4868,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4605,4606,4607]},{"teal":4873,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4608]},{"teal":4874,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4609,4610]},{"teal":4875,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4611,4612]},{"teal":4876,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4613]},{"teal":4877,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4614,4615]},{"teal":4878,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4616,4617]},{"teal":4879,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4618]},{"teal":4880,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4619,4620]},{"teal":4881,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4621,4622]},{"teal":4882,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4623,4624]},{"teal":4883,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4625,4626]},{"teal":4884,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4627]},{"teal":4889,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4628,4629]},{"teal":4890,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4630,4631]},{"teal":4891,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4632]},{"teal":4894,"source":"contracts/validatorRegistry.algo.ts:1153","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4633]},{"teal":4895,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4634,4635]},{"teal":4899,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4636,4637]},{"teal":4900,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4638,4639]},{"teal":4901,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4640]},{"teal":4904,"source":"contracts/validatorRegistry.algo.ts:1154","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4641]},{"teal":4905,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4642,4643]},{"teal":4909,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4644,4645]},{"teal":4910,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4646,4647]},{"teal":4911,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4648,4649,4650]},{"teal":4912,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4651]},{"teal":4913,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4652]},{"teal":4914,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4653]},{"teal":4915,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4654,4655]},{"teal":4916,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4656]},{"teal":4917,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4657]},{"teal":4918,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4658]},{"teal":4919,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4659]},{"teal":4920,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4660,4661]},{"teal":4921,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4662]},{"teal":4922,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4663,4664,4665]},{"teal":4923,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4666]},{"teal":4924,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4667,4668]},{"teal":4925,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4669,4670,4671]},{"teal":4926,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4672]},{"teal":4927,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4673]},{"teal":4928,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4674]},{"teal":4929,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4675,4676]},{"teal":4930,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4677]},{"teal":4934,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4678,4679]},{"teal":4935,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4680,4681]},{"teal":4936,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4682,4683,4684]},{"teal":4937,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4685]},{"teal":4938,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4686]},{"teal":4939,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4687]},{"teal":4940,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4688,4689]},{"teal":4941,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4690]},{"teal":4942,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4691]},{"teal":4943,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4692,4693]},{"teal":4944,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4694]},{"teal":4945,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4695,4696]},{"teal":4946,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4697]},{"teal":4947,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4698]},{"teal":4948,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4699,4700]},{"teal":4949,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4701,4702,4703]},{"teal":4950,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4704]},{"teal":4951,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4705]},{"teal":4952,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4706]},{"teal":4953,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4707,4708]},{"teal":4954,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4709]},{"teal":4959,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4710,4711]},{"teal":4960,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4712,4713,4714]},{"teal":4965,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4715,4716]},{"teal":4966,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4717]},{"teal":4967,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4718]},{"teal":4968,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4719]},{"teal":4969,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4720,4721]},{"teal":4970,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4722,4723,4724]},{"teal":4971,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4725]},{"teal":4972,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4726]},{"teal":4973,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4727]},{"teal":4974,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4728,4729]},{"teal":4975,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4730]},{"teal":4976,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4731]},{"teal":4977,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4732]},{"teal":4978,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4733]},{"teal":4979,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4734]},{"teal":4980,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4735]},{"teal":4981,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4736,4737]},{"teal":4982,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4738,4739,4740]},{"teal":4983,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4741]},{"teal":4984,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4742]},{"teal":4985,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4743]},{"teal":4986,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4744,4745]},{"teal":4987,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4746]},{"teal":4993,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4747,4748]},{"teal":4994,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4749,4750,4751]},{"teal":4999,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4752,4753]},{"teal":5000,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4754]},{"teal":5001,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4755]},{"teal":5002,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4756]},{"teal":5003,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4757,4758]},{"teal":5004,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4759]},{"teal":5005,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4760]},{"teal":5010,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4761,4762]},{"teal":5011,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4763]},{"teal":5012,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4764]},{"teal":5013,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4765]},{"teal":5014,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4766,4767]},{"teal":5015,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4768,4769,4770]},{"teal":5016,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4771]},{"teal":5017,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4772]},{"teal":5018,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4773]},{"teal":5019,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4774,4775]},{"teal":5020,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4776]},{"teal":5021,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4777]},{"teal":5022,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4778,4779]},{"teal":5023,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4780,4781]},{"teal":5024,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4782,4783]},{"teal":5025,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4784]},{"teal":5026,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4785]},{"teal":5027,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4786]},{"teal":5028,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4787]},{"teal":5029,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4788,4789]},{"teal":5030,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4790,4791,4792]},{"teal":5031,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4793]},{"teal":5032,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4794]},{"teal":5033,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4795]},{"teal":5034,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4796,4797]},{"teal":5035,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4798]},{"teal":5039,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4799,4800]},{"teal":5040,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4801]},{"teal":5041,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4802,4803]},{"teal":5042,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4804,4805]},{"teal":5043,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4806,4807]},{"teal":5044,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4808]},{"teal":5045,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4809]},{"teal":5046,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4810,4811]},{"teal":5047,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4812]},{"teal":5048,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4813]},{"teal":5049,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4814]},{"teal":5053,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4815,4816,4817]},{"teal":5056,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4818]},{"teal":5057,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4819,4820]},{"teal":5061,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4821]},{"teal":5062,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4822,4823]},{"teal":5063,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4824]},{"teal":5064,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4825]},{"teal":5065,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4826]},{"teal":5066,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4827]},{"teal":5067,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4828]},{"teal":5071,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4829]},{"teal":5072,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4830,4831]},{"teal":5073,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4832]},{"teal":5074,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4833]},{"teal":5077,"source":"contracts/validatorRegistry.algo.ts:1172","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4834]},{"teal":5078,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4835,4836]},{"teal":5082,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4837]},{"teal":5083,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4838,4839]},{"teal":5087,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4840]},{"teal":5088,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4841,4842]},{"teal":5093,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4843,4844]},{"teal":5094,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4845,4846]},{"teal":5095,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4847]},{"teal":5096,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4848,4849,4850]},{"teal":5101,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4851,4852]},{"teal":5102,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4853,4854]},{"teal":5103,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4855]},{"teal":5104,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4856]},{"teal":5105,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4857]},{"teal":5106,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4858]},{"teal":5107,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4859,4860]},{"teal":5108,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4861]},{"teal":5109,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4862,4863,4864]},{"teal":5114,"source":"contracts/validatorRegistry.algo.ts:1177","pc":[4865]},{"teal":5120,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4866,4867]},{"teal":5121,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4868]},{"teal":5122,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4869]},{"teal":5123,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4870]},{"teal":5124,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4871,4872,4873]},{"teal":5125,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4874,4875]},{"teal":5126,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4876,4877]},{"teal":5127,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4878]},{"teal":5128,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4879]},{"teal":5129,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4880]},{"teal":5130,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4881]},{"teal":5131,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4882]},{"teal":5132,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4883]},{"teal":5133,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4884]},{"teal":5134,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4885]},{"teal":5135,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4886]},{"teal":5136,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4887]},{"teal":5139,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4888,4889,4890]},{"teal":5144,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4891,4892]},{"teal":5145,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4893]},{"teal":5146,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4894]},{"teal":5147,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4895,4896]},{"teal":5154,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4897,4898]},{"teal":5155,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4899]},{"teal":5156,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4900]},{"teal":5157,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4901,4902]},{"teal":5158,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4903,4904,4905]},{"teal":5164,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4906,4907]},{"teal":5165,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4908]},{"teal":5166,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4909]},{"teal":5167,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4910,4911,4912]},{"teal":5171,"source":"contracts/validatorRegistry.algo.ts:1184","errorMessage":"No empty slot available in the staker pool set","pc":[4913]},{"teal":5176,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4914,4915]},{"teal":5177,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4916]},{"teal":5178,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4917]},{"teal":5179,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4918]},{"teal":5180,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4919]},{"teal":5181,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4920,4921]},{"teal":5182,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4922]},{"teal":5183,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4923,4924]},{"teal":5184,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4925]},{"teal":5185,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4926,4927]},{"teal":5186,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4928]},{"teal":5187,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4929]},{"teal":5198,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4930,4931,4932]},{"teal":5201,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4933]},{"teal":5202,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4934,4935]},{"teal":5206,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4936]},{"teal":5207,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4937,4938]},{"teal":5211,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4939]},{"teal":5212,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4940,4941]},{"teal":5216,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4942]},{"teal":5217,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4943,4944]},{"teal":5221,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4945]},{"teal":5222,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4946,4947]},{"teal":5223,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4948]},{"teal":5224,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4949]},{"teal":5227,"source":"contracts/validatorRegistry.algo.ts:1203","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4950]},{"teal":5228,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4951,4952]},{"teal":5232,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4953]},{"teal":5233,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4954,4955]},{"teal":5238,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4956,4957]},{"teal":5239,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4958,4959]},{"teal":5240,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4960]},{"teal":5241,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4961,4962,4963]},{"teal":5246,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4964,4965]},{"teal":5247,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4966,4967]},{"teal":5248,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4968]},{"teal":5249,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4969]},{"teal":5250,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4970]},{"teal":5251,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4971]},{"teal":5252,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4972]},{"teal":5253,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4973]},{"teal":5254,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4974]},{"teal":5255,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4975]},{"teal":5256,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4976]},{"teal":5257,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4977,4978,4979]},{"teal":5260,"source":"contracts/validatorRegistry.algo.ts:1206","pc":[4980,4981,4982]},{"teal":5265,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4983,4984]},{"teal":5266,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4985]},{"teal":5267,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4986]},{"teal":5268,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4987,4988]},{"teal":5273,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4989,4990]},{"teal":5274,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4991,4992]},{"teal":5275,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4993]},{"teal":5276,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4994]},{"teal":5277,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4995]},{"teal":5278,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4996]},{"teal":5279,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4997]},{"teal":5280,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4998]},{"teal":5281,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4999]},{"teal":5282,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5000,5001]},{"teal":5283,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5002,5003,5004]},{"teal":5284,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5005]},{"teal":5285,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5006]},{"teal":5286,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5007,5008,5009]},{"teal":5292,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5010,5011]},{"teal":5293,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5012,5013]},{"teal":5294,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5014]},{"teal":5295,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5015]},{"teal":5296,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5016]},{"teal":5297,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5017]},{"teal":5298,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5018,5019]},{"teal":5299,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5020]},{"teal":5300,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5021,5022,5023]},{"teal":5305,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5024]},{"teal":5306,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5025,5026]},{"teal":5310,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5027,5028]},{"teal":5311,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5029]},{"teal":5312,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5030]},{"teal":5313,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056]},{"teal":5314,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5057]},{"teal":5315,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5058,5059]},{"teal":5316,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5060]},{"teal":5317,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5061,5062]},{"teal":5318,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5063]},{"teal":5319,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5064,5065,5066]},{"teal":5324,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5067,5068]},{"teal":5325,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5069]},{"teal":5326,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5070]},{"teal":5327,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5071,5072]},{"teal":5336,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5073,5074]},{"teal":5337,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5075]},{"teal":5338,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5076]},{"teal":5339,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5077,5078]},{"teal":5340,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5079,5080,5081]},{"teal":5346,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5082,5083]},{"teal":5347,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5084]},{"teal":5348,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5085,5086,5087]},{"teal":5352,"source":"contracts/validatorRegistry.algo.ts:1220","errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5088]},{"teal":5357,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5089,5090]},{"teal":5358,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5091]},{"teal":5359,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5092,5093]},{"teal":5360,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5094]},{"teal":5361,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5095]},{"teal":5362,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5096]},{"teal":5363,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5097]},{"teal":5364,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5098,5099]},{"teal":5365,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5100]},{"teal":5366,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5101]},{"teal":5367,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5102]},{"teal":5370,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5103,5104]},{"teal":5373,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5105,5106]},{"teal":5374,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5107]},{"teal":5378,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5108,5109,5110]},{"teal":5381,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5111]},{"teal":5382,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5112,5113]},{"teal":5386,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5114,5115]},{"teal":5387,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5116,5117]},{"teal":5388,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5118]},{"teal":5389,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5119,5120]},{"teal":5390,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5121]},{"teal":5391,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5122]},{"teal":5392,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5123,5124]},{"teal":5393,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5125]},{"teal":5394,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5126,5127]},{"teal":5398,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5128,5129,5130]},{"teal":5399,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5131]},{"teal":5400,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5132]},{"teal":5401,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5133,5134]},{"teal":5402,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5135]},{"teal":5403,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5136]},{"teal":5404,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5137,5138]},{"teal":5405,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5139]},{"teal":5406,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5140]},{"teal":5407,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5141,5142]},{"teal":5411,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5143,5144]},{"teal":5412,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5145]},{"teal":5413,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5146]},{"teal":5414,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5147]},{"teal":5415,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5148,5149,5150]},{"teal":5416,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5151,5152]},{"teal":5417,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5153]},{"teal":5418,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5154]},{"teal":5419,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5155]},{"teal":5423,"source":"contracts/validatorRegistry.algo.ts:1230","errorMessage":"node number not in valid range","pc":[5156]},{"teal":5427,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5157]},{"teal":5428,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5158,5159]},{"teal":5433,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5160,5161]},{"teal":5434,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5162,5163]},{"teal":5435,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5164]},{"teal":5436,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5165,5166,5167]},{"teal":5441,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5168,5169]},{"teal":5442,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5170]},{"teal":5443,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5171,5172]},{"teal":5444,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5173]},{"teal":5445,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5174]},{"teal":5446,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5175]},{"teal":5447,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5176]},{"teal":5448,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5177]},{"teal":5449,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5178]},{"teal":5450,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5179]},{"teal":5451,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5180,5181]},{"teal":5452,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5182]},{"teal":5453,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5183]},{"teal":5454,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5184]},{"teal":5455,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5185]},{"teal":5456,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5186]},{"teal":5457,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5187]},{"teal":5458,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5188]},{"teal":5459,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5189]},{"teal":5460,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5190,5191,5192]},{"teal":5465,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5193,5194]},{"teal":5466,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5195,5196]},{"teal":5467,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5197]},{"teal":5468,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5198]},{"teal":5469,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5199]},{"teal":5470,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5200]},{"teal":5471,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5201]},{"teal":5472,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5202]},{"teal":5473,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5203]},{"teal":5474,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5204,5205]},{"teal":5475,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5206]},{"teal":5476,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5207]},{"teal":5477,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5208]},{"teal":5478,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5209,5210]},{"teal":5479,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5211]},{"teal":5480,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5212]},{"teal":5481,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5213,5214]},{"teal":5482,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5215]},{"teal":5483,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5216]},{"teal":5484,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5217,5218]},{"teal":5485,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5219]},{"teal":5489,"source":"contracts/validatorRegistry.algo.ts:1236","pc":[5220]},{"teal":5496,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5221,5222]},{"teal":5497,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5223]},{"teal":5498,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5224]},{"teal":5499,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5225,5226]},{"teal":5500,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5227,5228,5229]},{"teal":5504,"source":"contracts/validatorRegistry.algo.ts:1239","errorMessage":"no available space in specified node for this pool","pc":[5230]},{"teal":5505,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5231]},{"teal":5515,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5232,5233,5234]},{"teal":5518,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5235]},{"teal":5519,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5236,5237]},{"teal":5523,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5238,5239]},{"teal":5524,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5240]},{"teal":5525,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5241]},{"teal":5526,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5242,5243]},{"teal":5527,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5244]},{"teal":5528,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5245]},{"teal":5529,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5246,5247]},{"teal":5530,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5248]},{"teal":5531,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5249]},{"teal":5532,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5250,5251]},{"teal":5537,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5252,5253]},{"teal":5538,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5254]},{"teal":5539,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5255]},{"teal":5540,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5256,5257,5258]},{"teal":5545,"source":"contracts/validatorRegistry.algo.ts:1252","pc":[5259]},{"teal":5550,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5260,5261]},{"teal":5551,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5262,5263]},{"teal":5555,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5264]},{"teal":5556,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5265,5266]},{"teal":5557,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5267]},{"teal":5558,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5268,5269]},{"teal":5559,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5270]},{"teal":5560,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5271]},{"teal":5561,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5272,5273]},{"teal":5562,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5274]},{"teal":5563,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5275,5276]},{"teal":5570,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5277,5278]},{"teal":5571,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5279]},{"teal":5572,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5280]},{"teal":5573,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5281]},{"teal":5574,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5282,5283,5284]},{"teal":5575,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5285,5286]},{"teal":5576,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5287,5288]},{"teal":5577,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5289]},{"teal":5578,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5290]},{"teal":5581,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5291]},{"teal":5582,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5292,5293,5294]},{"teal":5583,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5295,5296]},{"teal":5584,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5297,5298]},{"teal":5585,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5299]},{"teal":5586,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5300]},{"teal":5589,"source":"contracts/validatorRegistry.algo.ts:1258","pc":[5301,5302,5303]},{"teal":5594,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5304,5305]},{"teal":5595,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5306]},{"teal":5596,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5307]},{"teal":5597,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5308]},{"teal":5601,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5309,5310]},{"teal":5602,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5311]},{"teal":5603,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5312]},{"teal":5604,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5313,5314]},{"teal":5605,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5315]},{"teal":5606,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5316]},{"teal":5607,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5317,5318]},{"teal":5608,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5319]},{"teal":5609,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5320]},{"teal":5610,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5321,5322]},{"teal":5615,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5323,5324]},{"teal":5616,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5325]},{"teal":5617,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5326]},{"teal":5618,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5327,5328,5329]},{"teal":5623,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5330]},{"teal":5624,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5331,5332]},{"teal":5632,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5333,5334]},{"teal":5633,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5335,5336]},{"teal":5634,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5337,5338]},{"teal":5635,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5339]},{"teal":5636,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5340,5341]},{"teal":5637,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5342]},{"teal":5640,"source":"contracts/validatorRegistry.algo.ts:1268","errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5343]},{"teal":5646,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5344,5345]},{"teal":5647,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5346]},{"teal":5648,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5347]},{"teal":5649,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5348,5349,5350]},{"teal":5657,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5351,5352]},{"teal":5658,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5353,5354]},{"teal":5659,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5355]},{"teal":5660,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5356,5357]},{"teal":5661,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5358,5359,5360]},{"teal":5662,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5361]},{"teal":5665,"source":"contracts/validatorRegistry.algo.ts:1274","errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5362]},{"teal":5671,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5363,5364]},{"teal":5672,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5365,5366]},{"teal":5673,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5367]},{"teal":5674,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5368,5369,5370]},{"teal":5679,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5371]},{"teal":5680,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5372,5373]},{"teal":5684,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5374,5375]},{"teal":5685,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5376,5377,5378]},{"teal":5686,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5379]},{"teal":5687,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5380,5381]},{"teal":5688,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5382,5383,5384]},{"teal":5689,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5385]},{"teal":5690,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5386,5387]},{"teal":5691,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5388]},{"teal":5692,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5389,5390]},{"teal":5698,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5391,5392]},{"teal":5699,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5393,5394]},{"teal":5700,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5395]},{"teal":5701,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5396,5397,5398]},{"teal":5706,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5399]},{"teal":5707,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5400,5401]},{"teal":5708,"source":"contracts/validatorRegistry.algo.ts:1284","pc":[5402,5403,5404]},{"teal":5714,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5405,5406]},{"teal":5715,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5407]},{"teal":5716,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5408]},{"teal":5717,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5409]},{"teal":5718,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5410,5411]},{"teal":5719,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5412]},{"teal":5720,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5413,5414,5415]},{"teal":5721,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5416,5417]},{"teal":5722,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5418,5419]},{"teal":5723,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5420,5421]},{"teal":5724,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5422]},{"teal":5725,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5423]},{"teal":5726,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5424]},{"teal":5727,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5425,5426]},{"teal":5728,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5427,5428,5429]},{"teal":5733,"source":"contracts/validatorRegistry.algo.ts:1287","pc":[5430,5431]},{"teal":5736,"source":"contracts/validatorRegistry.algo.ts:1287","errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5432]},{"teal":5742,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5433,5434]},{"teal":5743,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5435,5436]},{"teal":5744,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5437]},{"teal":5745,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5438,5439,5440]},{"teal":5753,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5441,5442]},{"teal":5754,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5443,5444]},{"teal":5755,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5445]},{"teal":5756,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5446,5447]},{"teal":5757,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5448,5449,5450]},{"teal":5758,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5451]},{"teal":5759,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5452,5453,5454]},{"teal":5762,"source":"contracts/validatorRegistry.algo.ts:1292","errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5455]},{"teal":5768,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5456,5457]},{"teal":5769,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5458,5459]},{"teal":5770,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5460]},{"teal":5771,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5461,5462,5463]},{"teal":5776,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5464,5465]},{"teal":5777,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5466,5467]},{"teal":5781,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5468,5469]},{"teal":5782,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5470,5471,5472]},{"teal":5785,"source":"contracts/validatorRegistry.algo.ts:1300","errorMessage":"provided NFD must be valid","pc":[5473]},{"teal":5793,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5474,5475]},{"teal":5794,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5476,5477]},{"teal":5795,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5478]},{"teal":5798,"source":"contracts/validatorRegistry.algo.ts:1304","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5479]},{"teal":5799,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5480,5481]},{"teal":5800,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5482]},{"teal":5801,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5483]},{"teal":5802,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5484,5485,5486]},{"teal":5803,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5487,5488]},{"teal":5804,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5489,5490]},{"teal":5805,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5491,5492,5493]},{"teal":5806,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5494]},{"teal":5810,"source":"contracts/validatorRegistry.algo.ts:1303","errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5495]},{"teal":5818,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5496,5497]},{"teal":5819,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512]},{"teal":5820,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5513]},{"teal":5823,"source":"contracts/validatorRegistry.algo.ts:1311","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5514]},{"teal":5824,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5515]},{"teal":5825,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5516,5517]},{"teal":5826,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5518,5519,5520]},{"teal":5827,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5521]},{"teal":5828,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5522]},{"teal":5831,"source":"contracts/validatorRegistry.algo.ts:1310","errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5523]},{"teal":5834,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5524]},{"teal":5846,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5525,5526,5527]},{"teal":5849,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5528]},{"teal":5853,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5529,5530]},{"teal":5854,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5531,5532,5533,5534,5535,5536,5537,5538]},{"teal":5855,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5539]},{"teal":5858,"source":"contracts/validatorRegistry.algo.ts:1329","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5540]},{"teal":5859,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5541,5542]},{"teal":5867,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5543]},{"teal":5868,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5544,5545]},{"teal":5869,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5546,5547]},{"teal":5870,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5548,5549,5550,5551,5552,5553]},{"teal":5871,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5554,5555]},{"teal":5875,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5556,5557]},{"teal":5876,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5558,5559]},{"teal":5880,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5560,5561]},{"teal":5881,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5562]},{"teal":5882,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5563]},{"teal":5883,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5564]},{"teal":5884,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5565,5566,5567]},{"teal":5885,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5568]},{"teal":5886,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5569]},{"teal":5887,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5570,5571]},{"teal":5888,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5572,5573]},{"teal":5889,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5574]},{"teal":5890,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5575,5576]},{"teal":5893,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5577]},{"teal":5894,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5578,5579]},{"teal":5897,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5580]},{"teal":5898,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5581,5582]},{"teal":5899,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5583]},{"teal":5900,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5584]},{"teal":5901,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5585,5586]},{"teal":5902,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5587,5588,5589]},{"teal":5903,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5590]},{"teal":5904,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5591]},{"teal":5907,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5592,5593]},{"teal":5908,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5594]},{"teal":5919,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5595,5596,5597]},{"teal":5922,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5598]},{"teal":5923,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5599,5600]},{"teal":5930,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5601]},{"teal":5931,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5602,5603]},{"teal":5932,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5604,5605]},{"teal":5936,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5606,5607]},{"teal":5937,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5608,5609]},{"teal":5941,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624]},{"teal":5942,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5625,5626]},{"teal":5943,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641]},{"teal":5944,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5642,5643]},{"teal":5947,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5644]},{"teal":5948,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5645,5646]},{"teal":5951,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5647]},{"teal":5955,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5648,5649]},{"teal":5956,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5650,5651]},{"teal":5960,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5652]},{"teal":5961,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5653,5654]},{"teal":5966,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5655,5656]},{"teal":5967,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5657,5658]},{"teal":5968,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5659]},{"teal":5969,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5660]},{"teal":5970,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5661,5662,5663]},{"teal":5974,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5664,5665]},{"teal":5975,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5666,5667]},{"teal":5976,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5668,5669]},{"teal":5977,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5670]},{"teal":5978,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5671,5672]},{"teal":5983,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5673,5674]},{"teal":5984,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5675,5676]},{"teal":5985,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5677]},{"teal":5986,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5678]},{"teal":5987,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5679,5680,5681]},{"teal":5988,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5682,5683]},{"teal":5989,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5684,5685]},{"teal":5990,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5686]},{"teal":5991,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5687]},{"teal":5994,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5688,5689,5690]},{"teal":5999,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5691]},{"teal":6000,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5692,5693,5694]},{"teal":6007,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5695,5696]},{"teal":6008,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5697,5698]},{"teal":6009,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5699]},{"teal":6010,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5700,5701]},{"teal":6011,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5702,5703,5704]},{"teal":6016,"source":"contracts/validatorRegistry.algo.ts:1358","pc":[5705]},{"teal":6020,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5706,5707]},{"teal":6023,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5708,5709]},{"teal":6024,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5710]},{"teal":6032,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5711,5712,5713]},{"teal":6035,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5714]},{"teal":6039,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5715,5716,5717]},{"teal":6040,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5718,5719]},{"teal":6044,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5720,5721]},{"teal":6045,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5722,5723]},{"teal":6046,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5724]},{"teal":6047,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5725]},{"teal":6048,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5726,5727]},{"teal":6049,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5728]},{"teal":6050,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5729]},{"teal":6051,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5730]},{"teal":6052,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5731]},{"teal":6053,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5732]},{"teal":6056,"source":"contracts/validatorRegistry.algo.ts:1369","errorMessage":"wideRatio failed","pc":[5733]},{"teal":6059,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5734,5735]},{"teal":6060,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5736]},{"teal":6067,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5737,5738,5739]},{"teal":6070,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5740]},{"teal":6074,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5741,5742,5743]},{"teal":6075,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5744,5745]},{"teal":6079,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5746,5747]},{"teal":6080,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5748,5749,5750]},{"teal":6081,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5751]},{"teal":6082,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5752]},{"teal":6083,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5753,5754]},{"teal":6084,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5755]},{"teal":6085,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5756]},{"teal":6086,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5757]},{"teal":6087,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5758]},{"teal":6088,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5759]},{"teal":6091,"source":"contracts/validatorRegistry.algo.ts:1379","errorMessage":"wideRatio failed","pc":[5760]},{"teal":6094,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5761,5762]},{"teal":6095,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5763]},{"teal":6101,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5764,5765,5766]},{"teal":6105,"source":"contracts/validatorRegistry.algo.ts:1386","pc":[5767,5768]},{"teal":6106,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5769]},{"teal":6110,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5770,5771,5772]},{"teal":6114,"source":"contracts/validatorRegistry.algo.ts:1390","pc":[5773]},{"teal":6115,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5774]},{"teal":6119,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5775,5776,5777]},{"teal":6122,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5778]},{"teal":6126,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5779,5780]},{"teal":6127,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5781,5782]},{"teal":6131,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5783,5784]},{"teal":6132,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5785,5786]},{"teal":6133,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5787,5788]},{"teal":6134,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5789]},{"teal":6135,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5790]},{"teal":6136,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5791,5792]},{"teal":6140,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5793,5794]},{"teal":6141,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5795,5796]},{"teal":6142,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5797,5798]},{"teal":6143,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5799]},{"teal":6144,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5800]},{"teal":6145,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5801,5802]},{"teal":6149,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5803,5804]},{"teal":6150,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5805,5806]},{"teal":6151,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5807,5808]},{"teal":6152,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5809]},{"teal":6153,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5810]},{"teal":6154,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5811,5812]},{"teal":6158,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5813,5814]},{"teal":6159,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5815,5816]},{"teal":6160,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5817,5818]},{"teal":6161,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5819]},{"teal":6162,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5820]},{"teal":6163,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5821,5822]},{"teal":6167,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5823,5824]},{"teal":6168,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5825,5826]},{"teal":6169,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5827,5828]},{"teal":6170,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5829]},{"teal":6171,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5830]},{"teal":6172,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5831,5832]},{"teal":6176,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5833,5834]},{"teal":6177,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5835,5836]},{"teal":6178,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5837,5838]},{"teal":6179,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5839]},{"teal":6180,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5840]},{"teal":6181,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5841,5842]},{"teal":6185,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5843,5844]},{"teal":6186,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5845,5846]},{"teal":6187,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5847,5848]},{"teal":6188,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5849]},{"teal":6189,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5850]},{"teal":6190,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5851,5852]},{"teal":6194,"source":"contracts/validatorRegistry.algo.ts:1410","pc":[5853,5854]},{"teal":6197,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5855,5856]},{"teal":6198,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5857]},{"teal":6202,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5858,5859,5860]},{"teal":6206,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5861,5862,5863]},{"teal":6207,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5864,5865]},{"teal":6208,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5866,5867,5868]},{"teal":6209,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5869]},{"teal":6210,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5870]},{"teal":6211,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5871]},{"teal":6214,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5872,5873,5874,5875,5876,5877]},{"teal":6215,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5878,5879,5880]},{"teal":6216,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5881,5882,5883,5884]},{"teal":6219,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[5885]},{"teal":6222,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5886,5887,5888,5889,5890,5891]},{"teal":6223,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5892,5893,5894,5895,5896,5897]},{"teal":6224,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5898,5899,5900,5901,5902,5903]},{"teal":6225,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5904,5905,5906,5907,5908,5909]},{"teal":6226,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5910,5911,5912,5913,5914,5915]},{"teal":6227,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5916,5917,5918,5919,5920,5921]},{"teal":6228,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5922,5923,5924,5925,5926,5927]},{"teal":6229,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5928,5929,5930,5931,5932,5933]},{"teal":6230,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5934,5935,5936,5937,5938,5939]},{"teal":6231,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5940,5941,5942,5943,5944,5945]},{"teal":6232,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5946,5947,5948,5949,5950,5951]},{"teal":6233,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5952,5953,5954,5955,5956,5957]},{"teal":6234,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5958,5959,5960,5961,5962,5963]},{"teal":6235,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5964,5965,5966,5967,5968,5969]},{"teal":6236,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5970,5971,5972,5973,5974,5975]},{"teal":6237,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5976,5977,5978,5979,5980,5981]},{"teal":6238,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5982,5983,5984,5985,5986,5987]},{"teal":6239,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5988,5989,5990,5991,5992,5993]},{"teal":6240,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5994,5995,5996,5997,5998,5999]},{"teal":6241,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6000,6001,6002,6003,6004,6005]},{"teal":6242,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6006,6007,6008,6009,6010,6011]},{"teal":6243,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6012,6013,6014,6015,6016,6017]},{"teal":6244,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6018,6019,6020,6021,6022,6023]},{"teal":6245,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6024,6025,6026,6027,6028,6029]},{"teal":6246,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6030,6031,6032,6033,6034,6035]},{"teal":6247,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6036,6037,6038,6039,6040,6041]},{"teal":6248,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6042,6043,6044,6045,6046,6047]},{"teal":6249,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6048,6049,6050,6051,6052,6053]},{"teal":6250,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6054,6055,6056,6057,6058,6059]},{"teal":6251,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6060,6061,6062,6063,6064,6065]},{"teal":6252,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6066,6067,6068,6069,6070,6071]},{"teal":6253,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6072,6073,6074,6075,6076,6077]},{"teal":6254,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6078,6079,6080,6081,6082,6083]},{"teal":6255,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6084,6085,6086]},{"teal":6256,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154]},{"teal":6259,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6155]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/validatorRegistry.algo.ts:50","pc":[1,2]},{"teal":16,"source":"contracts/validatorRegistry.algo.ts:50","pc":[3]},{"teal":17,"source":"contracts/validatorRegistry.algo.ts:50","pc":[4,5]},{"teal":18,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6]},{"teal":19,"source":"contracts/validatorRegistry.algo.ts:50","pc":[7,8]},{"teal":20,"source":"contracts/validatorRegistry.algo.ts:50","pc":[9]},{"teal":21,"source":"contracts/validatorRegistry.algo.ts:50","pc":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]},{"teal":25,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[36]},{"teal":30,"source":"contracts/validatorRegistry.algo.ts:81","pc":[37,38,39]},{"teal":31,"source":"contracts/validatorRegistry.algo.ts:81","pc":[40]},{"teal":32,"source":"contracts/validatorRegistry.algo.ts:81","pc":[41]},{"teal":36,"source":"contracts/validatorRegistry.algo.ts:81","pc":[42,43,44]},{"teal":40,"source":"contracts/validatorRegistry.algo.ts:82","pc":[45,46]},{"teal":41,"source":"contracts/validatorRegistry.algo.ts:82","pc":[47]},{"teal":42,"source":"contracts/validatorRegistry.algo.ts:82","pc":[48,49]},{"teal":43,"source":"contracts/validatorRegistry.algo.ts:82","pc":[50]},{"teal":44,"source":"contracts/validatorRegistry.algo.ts:82","pc":[51,52]},{"teal":45,"source":"contracts/validatorRegistry.algo.ts:82","pc":[53]},{"teal":46,"source":"contracts/validatorRegistry.algo.ts:82","pc":[54]},{"teal":50,"source":"contracts/validatorRegistry.algo.ts:83","pc":[55,56]},{"teal":51,"source":"contracts/validatorRegistry.algo.ts:83","pc":[57]},{"teal":52,"source":"contracts/validatorRegistry.algo.ts:83","pc":[58]},{"teal":56,"source":"contracts/validatorRegistry.algo.ts:84","pc":[59,60]},{"teal":57,"source":"contracts/validatorRegistry.algo.ts:84","pc":[61]},{"teal":58,"source":"contracts/validatorRegistry.algo.ts:84","pc":[62]},{"teal":62,"source":"contracts/validatorRegistry.algo.ts:85","pc":[63,64]},{"teal":63,"source":"contracts/validatorRegistry.algo.ts:85","pc":[65]},{"teal":64,"source":"contracts/validatorRegistry.algo.ts:85","pc":[66]},{"teal":65,"source":"contracts/validatorRegistry.algo.ts:81","pc":[67]},{"teal":70,"source":"contracts/validatorRegistry.algo.ts:88","pc":[68,69,70]},{"teal":71,"source":"contracts/validatorRegistry.algo.ts:88","pc":[71]},{"teal":74,"source":"contracts/validatorRegistry.algo.ts:88","pc":[72,73,74]},{"teal":75,"source":"contracts/validatorRegistry.algo.ts:88","pc":[75]},{"teal":76,"source":"contracts/validatorRegistry.algo.ts:88","pc":[76]},{"teal":80,"source":"contracts/validatorRegistry.algo.ts:88","pc":[77,78,79]},{"teal":84,"source":"contracts/validatorRegistry.algo.ts:90","pc":[80,81]},{"teal":85,"source":"contracts/validatorRegistry.algo.ts:90","pc":[82,83]},{"teal":86,"source":"contracts/validatorRegistry.algo.ts:90","pc":[84]},{"teal":87,"source":"contracts/validatorRegistry.algo.ts:90","pc":[85]},{"teal":88,"source":"contracts/validatorRegistry.algo.ts:88","pc":[86]},{"teal":93,"source":"contracts/validatorRegistry.algo.ts:93","pc":[87,88,89]},{"teal":94,"source":"contracts/validatorRegistry.algo.ts:93","pc":[90,91,92]},{"teal":97,"source":"contracts/validatorRegistry.algo.ts:93","pc":[93,94,95]},{"teal":98,"source":"contracts/validatorRegistry.algo.ts:93","pc":[96]},{"teal":101,"source":"contracts/validatorRegistry.algo.ts:93","pc":[97,98,99]},{"teal":102,"source":"contracts/validatorRegistry.algo.ts:93","pc":[100]},{"teal":103,"source":"contracts/validatorRegistry.algo.ts:93","pc":[101]},{"teal":107,"source":"contracts/validatorRegistry.algo.ts:93","pc":[102,103,104]},{"teal":111,"source":"contracts/validatorRegistry.algo.ts:94","pc":[105,106]},{"teal":112,"source":"contracts/validatorRegistry.algo.ts:94","pc":[107]},{"teal":113,"source":"contracts/validatorRegistry.algo.ts:94","pc":[108]},{"teal":114,"source":"contracts/validatorRegistry.algo.ts:94","pc":[109]},{"teal":115,"source":"contracts/validatorRegistry.algo.ts:94","pc":[110]},{"teal":116,"source":"contracts/validatorRegistry.algo.ts:94","pc":[111]},{"teal":120,"source":"contracts/validatorRegistry.algo.ts:95","pc":[112,113]},{"teal":121,"source":"contracts/validatorRegistry.algo.ts:95","pc":[114,115]},{"teal":122,"source":"contracts/validatorRegistry.algo.ts:95","pc":[116,117]},{"teal":123,"source":"contracts/validatorRegistry.algo.ts:95","pc":[118]},{"teal":124,"source":"contracts/validatorRegistry.algo.ts:93","pc":[119]},{"teal":129,"source":"contracts/validatorRegistry.algo.ts:98","pc":[120,121,122]},{"teal":130,"source":"contracts/validatorRegistry.algo.ts:98","pc":[123]},{"teal":131,"source":"contracts/validatorRegistry.algo.ts:98","pc":[124]},{"teal":135,"source":"contracts/validatorRegistry.algo.ts:98","pc":[125,126,127]},{"teal":139,"source":"contracts/validatorRegistry.algo.ts:99","pc":[128,129]},{"teal":140,"source":"contracts/validatorRegistry.algo.ts:99","pc":[130]},{"teal":141,"source":"contracts/validatorRegistry.algo.ts:99","pc":[131,132]},{"teal":142,"source":"contracts/validatorRegistry.algo.ts:99","pc":[133]},{"teal":143,"source":"contracts/validatorRegistry.algo.ts:99","pc":[134,135]},{"teal":144,"source":"contracts/validatorRegistry.algo.ts:99","pc":[136]},{"teal":145,"source":"contracts/validatorRegistry.algo.ts:99","pc":[137]},{"teal":146,"source":"contracts/validatorRegistry.algo.ts:98","pc":[138]},{"teal":151,"source":"contracts/validatorRegistry.algo.ts:105","pc":[139,140,141]},{"teal":152,"source":"contracts/validatorRegistry.algo.ts:105","pc":[142]},{"teal":153,"source":"contracts/validatorRegistry.algo.ts:105","pc":[143]},{"teal":159,"source":"contracts/validatorRegistry.algo.ts:105","pc":[144,145,146]},{"teal":160,"source":"contracts/validatorRegistry.algo.ts:105","pc":[147]},{"teal":165,"source":"contracts/validatorRegistry.algo.ts:116","pc":[148]},{"teal":168,"source":"contracts/validatorRegistry.algo.ts:116","pc":[149,150,151]},{"teal":169,"source":"contracts/validatorRegistry.algo.ts:116","pc":[152]},{"teal":170,"source":"contracts/validatorRegistry.algo.ts:116","pc":[153]},{"teal":171,"source":"contracts/validatorRegistry.algo.ts:116","pc":[154]},{"teal":172,"source":"contracts/validatorRegistry.algo.ts:116","pc":[155]},{"teal":184,"source":"contracts/validatorRegistry.algo.ts:116","pc":[156,157,158]},{"teal":209,"source":"contracts/validatorRegistry.algo.ts:121","pc":[159,160,161]},{"teal":210,"source":"contracts/validatorRegistry.algo.ts:121","pc":[162,163,164]},{"teal":211,"source":"contracts/validatorRegistry.algo.ts:121","pc":[165]},{"teal":212,"source":"contracts/validatorRegistry.algo.ts:131","pc":[166,167]},{"teal":213,"source":"contracts/validatorRegistry.algo.ts:130","pc":[168,169]},{"teal":214,"source":"contracts/validatorRegistry.algo.ts:129","pc":[170]},{"teal":215,"source":"contracts/validatorRegistry.algo.ts:129","pc":[171,172]},{"teal":216,"source":"contracts/validatorRegistry.algo.ts:126","pc":[173,174]},{"teal":217,"source":"contracts/validatorRegistry.algo.ts:123","pc":[175]},{"teal":218,"source":"contracts/validatorRegistry.algo.ts:122","pc":[176,177,178]},{"teal":219,"source":"contracts/validatorRegistry.algo.ts:122","pc":[179]},{"teal":220,"source":"contracts/validatorRegistry.algo.ts:122","pc":[180]},{"teal":221,"source":"contracts/validatorRegistry.algo.ts:134","pc":[181,182]},{"teal":222,"source":"contracts/validatorRegistry.algo.ts:135","pc":[183,184,185]},{"teal":223,"source":"contracts/validatorRegistry.algo.ts:135","pc":[186,187,188]},{"teal":224,"source":"contracts/validatorRegistry.algo.ts:134","pc":[189]},{"teal":225,"source":"contracts/validatorRegistry.algo.ts:134","pc":[190]},{"teal":226,"source":"contracts/validatorRegistry.algo.ts:134","pc":[191]},{"teal":227,"source":"contracts/validatorRegistry.algo.ts:139","pc":[192,193,194]},{"teal":228,"source":"contracts/validatorRegistry.algo.ts:138","pc":[195,196,197]},{"teal":229,"source":"contracts/validatorRegistry.algo.ts:138","pc":[198]},{"teal":230,"source":"contracts/validatorRegistry.algo.ts:138","pc":[199]},{"teal":231,"source":"contracts/validatorRegistry.algo.ts:116","pc":[200]},{"teal":236,"source":"contracts/validatorRegistry.algo.ts:147","pc":[201]},{"teal":239,"source":"contracts/validatorRegistry.algo.ts:147","pc":[202,203,204]},{"teal":240,"source":"contracts/validatorRegistry.algo.ts:147","pc":[205]},{"teal":241,"source":"contracts/validatorRegistry.algo.ts:147","pc":[206]},{"teal":242,"source":"contracts/validatorRegistry.algo.ts:147","pc":[207]},{"teal":243,"source":"contracts/validatorRegistry.algo.ts:147","pc":[208]},{"teal":249,"source":"contracts/validatorRegistry.algo.ts:147","pc":[209,210,211]},{"teal":265,"source":"contracts/validatorRegistry.algo.ts:154","pc":[212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253]},{"teal":266,"source":"contracts/validatorRegistry.algo.ts:155","pc":[254,255,256]},{"teal":267,"source":"contracts/validatorRegistry.algo.ts:155","pc":[257]},{"teal":268,"source":"contracts/validatorRegistry.algo.ts:155","pc":[258]},{"teal":269,"source":"contracts/validatorRegistry.algo.ts:156","pc":[259,260,261]},{"teal":270,"source":"contracts/validatorRegistry.algo.ts:156","pc":[262]},{"teal":271,"source":"contracts/validatorRegistry.algo.ts:156","pc":[263]},{"teal":272,"source":"contracts/validatorRegistry.algo.ts:157","pc":[264,265,266]},{"teal":273,"source":"contracts/validatorRegistry.algo.ts:157","pc":[267]},{"teal":274,"source":"contracts/validatorRegistry.algo.ts:157","pc":[268]},{"teal":275,"source":"contracts/validatorRegistry.algo.ts:158","pc":[269,270,271,272,273,274,275,276,277,278]},{"teal":276,"source":"contracts/validatorRegistry.algo.ts:158","pc":[279]},{"teal":277,"source":"contracts/validatorRegistry.algo.ts:159","pc":[280,281,282,283,284,285,286,287,288,289]},{"teal":278,"source":"contracts/validatorRegistry.algo.ts:159","pc":[290]},{"teal":279,"source":"contracts/validatorRegistry.algo.ts:160","pc":[291,292,293,294,295,296,297,298,299,300]},{"teal":280,"source":"contracts/validatorRegistry.algo.ts:160","pc":[301]},{"teal":281,"source":"contracts/validatorRegistry.algo.ts:147","pc":[302]},{"teal":286,"source":"contracts/validatorRegistry.algo.ts:167","pc":[303]},{"teal":289,"source":"contracts/validatorRegistry.algo.ts:167","pc":[304,305,306]},{"teal":290,"source":"contracts/validatorRegistry.algo.ts:167","pc":[307]},{"teal":291,"source":"contracts/validatorRegistry.algo.ts:167","pc":[308]},{"teal":292,"source":"contracts/validatorRegistry.algo.ts:167","pc":[309]},{"teal":293,"source":"contracts/validatorRegistry.algo.ts:167","pc":[310]},{"teal":294,"source":"contracts/validatorRegistry.algo.ts:167","pc":[311]},{"teal":300,"source":"contracts/validatorRegistry.algo.ts:167","pc":[312,313,314]},{"teal":304,"source":"contracts/validatorRegistry.algo.ts:169","pc":[315,316]},{"teal":305,"source":"contracts/validatorRegistry.algo.ts:169","pc":[317]},{"teal":306,"source":"contracts/validatorRegistry.algo.ts:167","pc":[318]},{"teal":311,"source":"contracts/validatorRegistry.algo.ts:172","pc":[319]},{"teal":314,"source":"contracts/validatorRegistry.algo.ts:173","pc":[320,321,322]},{"teal":315,"source":"contracts/validatorRegistry.algo.ts:173","pc":[323]},{"teal":318,"source":"contracts/validatorRegistry.algo.ts:172","pc":[324,325,326]},{"teal":319,"source":"contracts/validatorRegistry.algo.ts:172","pc":[327]},{"teal":320,"source":"contracts/validatorRegistry.algo.ts:172","pc":[328]},{"teal":321,"source":"contracts/validatorRegistry.algo.ts:172","pc":[329]},{"teal":322,"source":"contracts/validatorRegistry.algo.ts:172","pc":[330]},{"teal":326,"source":"contracts/validatorRegistry.algo.ts:172","pc":[331,332,333]},{"teal":330,"source":"contracts/validatorRegistry.algo.ts:174","pc":[334]},{"teal":331,"source":"contracts/validatorRegistry.algo.ts:174","pc":[335,336]},{"teal":332,"source":"contracts/validatorRegistry.algo.ts:174","pc":[337]},{"teal":333,"source":"contracts/validatorRegistry.algo.ts:174","pc":[338,339]},{"teal":334,"source":"contracts/validatorRegistry.algo.ts:174","pc":[340]},{"teal":335,"source":"contracts/validatorRegistry.algo.ts:174","pc":[341]},{"teal":336,"source":"contracts/validatorRegistry.algo.ts:174","pc":[342,343]},{"teal":337,"source":"contracts/validatorRegistry.algo.ts:174","pc":[344]},{"teal":338,"source":"contracts/validatorRegistry.algo.ts:172","pc":[345]},{"teal":343,"source":"contracts/validatorRegistry.algo.ts:177","pc":[346]},{"teal":346,"source":"contracts/validatorRegistry.algo.ts:178","pc":[347,348,349]},{"teal":347,"source":"contracts/validatorRegistry.algo.ts:178","pc":[350]},{"teal":350,"source":"contracts/validatorRegistry.algo.ts:177","pc":[351,352,353]},{"teal":351,"source":"contracts/validatorRegistry.algo.ts:177","pc":[354]},{"teal":352,"source":"contracts/validatorRegistry.algo.ts:177","pc":[355]},{"teal":353,"source":"contracts/validatorRegistry.algo.ts:177","pc":[356]},{"teal":354,"source":"contracts/validatorRegistry.algo.ts:177","pc":[357]},{"teal":358,"source":"contracts/validatorRegistry.algo.ts:177","pc":[358,359,360]},{"teal":362,"source":"contracts/validatorRegistry.algo.ts:179","pc":[361,362]},{"teal":363,"source":"contracts/validatorRegistry.algo.ts:179","pc":[363,364]},{"teal":364,"source":"contracts/validatorRegistry.algo.ts:179","pc":[365]},{"teal":365,"source":"contracts/validatorRegistry.algo.ts:179","pc":[366,367]},{"teal":366,"source":"contracts/validatorRegistry.algo.ts:179","pc":[368]},{"teal":367,"source":"contracts/validatorRegistry.algo.ts:179","pc":[369]},{"teal":368,"source":"contracts/validatorRegistry.algo.ts:179","pc":[370,371]},{"teal":369,"source":"contracts/validatorRegistry.algo.ts:179","pc":[372]},{"teal":370,"source":"contracts/validatorRegistry.algo.ts:177","pc":[373]},{"teal":375,"source":"contracts/validatorRegistry.algo.ts:182","pc":[374]},{"teal":378,"source":"contracts/validatorRegistry.algo.ts:183","pc":[375,376,377]},{"teal":379,"source":"contracts/validatorRegistry.algo.ts:183","pc":[378]},{"teal":382,"source":"contracts/validatorRegistry.algo.ts:182","pc":[379,380,381]},{"teal":383,"source":"contracts/validatorRegistry.algo.ts:182","pc":[382]},{"teal":384,"source":"contracts/validatorRegistry.algo.ts:182","pc":[383]},{"teal":385,"source":"contracts/validatorRegistry.algo.ts:182","pc":[384]},{"teal":386,"source":"contracts/validatorRegistry.algo.ts:182","pc":[385]},{"teal":390,"source":"contracts/validatorRegistry.algo.ts:182","pc":[386,387,388]},{"teal":397,"source":"contracts/validatorRegistry.algo.ts:185","pc":[389]},{"teal":398,"source":"contracts/validatorRegistry.algo.ts:185","pc":[390,391]},{"teal":399,"source":"contracts/validatorRegistry.algo.ts:185","pc":[392]},{"teal":400,"source":"contracts/validatorRegistry.algo.ts:185","pc":[393,394]},{"teal":401,"source":"contracts/validatorRegistry.algo.ts:185","pc":[395]},{"teal":402,"source":"contracts/validatorRegistry.algo.ts:185","pc":[396]},{"teal":403,"source":"contracts/validatorRegistry.algo.ts:185","pc":[397,398]},{"teal":404,"source":"contracts/validatorRegistry.algo.ts:185","pc":[399]},{"teal":405,"source":"contracts/validatorRegistry.algo.ts:186","pc":[400,401]},{"teal":406,"source":"contracts/validatorRegistry.algo.ts:186","pc":[402,403]},{"teal":407,"source":"contracts/validatorRegistry.algo.ts:186","pc":[404]},{"teal":408,"source":"contracts/validatorRegistry.algo.ts:186","pc":[405,406]},{"teal":409,"source":"contracts/validatorRegistry.algo.ts:186","pc":[407]},{"teal":410,"source":"contracts/validatorRegistry.algo.ts:186","pc":[408]},{"teal":411,"source":"contracts/validatorRegistry.algo.ts:186","pc":[409,410]},{"teal":412,"source":"contracts/validatorRegistry.algo.ts:186","pc":[411]},{"teal":413,"source":"contracts/validatorRegistry.algo.ts:186","pc":[412]},{"teal":414,"source":"contracts/validatorRegistry.algo.ts:182","pc":[413]},{"teal":419,"source":"contracts/validatorRegistry.algo.ts:196","pc":[414]},{"teal":422,"source":"contracts/validatorRegistry.algo.ts:197","pc":[415,416,417]},{"teal":423,"source":"contracts/validatorRegistry.algo.ts:197","pc":[418]},{"teal":426,"source":"contracts/validatorRegistry.algo.ts:196","pc":[419,420,421]},{"teal":427,"source":"contracts/validatorRegistry.algo.ts:196","pc":[422]},{"teal":428,"source":"contracts/validatorRegistry.algo.ts:196","pc":[423]},{"teal":429,"source":"contracts/validatorRegistry.algo.ts:196","pc":[424,425]},{"teal":430,"source":"contracts/validatorRegistry.algo.ts:196","pc":[426]},{"teal":431,"source":"contracts/validatorRegistry.algo.ts:196","pc":[427]},{"teal":432,"source":"contracts/validatorRegistry.algo.ts:196","pc":[428,429,430]},{"teal":433,"source":"contracts/validatorRegistry.algo.ts:196","pc":[431]},{"teal":434,"source":"contracts/validatorRegistry.algo.ts:196","pc":[432]},{"teal":435,"source":"contracts/validatorRegistry.algo.ts:196","pc":[433]},{"teal":436,"source":"contracts/validatorRegistry.algo.ts:196","pc":[434]},{"teal":437,"source":"contracts/validatorRegistry.algo.ts:196","pc":[435]},{"teal":438,"source":"contracts/validatorRegistry.algo.ts:196","pc":[436]},{"teal":447,"source":"contracts/validatorRegistry.algo.ts:196","pc":[437,438,439]},{"teal":450,"source":"contracts/validatorRegistry.algo.ts:196","pc":[440]},{"teal":451,"source":"contracts/validatorRegistry.algo.ts:196","pc":[441,442]},{"teal":455,"source":"contracts/validatorRegistry.algo.ts:198","pc":[443]},{"teal":456,"source":"contracts/validatorRegistry.algo.ts:198","pc":[444,445]},{"teal":460,"source":"contracts/validatorRegistry.algo.ts:199","pc":[446,447]},{"teal":461,"source":"contracts/validatorRegistry.algo.ts:199","pc":[448,449]},{"teal":462,"source":"contracts/validatorRegistry.algo.ts:199","pc":[450]},{"teal":463,"source":"contracts/validatorRegistry.algo.ts:199","pc":[451,452]},{"teal":464,"source":"contracts/validatorRegistry.algo.ts:199","pc":[453]},{"teal":465,"source":"contracts/validatorRegistry.algo.ts:199","pc":[454]},{"teal":466,"source":"contracts/validatorRegistry.algo.ts:199","pc":[455,456]},{"teal":467,"source":"contracts/validatorRegistry.algo.ts:199","pc":[457]},{"teal":468,"source":"contracts/validatorRegistry.algo.ts:199","pc":[458,459]},{"teal":472,"source":"contracts/validatorRegistry.algo.ts:200","pc":[460]},{"teal":473,"source":"contracts/validatorRegistry.algo.ts:200","pc":[461,462]},{"teal":478,"source":"contracts/validatorRegistry.algo.ts:200","pc":[463,464]},{"teal":479,"source":"contracts/validatorRegistry.algo.ts:200","pc":[465]},{"teal":480,"source":"contracts/validatorRegistry.algo.ts:200","pc":[466]},{"teal":481,"source":"contracts/validatorRegistry.algo.ts:200","pc":[467,468,469]},{"teal":486,"source":"contracts/validatorRegistry.algo.ts:201","pc":[470,471]},{"teal":487,"source":"contracts/validatorRegistry.algo.ts:201","pc":[472,473]},{"teal":488,"source":"contracts/validatorRegistry.algo.ts:201","pc":[474,475]},{"teal":489,"source":"contracts/validatorRegistry.algo.ts:201","pc":[476]},{"teal":490,"source":"contracts/validatorRegistry.algo.ts:201","pc":[477]},{"teal":491,"source":"contracts/validatorRegistry.algo.ts:201","pc":[478]},{"teal":492,"source":"contracts/validatorRegistry.algo.ts:201","pc":[479]},{"teal":493,"source":"contracts/validatorRegistry.algo.ts:201","pc":[480]},{"teal":494,"source":"contracts/validatorRegistry.algo.ts:201","pc":[481]},{"teal":495,"source":"contracts/validatorRegistry.algo.ts:201","pc":[482]},{"teal":496,"source":"contracts/validatorRegistry.algo.ts:201","pc":[483]},{"teal":497,"source":"contracts/validatorRegistry.algo.ts:201","pc":[484,485,486]},{"teal":500,"source":"contracts/validatorRegistry.algo.ts:203","pc":[487,488,489]},{"teal":505,"source":"contracts/validatorRegistry.algo.ts:205","pc":[490,491]},{"teal":506,"source":"contracts/validatorRegistry.algo.ts:205","pc":[492,493]},{"teal":507,"source":"contracts/validatorRegistry.algo.ts:205","pc":[494,495]},{"teal":508,"source":"contracts/validatorRegistry.algo.ts:205","pc":[496,497]},{"teal":509,"source":"contracts/validatorRegistry.algo.ts:205","pc":[498]},{"teal":510,"source":"contracts/validatorRegistry.algo.ts:205","pc":[499,500]},{"teal":511,"source":"contracts/validatorRegistry.algo.ts:205","pc":[501]},{"teal":512,"source":"contracts/validatorRegistry.algo.ts:205","pc":[502]},{"teal":513,"source":"contracts/validatorRegistry.algo.ts:205","pc":[503,504]},{"teal":518,"source":"contracts/validatorRegistry.algo.ts:200","pc":[505,506]},{"teal":519,"source":"contracts/validatorRegistry.algo.ts:200","pc":[507]},{"teal":520,"source":"contracts/validatorRegistry.algo.ts:200","pc":[508]},{"teal":521,"source":"contracts/validatorRegistry.algo.ts:200","pc":[509,510]},{"teal":522,"source":"contracts/validatorRegistry.algo.ts:200","pc":[511,512,513]},{"teal":527,"source":"contracts/validatorRegistry.algo.ts:207","pc":[514,515]},{"teal":530,"source":"contracts/validatorRegistry.algo.ts:196","pc":[516,517]},{"teal":533,"source":"contracts/validatorRegistry.algo.ts:196","pc":[518,519]},{"teal":534,"source":"contracts/validatorRegistry.algo.ts:196","pc":[520]},{"teal":539,"source":"contracts/validatorRegistry.algo.ts:215","pc":[521]},{"teal":542,"source":"contracts/validatorRegistry.algo.ts:216","pc":[522,523,524]},{"teal":543,"source":"contracts/validatorRegistry.algo.ts:216","pc":[525]},{"teal":546,"source":"contracts/validatorRegistry.algo.ts:216","pc":[526,527,528]},{"teal":547,"source":"contracts/validatorRegistry.algo.ts:216","pc":[529]},{"teal":550,"source":"contracts/validatorRegistry.algo.ts:215","pc":[530,531,532]},{"teal":551,"source":"contracts/validatorRegistry.algo.ts:215","pc":[533]},{"teal":552,"source":"contracts/validatorRegistry.algo.ts:215","pc":[534]},{"teal":553,"source":"contracts/validatorRegistry.algo.ts:215","pc":[535]},{"teal":554,"source":"contracts/validatorRegistry.algo.ts:215","pc":[536]},{"teal":555,"source":"contracts/validatorRegistry.algo.ts:215","pc":[537]},{"teal":563,"source":"contracts/validatorRegistry.algo.ts:215","pc":[538,539,540]},{"teal":570,"source":"contracts/validatorRegistry.algo.ts:218","pc":[541,542]},{"teal":571,"source":"contracts/validatorRegistry.algo.ts:218","pc":[543]},{"teal":572,"source":"contracts/validatorRegistry.algo.ts:218","pc":[544]},{"teal":573,"source":"contracts/validatorRegistry.algo.ts:218","pc":[545]},{"teal":574,"source":"contracts/validatorRegistry.algo.ts:218","pc":[546,547,548]},{"teal":575,"source":"contracts/validatorRegistry.algo.ts:218","pc":[549,550]},{"teal":576,"source":"contracts/validatorRegistry.algo.ts:218","pc":[551]},{"teal":577,"source":"contracts/validatorRegistry.algo.ts:218","pc":[552]},{"teal":578,"source":"contracts/validatorRegistry.algo.ts:218","pc":[553]},{"teal":582,"source":"contracts/validatorRegistry.algo.ts:217","errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[554]},{"teal":586,"source":"contracts/validatorRegistry.algo.ts:221","pc":[555,556]},{"teal":587,"source":"contracts/validatorRegistry.algo.ts:221","pc":[557,558]},{"teal":588,"source":"contracts/validatorRegistry.algo.ts:221","pc":[559]},{"teal":589,"source":"contracts/validatorRegistry.algo.ts:221","pc":[560]},{"teal":590,"source":"contracts/validatorRegistry.algo.ts:221","pc":[561,562]},{"teal":591,"source":"contracts/validatorRegistry.algo.ts:221","pc":[563]},{"teal":592,"source":"contracts/validatorRegistry.algo.ts:221","pc":[564]},{"teal":593,"source":"contracts/validatorRegistry.algo.ts:221","pc":[565]},{"teal":594,"source":"contracts/validatorRegistry.algo.ts:221","pc":[566]},{"teal":595,"source":"contracts/validatorRegistry.algo.ts:221","pc":[567]},{"teal":596,"source":"contracts/validatorRegistry.algo.ts:221","pc":[568]},{"teal":597,"source":"contracts/validatorRegistry.algo.ts:221","pc":[569,570]},{"teal":598,"source":"contracts/validatorRegistry.algo.ts:221","pc":[571]},{"teal":599,"source":"contracts/validatorRegistry.algo.ts:221","pc":[572]},{"teal":600,"source":"contracts/validatorRegistry.algo.ts:221","pc":[573,574]},{"teal":601,"source":"contracts/validatorRegistry.algo.ts:221","pc":[575]},{"teal":602,"source":"contracts/validatorRegistry.algo.ts:221","pc":[576]},{"teal":603,"source":"contracts/validatorRegistry.algo.ts:215","pc":[577]},{"teal":608,"source":"contracts/validatorRegistry.algo.ts:224","pc":[578]},{"teal":611,"source":"contracts/validatorRegistry.algo.ts:225","pc":[579,580,581]},{"teal":612,"source":"contracts/validatorRegistry.algo.ts:225","pc":[582]},{"teal":613,"source":"contracts/validatorRegistry.algo.ts:225","pc":[583]},{"teal":614,"source":"contracts/validatorRegistry.algo.ts:225","pc":[584]},{"teal":615,"source":"contracts/validatorRegistry.algo.ts:225","pc":[585]},{"teal":618,"source":"contracts/validatorRegistry.algo.ts:225","errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[586]},{"teal":621,"source":"contracts/validatorRegistry.algo.ts:224","pc":[587,588,589]},{"teal":622,"source":"contracts/validatorRegistry.algo.ts:224","pc":[590]},{"teal":623,"source":"contracts/validatorRegistry.algo.ts:224","pc":[591]},{"teal":624,"source":"contracts/validatorRegistry.algo.ts:224","pc":[592]},{"teal":625,"source":"contracts/validatorRegistry.algo.ts:224","pc":[593]},{"teal":629,"source":"contracts/validatorRegistry.algo.ts:224","pc":[594,595,596]},{"teal":633,"source":"contracts/validatorRegistry.algo.ts:226","pc":[597,598]},{"teal":634,"source":"contracts/validatorRegistry.algo.ts:226","pc":[599,600]},{"teal":635,"source":"contracts/validatorRegistry.algo.ts:226","pc":[601,602,603]},{"teal":636,"source":"contracts/validatorRegistry.algo.ts:226","pc":[604]},{"teal":637,"source":"contracts/validatorRegistry.algo.ts:226","pc":[605]},{"teal":638,"source":"contracts/validatorRegistry.algo.ts:226","pc":[606]},{"teal":639,"source":"contracts/validatorRegistry.algo.ts:226","pc":[607,608]},{"teal":640,"source":"contracts/validatorRegistry.algo.ts:226","pc":[609]},{"teal":641,"source":"contracts/validatorRegistry.algo.ts:226","pc":[610]},{"teal":642,"source":"contracts/validatorRegistry.algo.ts:226","pc":[611,612]},{"teal":643,"source":"contracts/validatorRegistry.algo.ts:226","pc":[613]},{"teal":644,"source":"contracts/validatorRegistry.algo.ts:226","pc":[614,615]},{"teal":645,"source":"contracts/validatorRegistry.algo.ts:226","pc":[616,617,618]},{"teal":646,"source":"contracts/validatorRegistry.algo.ts:226","pc":[619]},{"teal":647,"source":"contracts/validatorRegistry.algo.ts:226","pc":[620]},{"teal":648,"source":"contracts/validatorRegistry.algo.ts:226","pc":[621]},{"teal":649,"source":"contracts/validatorRegistry.algo.ts:226","pc":[622,623]},{"teal":650,"source":"contracts/validatorRegistry.algo.ts:226","pc":[624]},{"teal":651,"source":"contracts/validatorRegistry.algo.ts:224","pc":[625]},{"teal":656,"source":"contracts/validatorRegistry.algo.ts:236","pc":[626]},{"teal":659,"source":"contracts/validatorRegistry.algo.ts:237","pc":[627,628,629]},{"teal":660,"source":"contracts/validatorRegistry.algo.ts:237","pc":[630]},{"teal":663,"source":"contracts/validatorRegistry.algo.ts:236","pc":[631,632,633]},{"teal":664,"source":"contracts/validatorRegistry.algo.ts:236","pc":[634]},{"teal":665,"source":"contracts/validatorRegistry.algo.ts:236","pc":[635]},{"teal":666,"source":"contracts/validatorRegistry.algo.ts:236","pc":[636]},{"teal":667,"source":"contracts/validatorRegistry.algo.ts:236","pc":[637]},{"teal":668,"source":"contracts/validatorRegistry.algo.ts:236","pc":[638]},{"teal":678,"source":"contracts/validatorRegistry.algo.ts:236","pc":[639,640,641]},{"teal":681,"source":"contracts/validatorRegistry.algo.ts:236","pc":[642]},{"teal":682,"source":"contracts/validatorRegistry.algo.ts:236","pc":[643,644]},{"teal":686,"source":"contracts/validatorRegistry.algo.ts:238","pc":[645,646]},{"teal":687,"source":"contracts/validatorRegistry.algo.ts:238","pc":[647,648]},{"teal":688,"source":"contracts/validatorRegistry.algo.ts:238","pc":[649]},{"teal":689,"source":"contracts/validatorRegistry.algo.ts:238","pc":[650,651]},{"teal":690,"source":"contracts/validatorRegistry.algo.ts:238","pc":[652]},{"teal":691,"source":"contracts/validatorRegistry.algo.ts:238","pc":[653]},{"teal":692,"source":"contracts/validatorRegistry.algo.ts:238","pc":[654,655]},{"teal":693,"source":"contracts/validatorRegistry.algo.ts:238","pc":[656]},{"teal":694,"source":"contracts/validatorRegistry.algo.ts:238","pc":[657]},{"teal":695,"source":"contracts/validatorRegistry.algo.ts:238","pc":[658,659]},{"teal":699,"source":"contracts/validatorRegistry.algo.ts:239","pc":[660,661,662]},{"teal":700,"source":"contracts/validatorRegistry.algo.ts:239","pc":[663,664]},{"teal":701,"source":"contracts/validatorRegistry.algo.ts:239","pc":[665]},{"teal":702,"source":"contracts/validatorRegistry.algo.ts:239","pc":[666,667]},{"teal":706,"source":"contracts/validatorRegistry.algo.ts:240","pc":[668,669,670]},{"teal":707,"source":"contracts/validatorRegistry.algo.ts:240","pc":[671]},{"teal":708,"source":"contracts/validatorRegistry.algo.ts:240","pc":[672]},{"teal":709,"source":"contracts/validatorRegistry.algo.ts:240","pc":[673,674]},{"teal":710,"source":"contracts/validatorRegistry.algo.ts:240","pc":[675]},{"teal":711,"source":"contracts/validatorRegistry.algo.ts:240","pc":[676]},{"teal":712,"source":"contracts/validatorRegistry.algo.ts:240","pc":[677,678]},{"teal":713,"source":"contracts/validatorRegistry.algo.ts:240","pc":[679]},{"teal":714,"source":"contracts/validatorRegistry.algo.ts:240","pc":[680]},{"teal":715,"source":"contracts/validatorRegistry.algo.ts:240","pc":[681,682]},{"teal":720,"source":"contracts/validatorRegistry.algo.ts:241","pc":[683,684]},{"teal":721,"source":"contracts/validatorRegistry.algo.ts:241","pc":[685]},{"teal":722,"source":"contracts/validatorRegistry.algo.ts:241","pc":[686]},{"teal":723,"source":"contracts/validatorRegistry.algo.ts:241","pc":[687,688,689]},{"teal":728,"source":"contracts/validatorRegistry.algo.ts:242","pc":[690,691,692]},{"teal":729,"source":"contracts/validatorRegistry.algo.ts:242","pc":[693,694]},{"teal":735,"source":"contracts/validatorRegistry.algo.ts:244","pc":[695,696]},{"teal":736,"source":"contracts/validatorRegistry.algo.ts:244","pc":[697,698]},{"teal":737,"source":"contracts/validatorRegistry.algo.ts:244","pc":[699]},{"teal":738,"source":"contracts/validatorRegistry.algo.ts:244","pc":[700,701,702]},{"teal":743,"source":"contracts/validatorRegistry.algo.ts:245","pc":[703,704]},{"teal":744,"source":"contracts/validatorRegistry.algo.ts:245","pc":[705,706]},{"teal":749,"source":"contracts/validatorRegistry.algo.ts:247","pc":[707,708]},{"teal":752,"source":"contracts/validatorRegistry.algo.ts:236","pc":[709,710]},{"teal":755,"source":"contracts/validatorRegistry.algo.ts:236","pc":[711,712]},{"teal":756,"source":"contracts/validatorRegistry.algo.ts:236","pc":[713]},{"teal":761,"source":"contracts/validatorRegistry.algo.ts:254","pc":[714]},{"teal":764,"source":"contracts/validatorRegistry.algo.ts:255","pc":[715,716,717]},{"teal":765,"source":"contracts/validatorRegistry.algo.ts:255","pc":[718]},{"teal":766,"source":"contracts/validatorRegistry.algo.ts:255","pc":[719]},{"teal":767,"source":"contracts/validatorRegistry.algo.ts:255","pc":[720,721]},{"teal":768,"source":"contracts/validatorRegistry.algo.ts:255","pc":[722]},{"teal":771,"source":"contracts/validatorRegistry.algo.ts:255","errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[723]},{"teal":774,"source":"contracts/validatorRegistry.algo.ts:254","pc":[724,725,726]},{"teal":775,"source":"contracts/validatorRegistry.algo.ts:254","pc":[727,728]},{"teal":776,"source":"contracts/validatorRegistry.algo.ts:254","pc":[729]},{"teal":777,"source":"contracts/validatorRegistry.algo.ts:254","pc":[730,731]},{"teal":778,"source":"contracts/validatorRegistry.algo.ts:254","pc":[732]},{"teal":779,"source":"contracts/validatorRegistry.algo.ts:254","pc":[733]},{"teal":780,"source":"contracts/validatorRegistry.algo.ts:254","pc":[734]},{"teal":781,"source":"contracts/validatorRegistry.algo.ts:254","pc":[735]},{"teal":782,"source":"contracts/validatorRegistry.algo.ts:254","pc":[736]},{"teal":789,"source":"contracts/validatorRegistry.algo.ts:254","pc":[737,738,739]},{"teal":793,"source":"contracts/validatorRegistry.algo.ts:256","pc":[740]},{"teal":794,"source":"contracts/validatorRegistry.algo.ts:256","pc":[741,742]},{"teal":795,"source":"contracts/validatorRegistry.algo.ts:256","pc":[743]},{"teal":796,"source":"contracts/validatorRegistry.algo.ts:256","pc":[744]},{"teal":797,"source":"contracts/validatorRegistry.algo.ts:256","pc":[745]},{"teal":798,"source":"contracts/validatorRegistry.algo.ts:256","pc":[746]},{"teal":799,"source":"contracts/validatorRegistry.algo.ts:256","pc":[747]},{"teal":800,"source":"contracts/validatorRegistry.algo.ts:254","pc":[748]},{"teal":805,"source":"contracts/validatorRegistry.algo.ts:265","pc":[749]},{"teal":808,"source":"contracts/validatorRegistry.algo.ts:266","pc":[750,751,752]},{"teal":809,"source":"contracts/validatorRegistry.algo.ts:266","pc":[753]},{"teal":810,"source":"contracts/validatorRegistry.algo.ts:266","pc":[754]},{"teal":811,"source":"contracts/validatorRegistry.algo.ts:266","pc":[755,756]},{"teal":812,"source":"contracts/validatorRegistry.algo.ts:266","pc":[757]},{"teal":815,"source":"contracts/validatorRegistry.algo.ts:266","errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[758]},{"teal":818,"source":"contracts/validatorRegistry.algo.ts:265","pc":[759,760,761]},{"teal":819,"source":"contracts/validatorRegistry.algo.ts:265","pc":[762]},{"teal":820,"source":"contracts/validatorRegistry.algo.ts:265","pc":[763]},{"teal":821,"source":"contracts/validatorRegistry.algo.ts:265","pc":[764]},{"teal":822,"source":"contracts/validatorRegistry.algo.ts:265","pc":[765]},{"teal":823,"source":"contracts/validatorRegistry.algo.ts:265","pc":[766]},{"teal":824,"source":"contracts/validatorRegistry.algo.ts:265","pc":[767,768,769]},{"teal":825,"source":"contracts/validatorRegistry.algo.ts:265","pc":[770]},{"teal":826,"source":"contracts/validatorRegistry.algo.ts:265","pc":[771]},{"teal":827,"source":"contracts/validatorRegistry.algo.ts:265","pc":[772]},{"teal":828,"source":"contracts/validatorRegistry.algo.ts:265","pc":[773]},{"teal":829,"source":"contracts/validatorRegistry.algo.ts:265","pc":[774]},{"teal":830,"source":"contracts/validatorRegistry.algo.ts:265","pc":[775]},{"teal":839,"source":"contracts/validatorRegistry.algo.ts:265","pc":[776,777,778]},{"teal":842,"source":"contracts/validatorRegistry.algo.ts:265","pc":[779]},{"teal":843,"source":"contracts/validatorRegistry.algo.ts:265","pc":[780,781]},{"teal":848,"source":"contracts/validatorRegistry.algo.ts:267","pc":[782]},{"teal":849,"source":"contracts/validatorRegistry.algo.ts:267","pc":[783,784]},{"teal":850,"source":"contracts/validatorRegistry.algo.ts:267","pc":[785]},{"teal":851,"source":"contracts/validatorRegistry.algo.ts:267","pc":[786]},{"teal":852,"source":"contracts/validatorRegistry.algo.ts:267","pc":[787]},{"teal":853,"source":"contracts/validatorRegistry.algo.ts:267","pc":[788]},{"teal":854,"source":"contracts/validatorRegistry.algo.ts:267","pc":[789]},{"teal":855,"source":"contracts/validatorRegistry.algo.ts:267","pc":[790,791,792]},{"teal":860,"source":"contracts/validatorRegistry.algo.ts:268","pc":[793]},{"teal":861,"source":"contracts/validatorRegistry.algo.ts:268","pc":[794,795,796]},{"teal":866,"source":"contracts/validatorRegistry.algo.ts:270","pc":[797]},{"teal":867,"source":"contracts/validatorRegistry.algo.ts:270","pc":[798,799]},{"teal":871,"source":"contracts/validatorRegistry.algo.ts:271","pc":[800]},{"teal":872,"source":"contracts/validatorRegistry.algo.ts:271","pc":[801,802]},{"teal":873,"source":"contracts/validatorRegistry.algo.ts:271","pc":[803]},{"teal":874,"source":"contracts/validatorRegistry.algo.ts:271","pc":[804]},{"teal":877,"source":"contracts/validatorRegistry.algo.ts:271","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[805]},{"teal":878,"source":"contracts/validatorRegistry.algo.ts:271","pc":[806,807]},{"teal":882,"source":"contracts/validatorRegistry.algo.ts:272","pc":[808]},{"teal":883,"source":"contracts/validatorRegistry.algo.ts:272","pc":[809,810]},{"teal":888,"source":"contracts/validatorRegistry.algo.ts:272","pc":[811,812]},{"teal":889,"source":"contracts/validatorRegistry.algo.ts:272","pc":[813,814]},{"teal":890,"source":"contracts/validatorRegistry.algo.ts:272","pc":[815]},{"teal":891,"source":"contracts/validatorRegistry.algo.ts:272","pc":[816,817,818]},{"teal":896,"source":"contracts/validatorRegistry.algo.ts:273","pc":[819,820]},{"teal":897,"source":"contracts/validatorRegistry.algo.ts:273","pc":[821,822]},{"teal":898,"source":"contracts/validatorRegistry.algo.ts:273","pc":[823]},{"teal":899,"source":"contracts/validatorRegistry.algo.ts:273","pc":[824]},{"teal":900,"source":"contracts/validatorRegistry.algo.ts:273","pc":[825]},{"teal":901,"source":"contracts/validatorRegistry.algo.ts:273","pc":[826]},{"teal":902,"source":"contracts/validatorRegistry.algo.ts:273","pc":[827]},{"teal":903,"source":"contracts/validatorRegistry.algo.ts:273","pc":[828]},{"teal":904,"source":"contracts/validatorRegistry.algo.ts:273","pc":[829]},{"teal":905,"source":"contracts/validatorRegistry.algo.ts:273","pc":[830]},{"teal":906,"source":"contracts/validatorRegistry.algo.ts:273","pc":[831]},{"teal":907,"source":"contracts/validatorRegistry.algo.ts:273","pc":[832,833,834]},{"teal":912,"source":"contracts/validatorRegistry.algo.ts:274","pc":[835,836]},{"teal":913,"source":"contracts/validatorRegistry.algo.ts:274","pc":[837,838]},{"teal":914,"source":"contracts/validatorRegistry.algo.ts:274","pc":[839,840]},{"teal":915,"source":"contracts/validatorRegistry.algo.ts:274","pc":[841]},{"teal":916,"source":"contracts/validatorRegistry.algo.ts:274","pc":[842]},{"teal":917,"source":"contracts/validatorRegistry.algo.ts:274","pc":[843]},{"teal":918,"source":"contracts/validatorRegistry.algo.ts:274","pc":[844]},{"teal":919,"source":"contracts/validatorRegistry.algo.ts:274","pc":[845]},{"teal":920,"source":"contracts/validatorRegistry.algo.ts:274","pc":[846,847]},{"teal":927,"source":"contracts/validatorRegistry.algo.ts:272","pc":[848,849]},{"teal":928,"source":"contracts/validatorRegistry.algo.ts:272","pc":[850]},{"teal":929,"source":"contracts/validatorRegistry.algo.ts:272","pc":[851]},{"teal":930,"source":"contracts/validatorRegistry.algo.ts:272","pc":[852,853]},{"teal":931,"source":"contracts/validatorRegistry.algo.ts:272","pc":[854,855,856]},{"teal":936,"source":"contracts/validatorRegistry.algo.ts:277","pc":[857,858]},{"teal":940,"source":"contracts/validatorRegistry.algo.ts:265","pc":[859,860]},{"teal":943,"source":"contracts/validatorRegistry.algo.ts:265","pc":[861,862]},{"teal":944,"source":"contracts/validatorRegistry.algo.ts:265","pc":[863]},{"teal":949,"source":"contracts/validatorRegistry.algo.ts:287","pc":[864]},{"teal":952,"source":"contracts/validatorRegistry.algo.ts:288","pc":[865,866,867]},{"teal":953,"source":"contracts/validatorRegistry.algo.ts:288","pc":[868]},{"teal":956,"source":"contracts/validatorRegistry.algo.ts:287","pc":[869,870,871]},{"teal":957,"source":"contracts/validatorRegistry.algo.ts:287","pc":[872]},{"teal":958,"source":"contracts/validatorRegistry.algo.ts:287","pc":[873]},{"teal":959,"source":"contracts/validatorRegistry.algo.ts:287","pc":[874]},{"teal":960,"source":"contracts/validatorRegistry.algo.ts:287","pc":[875]},{"teal":970,"source":"contracts/validatorRegistry.algo.ts:287","pc":[876,877,878]},{"teal":974,"source":"contracts/validatorRegistry.algo.ts:289","pc":[879,880]},{"teal":975,"source":"contracts/validatorRegistry.algo.ts:289","pc":[881,882]},{"teal":976,"source":"contracts/validatorRegistry.algo.ts:289","pc":[883]},{"teal":977,"source":"contracts/validatorRegistry.algo.ts:289","pc":[884,885]},{"teal":978,"source":"contracts/validatorRegistry.algo.ts:289","pc":[886]},{"teal":979,"source":"contracts/validatorRegistry.algo.ts:289","pc":[887]},{"teal":980,"source":"contracts/validatorRegistry.algo.ts:289","pc":[888,889]},{"teal":981,"source":"contracts/validatorRegistry.algo.ts:289","pc":[890]},{"teal":982,"source":"contracts/validatorRegistry.algo.ts:287","pc":[891]},{"teal":987,"source":"contracts/validatorRegistry.algo.ts:292","pc":[892]},{"teal":990,"source":"contracts/validatorRegistry.algo.ts:293","pc":[893,894,895]},{"teal":991,"source":"contracts/validatorRegistry.algo.ts:293","pc":[896]},{"teal":994,"source":"contracts/validatorRegistry.algo.ts:292","pc":[897,898,899]},{"teal":995,"source":"contracts/validatorRegistry.algo.ts:292","pc":[900]},{"teal":996,"source":"contracts/validatorRegistry.algo.ts:292","pc":[901]},{"teal":997,"source":"contracts/validatorRegistry.algo.ts:292","pc":[902]},{"teal":998,"source":"contracts/validatorRegistry.algo.ts:292","pc":[903]},{"teal":1002,"source":"contracts/validatorRegistry.algo.ts:292","pc":[904,905,906]},{"teal":1006,"source":"contracts/validatorRegistry.algo.ts:294","pc":[907]},{"teal":1007,"source":"contracts/validatorRegistry.algo.ts:294","pc":[908,909]},{"teal":1008,"source":"contracts/validatorRegistry.algo.ts:294","pc":[910]},{"teal":1009,"source":"contracts/validatorRegistry.algo.ts:294","pc":[911]},{"teal":1010,"source":"contracts/validatorRegistry.algo.ts:294","pc":[912]},{"teal":1011,"source":"contracts/validatorRegistry.algo.ts:294","pc":[913]},{"teal":1012,"source":"contracts/validatorRegistry.algo.ts:294","pc":[914]},{"teal":1015,"source":"contracts/validatorRegistry.algo.ts:294","errorMessage":"the specified validator id doesn't exist","pc":[915]},{"teal":1019,"source":"contracts/validatorRegistry.algo.ts:296","pc":[916,917]},{"teal":1020,"source":"contracts/validatorRegistry.algo.ts:296","pc":[918,919]},{"teal":1021,"source":"contracts/validatorRegistry.algo.ts:296","pc":[920]},{"teal":1022,"source":"contracts/validatorRegistry.algo.ts:296","pc":[921,922]},{"teal":1023,"source":"contracts/validatorRegistry.algo.ts:296","pc":[923]},{"teal":1024,"source":"contracts/validatorRegistry.algo.ts:296","pc":[924]},{"teal":1025,"source":"contracts/validatorRegistry.algo.ts:296","pc":[925,926]},{"teal":1026,"source":"contracts/validatorRegistry.algo.ts:296","pc":[927]},{"teal":1027,"source":"contracts/validatorRegistry.algo.ts:292","pc":[928]},{"teal":1032,"source":"contracts/validatorRegistry.algo.ts:299","pc":[929]},{"teal":1035,"source":"contracts/validatorRegistry.algo.ts:299","pc":[930,931,932]},{"teal":1036,"source":"contracts/validatorRegistry.algo.ts:299","pc":[933]},{"teal":1037,"source":"contracts/validatorRegistry.algo.ts:299","pc":[934]},{"teal":1038,"source":"contracts/validatorRegistry.algo.ts:299","pc":[935]},{"teal":1039,"source":"contracts/validatorRegistry.algo.ts:299","pc":[936]},{"teal":1040,"source":"contracts/validatorRegistry.algo.ts:299","pc":[937]},{"teal":1044,"source":"contracts/validatorRegistry.algo.ts:299","pc":[938,939,940]},{"teal":1048,"source":"contracts/validatorRegistry.algo.ts:301","pc":[941,942]},{"teal":1049,"source":"contracts/validatorRegistry.algo.ts:299","pc":[943]},{"teal":1054,"source":"contracts/validatorRegistry.algo.ts:312","pc":[944]},{"teal":1057,"source":"contracts/validatorRegistry.algo.ts:312","pc":[945,946,947]},{"teal":1058,"source":"contracts/validatorRegistry.algo.ts:312","pc":[948]},{"teal":1059,"source":"contracts/validatorRegistry.algo.ts:312","pc":[949]},{"teal":1060,"source":"contracts/validatorRegistry.algo.ts:312","pc":[950,951]},{"teal":1061,"source":"contracts/validatorRegistry.algo.ts:312","pc":[952]},{"teal":1064,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[953]},{"teal":1067,"source":"contracts/validatorRegistry.algo.ts:312","pc":[954,955,956]},{"teal":1068,"source":"contracts/validatorRegistry.algo.ts:312","pc":[957,958,959]},{"teal":1071,"source":"contracts/validatorRegistry.algo.ts:312","pc":[960,961]},{"teal":1072,"source":"contracts/validatorRegistry.algo.ts:312","pc":[962]},{"teal":1073,"source":"contracts/validatorRegistry.algo.ts:312","pc":[963]},{"teal":1074,"source":"contracts/validatorRegistry.algo.ts:312","pc":[964]},{"teal":1075,"source":"contracts/validatorRegistry.algo.ts:312","pc":[965,966]},{"teal":1076,"source":"contracts/validatorRegistry.algo.ts:312","pc":[967]},{"teal":1077,"source":"contracts/validatorRegistry.algo.ts:312","pc":[968]},{"teal":1080,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[969]},{"teal":1083,"source":"contracts/validatorRegistry.algo.ts:312","pc":[970,971,972]},{"teal":1084,"source":"contracts/validatorRegistry.algo.ts:312","pc":[973]},{"teal":1085,"source":"contracts/validatorRegistry.algo.ts:312","pc":[974]},{"teal":1086,"source":"contracts/validatorRegistry.algo.ts:312","pc":[975]},{"teal":1087,"source":"contracts/validatorRegistry.algo.ts:312","pc":[976]},{"teal":1088,"source":"contracts/validatorRegistry.algo.ts:312","pc":[977]},{"teal":1100,"source":"contracts/validatorRegistry.algo.ts:312","pc":[978,979,980]},{"teal":1103,"source":"contracts/validatorRegistry.algo.ts:312","pc":[981]},{"teal":1107,"source":"contracts/validatorRegistry.algo.ts:313","pc":[982,983]},{"teal":1108,"source":"contracts/validatorRegistry.algo.ts:313","pc":[984,985,986]},{"teal":1113,"source":"contracts/validatorRegistry.algo.ts:315","pc":[987,988]},{"teal":1114,"source":"contracts/validatorRegistry.algo.ts:315","pc":[989,990]},{"teal":1115,"source":"contracts/validatorRegistry.algo.ts:315","pc":[991,992]},{"teal":1116,"source":"contracts/validatorRegistry.algo.ts:315","pc":[993]},{"teal":1119,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[994]},{"teal":1122,"source":"contracts/validatorRegistry.algo.ts:315","pc":[995,996]},{"teal":1123,"source":"contracts/validatorRegistry.algo.ts:315","pc":[997,998]},{"teal":1124,"source":"contracts/validatorRegistry.algo.ts:315","pc":[999,1000,1001]},{"teal":1125,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1002,1003,1004]},{"teal":1126,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1005]},{"teal":1127,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1006]},{"teal":1130,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1007]},{"teal":1134,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1008,1009]},{"teal":1135,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1010,1011]},{"teal":1136,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1012,1013,1014,1015,1016]},{"teal":1137,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1017]},{"teal":1140,"source":"contracts/validatorRegistry.algo.ts:317","errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1018]},{"teal":1144,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1019,1020]},{"teal":1145,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1021]},{"teal":1146,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1022]},{"teal":1147,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1023]},{"teal":1148,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1024,1025]},{"teal":1152,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1026,1027]},{"teal":1153,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1028,1029]},{"teal":1154,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1030]},{"teal":1158,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1031]},{"teal":1159,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1032,1033]},{"teal":1160,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1034]},{"teal":1161,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1035]},{"teal":1162,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1036,1037,1038]},{"teal":1163,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1039]},{"teal":1164,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1040]},{"teal":1168,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1041]},{"teal":1169,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1042,1043]},{"teal":1170,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1044]},{"teal":1171,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1045,1046]},{"teal":1172,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1047]},{"teal":1173,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1048]},{"teal":1174,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1049,1050]},{"teal":1175,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1051]},{"teal":1179,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1052]},{"teal":1180,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1053,1054]},{"teal":1181,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1055]},{"teal":1182,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1056]},{"teal":1183,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1057,1058]},{"teal":1184,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1059]},{"teal":1185,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1060]},{"teal":1186,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1061,1062]},{"teal":1187,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1063]},{"teal":1192,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1064,1065]},{"teal":1193,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1066,1067,1068]},{"teal":1194,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1069]},{"teal":1195,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1070]},{"teal":1196,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1071]},{"teal":1197,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1072,1073,1074]},{"teal":1202,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1075,1076]},{"teal":1203,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1077,1078,1079]},{"teal":1204,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1080]},{"teal":1205,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1081,1082,1083]},{"teal":1208,"source":"contracts/validatorRegistry.algo.ts:330","errorMessage":"provided NFD must be valid","pc":[1084]},{"teal":1215,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1085,1086]},{"teal":1216,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1087,1088]},{"teal":1217,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1089,1090,1091]},{"teal":1218,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1092]},{"teal":1219,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1093,1094]},{"teal":1220,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1095]},{"teal":1223,"source":"contracts/validatorRegistry.algo.ts:333","errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1096]},{"teal":1224,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1097]},{"teal":1227,"source":"contracts/validatorRegistry.algo.ts:332","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1098]},{"teal":1234,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1099,1100]},{"teal":1235,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1101,1102,1103]},{"teal":1236,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1104]},{"teal":1237,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1105,1106]},{"teal":1238,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1107]},{"teal":1239,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1108]},{"teal":1240,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1109,1110,1111]},{"teal":1241,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1112,1113]},{"teal":1242,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1114,1115,1116]},{"teal":1243,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1117]},{"teal":1244,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1118,1119]},{"teal":1245,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1120]},{"teal":1246,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1121]},{"teal":1249,"source":"contracts/validatorRegistry.algo.ts:337","pc":[1122,1123,1124]},{"teal":1257,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1125,1126]},{"teal":1258,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1127,1128,1129]},{"teal":1259,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1130]},{"teal":1260,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1131,1132,1133]},{"teal":1263,"source":"contracts/validatorRegistry.algo.ts:342","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1134]},{"teal":1268,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1135,1136,1137,1138,1139,1140]},{"teal":1269,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1141,1142]},{"teal":1270,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1143]},{"teal":1271,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1144,1145]},{"teal":1272,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1146,1147,1148]},{"teal":1273,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1149]},{"teal":1274,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1150,1151]},{"teal":1275,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1152,1153,1154]},{"teal":1276,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1155]},{"teal":1277,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1156]},{"teal":1278,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1157]},{"teal":1282,"source":"contracts/validatorRegistry.algo.ts:348","pc":[1158,1159]},{"teal":1285,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1160,1161]},{"teal":1286,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1162]},{"teal":1291,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1163,1164,1165]},{"teal":1292,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1166]},{"teal":1293,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1167]},{"teal":1294,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1168,1169]},{"teal":1295,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1170]},{"teal":1298,"source":"contracts/validatorRegistry.algo.ts:358","errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1171]},{"teal":1301,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1172,1173,1174]},{"teal":1302,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1175]},{"teal":1305,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1176,1177,1178]},{"teal":1306,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1179]},{"teal":1307,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1180]},{"teal":1317,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1181,1182,1183]},{"teal":1321,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1184,1185]},{"teal":1322,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1186,1187,1188]},{"teal":1326,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1189,1190]},{"teal":1327,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1191,1192]},{"teal":1328,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1193]},{"teal":1331,"source":"contracts/validatorRegistry.algo.ts:360","errorMessage":"needs to at least be valid address","pc":[1194]},{"teal":1335,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1195,1196]},{"teal":1336,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1197,1198]},{"teal":1337,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1199]},{"teal":1338,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1200,1201]},{"teal":1339,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1202]},{"teal":1340,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1203]},{"teal":1341,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1204,1205]},{"teal":1342,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1206]},{"teal":1343,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1207]},{"teal":1348,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1208,1209,1210]},{"teal":1349,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1211]},{"teal":1352,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1212,1213,1214]},{"teal":1353,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1215]},{"teal":1356,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1216,1217,1218]},{"teal":1357,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1219]},{"teal":1360,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1220,1221,1222]},{"teal":1361,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1223]},{"teal":1362,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1224]},{"teal":1373,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1225,1226,1227]},{"teal":1377,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1228,1229]},{"teal":1378,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1230,1231,1232]},{"teal":1382,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1233,1234]},{"teal":1383,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1235,1236]},{"teal":1384,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1237]},{"teal":1385,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1238]},{"teal":1386,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1239,1240]},{"teal":1387,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1241]},{"teal":1388,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1242]},{"teal":1389,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1243,1244]},{"teal":1390,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1245]},{"teal":1394,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1246,1247,1248]},{"teal":1395,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1249,1250]},{"teal":1396,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1251]},{"teal":1397,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1252]},{"teal":1398,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1253,1254]},{"teal":1399,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1255]},{"teal":1400,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1256]},{"teal":1401,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1257,1258]},{"teal":1402,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1259]},{"teal":1403,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1260]},{"teal":1408,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1261,1262,1263]},{"teal":1409,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1264,1265,1266]},{"teal":1412,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1267,1268,1269]},{"teal":1413,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1270]},{"teal":1416,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1271,1272,1273]},{"teal":1417,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1274]},{"teal":1420,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1275,1276,1277]},{"teal":1421,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1278]},{"teal":1422,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1279]},{"teal":1433,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1280,1281,1282]},{"teal":1437,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1283,1284]},{"teal":1438,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1285,1286,1287]},{"teal":1442,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1288,1289]},{"teal":1443,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1290,1291,1292]},{"teal":1446,"source":"contracts/validatorRegistry.algo.ts:389","errorMessage":"provided NFD must be valid","pc":[1293]},{"teal":1453,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1294,1295]},{"teal":1454,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1296,1297]},{"teal":1455,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1298,1299]},{"teal":1456,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1300]},{"teal":1459,"source":"contracts/validatorRegistry.algo.ts:392","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1301]},{"teal":1460,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1302]},{"teal":1463,"source":"contracts/validatorRegistry.algo.ts:391","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1303]},{"teal":1467,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1304,1305]},{"teal":1468,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1306,1307]},{"teal":1469,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1308]},{"teal":1470,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1309]},{"teal":1471,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1310,1311]},{"teal":1472,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1312]},{"teal":1473,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1313]},{"teal":1474,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1314,1315]},{"teal":1475,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1316]},{"teal":1476,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1317]},{"teal":1481,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1318,1319,1320]},{"teal":1482,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1321]},{"teal":1483,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1322]},{"teal":1484,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1323,1324]},{"teal":1485,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1325]},{"teal":1488,"source":"contracts/validatorRegistry.algo.ts:402","errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1326]},{"teal":1491,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1327,1328,1329]},{"teal":1492,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1330]},{"teal":1495,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1331,1332,1333]},{"teal":1496,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1334]},{"teal":1497,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1335]},{"teal":1504,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1336,1337,1338]},{"teal":1508,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1339,1340]},{"teal":1509,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1341,1342,1343]},{"teal":1513,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1344,1345]},{"teal":1514,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1346,1347]},{"teal":1515,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1348]},{"teal":1516,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1349]},{"teal":1520,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1350,1351,1352]},{"teal":1521,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1353,1354]},{"teal":1522,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1355]},{"teal":1523,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1356,1357]},{"teal":1524,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1358]},{"teal":1525,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1359]},{"teal":1526,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1360,1361]},{"teal":1527,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1362]},{"teal":1528,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1363]},{"teal":1533,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1364,1365,1366]},{"teal":1534,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1367]},{"teal":1537,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1368,1369,1370]},{"teal":1538,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1371]},{"teal":1541,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1372,1373,1374]},{"teal":1542,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1375]},{"teal":1543,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1376]},{"teal":1544,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1377,1378]},{"teal":1545,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1379]},{"teal":1548,"source":"contracts/validatorRegistry.algo.ts:416","errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1380]},{"teal":1551,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1381,1382,1383]},{"teal":1552,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1384]},{"teal":1553,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1385]},{"teal":1554,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1386,1387]},{"teal":1555,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1388]},{"teal":1558,"source":"contracts/validatorRegistry.algo.ts:415","errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1389]},{"teal":1561,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1390,1391,1392]},{"teal":1562,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1393]},{"teal":1563,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1394]},{"teal":1564,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1395]},{"teal":1565,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1396]},{"teal":1568,"source":"contracts/validatorRegistry.algo.ts:414","errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1397]},{"teal":1569,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1398]},{"teal":1572,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1399,1400,1401]},{"teal":1573,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1402]},{"teal":1576,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1403,1404,1405]},{"teal":1577,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1406]},{"teal":1578,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1407]},{"teal":1585,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1408,1409,1410]},{"teal":1589,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1411,1412]},{"teal":1590,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1413,1414,1415]},{"teal":1597,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1416,1417]},{"teal":1598,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1418]},{"teal":1599,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1419]},{"teal":1600,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1420]},{"teal":1601,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1421,1422,1423]},{"teal":1602,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1424,1425]},{"teal":1603,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1426,1427]},{"teal":1604,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1428]},{"teal":1605,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1429]},{"teal":1609,"source":"contracts/validatorRegistry.algo.ts:422","errorMessage":"invalid Entry gating type","pc":[1430]},{"teal":1614,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1431,1432]},{"teal":1615,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1433]},{"teal":1616,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1434]},{"teal":1617,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1435,1436,1437]},{"teal":1622,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1438,1439]},{"teal":1623,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1440,1441]},{"teal":1624,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1442]},{"teal":1625,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1443]},{"teal":1632,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1444,1445]},{"teal":1633,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1446,1447]},{"teal":1634,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1448]},{"teal":1635,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1449]},{"teal":1636,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1450,1451,1452]},{"teal":1637,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1453,1454]},{"teal":1638,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1455,1456]},{"teal":1639,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1457]},{"teal":1640,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1458]},{"teal":1643,"source":"contracts/validatorRegistry.algo.ts:429","pc":[1459,1460,1461]},{"teal":1648,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1462,1463]},{"teal":1649,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1464,1465,1466]},{"teal":1650,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1467]},{"teal":1651,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1468,1469,1470]},{"teal":1654,"source":"contracts/validatorRegistry.algo.ts:433","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1471]},{"teal":1659,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1472,1473]},{"teal":1660,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1474,1475]},{"teal":1661,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1476]},{"teal":1662,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1477,1478,1479]},{"teal":1663,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1480]},{"teal":1664,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1481,1482]},{"teal":1665,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1483]},{"teal":1666,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1484]},{"teal":1667,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1485,1486]},{"teal":1668,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1487]},{"teal":1672,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1488,1489]},{"teal":1673,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1490,1491]},{"teal":1674,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1492]},{"teal":1675,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1493,1494]},{"teal":1676,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1495]},{"teal":1677,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1496]},{"teal":1678,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1497,1498]},{"teal":1679,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1499]},{"teal":1683,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1500,1501]},{"teal":1684,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1502,1503]},{"teal":1685,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1504]},{"teal":1686,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1505,1506]},{"teal":1687,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1507]},{"teal":1688,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1508]},{"teal":1689,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1509,1510]},{"teal":1690,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1511]},{"teal":1694,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1512,1513]},{"teal":1695,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1514,1515]},{"teal":1696,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1516]},{"teal":1697,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1517]},{"teal":1698,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1518,1519]},{"teal":1699,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1520]},{"teal":1700,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1521]},{"teal":1701,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1522,1523]},{"teal":1702,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1524]},{"teal":1706,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1525,1526,1527]},{"teal":1707,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1528,1529]},{"teal":1708,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1530]},{"teal":1709,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1531]},{"teal":1710,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1532,1533]},{"teal":1711,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1534]},{"teal":1712,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1535]},{"teal":1713,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1536,1537]},{"teal":1714,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1538]},{"teal":1715,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1539]},{"teal":1720,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1540]},{"teal":1723,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1541,1542,1543]},{"teal":1724,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1544]},{"teal":1727,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1545,1546,1547]},{"teal":1728,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1548]},{"teal":1731,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1549,1550]},{"teal":1732,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1551]},{"teal":1733,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1552]},{"teal":1734,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1553]},{"teal":1735,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1554,1555]},{"teal":1736,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1556]},{"teal":1737,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1557]},{"teal":1740,"source":"contracts/validatorRegistry.algo.ts:453","errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1558]},{"teal":1743,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1559,1560,1561]},{"teal":1744,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1562]},{"teal":1745,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1563]},{"teal":1746,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1564]},{"teal":1747,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1565]},{"teal":1760,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1566,1567,1568]},{"teal":1763,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1569]},{"teal":1764,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1570]},{"teal":1768,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1571,1572]},{"teal":1769,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1573,1574,1575]},{"teal":1774,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1576,1577]},{"teal":1775,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1578,1579]},{"teal":1776,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1580,1581]},{"teal":1777,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1582]},{"teal":1780,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1583]},{"teal":1783,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1584,1585]},{"teal":1784,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1586,1587]},{"teal":1785,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1588,1589,1590]},{"teal":1786,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1591,1592,1593]},{"teal":1787,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1594]},{"teal":1788,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1595]},{"teal":1791,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1596]},{"teal":1795,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1597]},{"teal":1796,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1598,1599]},{"teal":1797,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1600]},{"teal":1798,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1601]},{"teal":1799,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1602]},{"teal":1800,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1603]},{"teal":1801,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1604]},{"teal":1804,"source":"contracts/validatorRegistry.algo.ts:459","errorMessage":"specified validator id isn't valid","pc":[1605]},{"teal":1808,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1606,1607]},{"teal":1809,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1608,1609]},{"teal":1810,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1610]},{"teal":1811,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1611,1612]},{"teal":1812,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1613]},{"teal":1813,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1614]},{"teal":1814,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1615,1616]},{"teal":1815,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1617]},{"teal":1816,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1618]},{"teal":1817,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1619,1620]},{"teal":1822,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1621,1622]},{"teal":1823,"source":"contracts/constants.algo.ts:30","pc":[1623]},{"teal":1824,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1624]},{"teal":1825,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1625,1626,1627]},{"teal":1829,"source":"contracts/validatorRegistry.algo.ts:463","errorMessage":"already at max pool size","pc":[1628]},{"teal":1834,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1629,1630]},{"teal":1835,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1631]},{"teal":1836,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1632]},{"teal":1837,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1633,1634]},{"teal":1859,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1635]},{"teal":1860,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1636,1637]},{"teal":1861,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1638,1639]},{"teal":1865,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1640]},{"teal":1866,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1641,1642]},{"teal":1873,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1643,1644]},{"teal":1874,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1645]},{"teal":1875,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1646,1647]},{"teal":1876,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1648]},{"teal":1877,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1649,1650]},{"teal":1878,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1651,1652]},{"teal":1879,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1653,1654]},{"teal":1880,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1655,1656]},{"teal":1881,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1657]},{"teal":1884,"source":"contracts/validatorRegistry.algo.ts:472","errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1658]},{"teal":1885,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1659,1660]},{"teal":1886,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1661]},{"teal":1887,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1662]},{"teal":1888,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1663,1664]},{"teal":1892,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1665,1666,1667]},{"teal":1893,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1668,1669]},{"teal":1897,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1670,1671]},{"teal":1898,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1672,1673]},{"teal":1902,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1674,1675]},{"teal":1903,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1676,1677]},{"teal":1907,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1678,1679]},{"teal":1908,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1680,1681]},{"teal":1919,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1682,1683,1684,1685,1686,1687]},{"teal":1920,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1688,1689]},{"teal":1921,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1690,1691,1692]},{"teal":1922,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1693]},{"teal":1923,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1694,1695]},{"teal":1924,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1696,1697]},{"teal":1925,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1698]},{"teal":1926,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1699,1700]},{"teal":1927,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1701,1702]},{"teal":1928,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1703]},{"teal":1929,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1704,1705]},{"teal":1930,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1706,1707]},{"teal":1931,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1708]},{"teal":1932,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1709]},{"teal":1933,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1710,1711]},{"teal":1934,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1712]},{"teal":1935,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1713]},{"teal":1936,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1714,1715]},{"teal":1937,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1716]},{"teal":1938,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1717]},{"teal":1939,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1718]},{"teal":1940,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1719,1720]},{"teal":1943,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1721]},{"teal":1944,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1722,1723]},{"teal":1947,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1724]},{"teal":1951,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1725,1726]},{"teal":1952,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1727,1728]},{"teal":1953,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1729]},{"teal":1954,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1730,1731,1732]},{"teal":1955,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1733]},{"teal":1956,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1734,1735]},{"teal":1957,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1736]},{"teal":1958,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1737]},{"teal":1959,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1738,1739]},{"teal":1960,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1740]},{"teal":1964,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1741,1742]},{"teal":1965,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1743,1744]},{"teal":1969,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1745,1746]},{"teal":1970,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1747,1748]},{"teal":1971,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1749]},{"teal":1972,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1750]},{"teal":1973,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1751,1752]},{"teal":1974,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1753]},{"teal":1975,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1754]},{"teal":1976,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1755]},{"teal":1977,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1756]},{"teal":1978,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1757,1758]},{"teal":1979,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1759]},{"teal":1980,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1760]},{"teal":1981,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1761,1762]},{"teal":1982,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1763]},{"teal":1983,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1764]},{"teal":1984,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1765,1766]},{"teal":1985,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1767]},{"teal":1989,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1768,1769]},{"teal":1990,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1770,1771]},{"teal":1991,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1772,1773]},{"teal":1992,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1774,1775,1776]},{"teal":2000,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1777,1778,1779,1780,1781,1782]},{"teal":2001,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1783,1784]},{"teal":2002,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1785]},{"teal":2003,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1786,1787]},{"teal":2004,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1788]},{"teal":2005,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1789]},{"teal":2006,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1790]},{"teal":2007,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1791,1792]},{"teal":2008,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1793]},{"teal":2011,"source":"contracts/validatorRegistry.algo.ts:497","errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1794]},{"teal":2012,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1795,1796,1797]},{"teal":2013,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1798]},{"teal":2014,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1799,1800]},{"teal":2015,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1801]},{"teal":2016,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1802]},{"teal":2017,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1803]},{"teal":2018,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1804]},{"teal":2022,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1805,1806]},{"teal":2023,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1807]},{"teal":2024,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1808,1809]},{"teal":2025,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1810]},{"teal":2026,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1811]},{"teal":2027,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1812,1813]},{"teal":2028,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1814]},{"teal":2029,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1815]},{"teal":2032,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1816,1817]},{"teal":2035,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1818,1819]},{"teal":2036,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1820]},{"teal":2041,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1821]},{"teal":2044,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1822,1823,1824]},{"teal":2045,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1825]},{"teal":2048,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1826,1827,1828]},{"teal":2049,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1829]},{"teal":2052,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1830,1831]},{"teal":2053,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1832]},{"teal":2054,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1833]},{"teal":2055,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1834]},{"teal":2056,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1835,1836]},{"teal":2057,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1837]},{"teal":2058,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1838]},{"teal":2061,"source":"contracts/validatorRegistry.algo.ts:513","errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[1839]},{"teal":2064,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1840,1841,1842]},{"teal":2065,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1843]},{"teal":2066,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1844]},{"teal":2067,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1845]},{"teal":2068,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1846]},{"teal":2080,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1847,1848,1849]},{"teal":2083,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1850]},{"teal":2084,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1851,1852]},{"teal":2088,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1853]},{"teal":2089,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1854,1855]},{"teal":2090,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1856]},{"teal":2091,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1857]},{"teal":2092,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1858]},{"teal":2093,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1859]},{"teal":2094,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1860]},{"teal":2097,"source":"contracts/validatorRegistry.algo.ts:514","errorMessage":"specified validator id isn't valid","pc":[1861]},{"teal":2102,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1862,1863]},{"teal":2103,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1864]},{"teal":2104,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1865]},{"teal":2105,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1866,1867]},{"teal":2106,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1868]},{"teal":2107,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1869]},{"teal":2108,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1870,1871]},{"teal":2109,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1872]},{"teal":2110,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1873]},{"teal":2111,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1874]},{"teal":2112,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1875]},{"teal":2113,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1876,1877,1878]},{"teal":2121,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1879,1880]},{"teal":2122,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1881]},{"teal":2123,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1882]},{"teal":2124,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1883,1884]},{"teal":2125,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1885]},{"teal":2126,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1886]},{"teal":2127,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1887,1888]},{"teal":2128,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1889]},{"teal":2129,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1890]},{"teal":2130,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1891,1892]},{"teal":2131,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1893]},{"teal":2134,"source":"contracts/validatorRegistry.algo.ts:519","errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[1894]},{"teal":2139,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1895,1896]},{"teal":2140,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1897,1898]},{"teal":2148,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1899,1900]},{"teal":2149,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1901,1902]},{"teal":2150,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1903,1904]},{"teal":2151,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1905]},{"teal":2154,"source":"contracts/validatorRegistry.algo.ts:530","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[1906]},{"teal":2157,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1907,1908]},{"teal":2158,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1909,1910]},{"teal":2159,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1911,1912]},{"teal":2160,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1913]},{"teal":2163,"source":"contracts/validatorRegistry.algo.ts:531","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1914]},{"teal":2167,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1915,1916]},{"teal":2168,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1917,1918]},{"teal":2169,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1919,1920,1921]},{"teal":2173,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1922,1923]},{"teal":2174,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1924,1925]},{"teal":2175,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1926,1927]},{"teal":2179,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1928]},{"teal":2180,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1929,1930]},{"teal":2185,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1931,1932]},{"teal":2186,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1933,1934,1935]},{"teal":2187,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1936,1937,1938]},{"teal":2192,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1939,1940,1941]},{"teal":2193,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1942,1943,1944]},{"teal":2194,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1945]},{"teal":2195,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1946,1947]},{"teal":2199,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1948,1949]},{"teal":2200,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1950,1951]},{"teal":2201,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1952]},{"teal":2202,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1953,1954]},{"teal":2206,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1955]},{"teal":2207,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1956,1957]},{"teal":2208,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1958]},{"teal":2209,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1959,1960,1961]},{"teal":2210,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1962]},{"teal":2211,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1963]},{"teal":2219,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1964,1965]},{"teal":2220,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1966]},{"teal":2221,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1967]},{"teal":2222,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1968,1969]},{"teal":2223,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1970]},{"teal":2224,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1971]},{"teal":2225,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1972,1973]},{"teal":2226,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1974]},{"teal":2227,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1975]},{"teal":2228,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1976,1977]},{"teal":2229,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1978]},{"teal":2230,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1979,1980,1981]},{"teal":2231,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1982]},{"teal":2234,"source":"contracts/validatorRegistry.algo.ts:551","errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[1983]},{"teal":2238,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1984,1985]},{"teal":2239,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1986,1987]},{"teal":2240,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1988,1989]},{"teal":2241,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1990,1991,1992]},{"teal":2242,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1993,1994]},{"teal":2248,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1995,1996]},{"teal":2249,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1997,1998]},{"teal":2250,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1999,2000]},{"teal":2251,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2001,2002]},{"teal":2252,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2003]},{"teal":2253,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2004,2005]},{"teal":2257,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2006,2007]},{"teal":2258,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2008,2009]},{"teal":2259,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2010,2011]},{"teal":2260,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2012,2013,2014]},{"teal":2261,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2015]},{"teal":2262,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2016,2017]},{"teal":2267,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2018,2019]},{"teal":2268,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2020,2021]},{"teal":2269,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2022,2023]},{"teal":2270,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2024,2025,2026]},{"teal":2271,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2027]},{"teal":2272,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2028]},{"teal":2273,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2029]},{"teal":2274,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2030,2031,2032]},{"teal":2278,"source":"contracts/validatorRegistry.algo.ts:563","errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2033]},{"teal":2283,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2034,2035]},{"teal":2284,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2036,2037]},{"teal":2285,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2038,2039]},{"teal":2286,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2040,2041,2042]},{"teal":2287,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2043,2044]},{"teal":2288,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2045,2046,2047]},{"teal":2298,"source":"contracts/validatorRegistry.algo.ts:575","pc":[2048,2049]},{"teal":2299,"source":"contracts/validatorRegistry.algo.ts:574","pc":[2050,2051]},{"teal":2300,"source":"contracts/validatorRegistry.algo.ts:573","pc":[2052,2053]},{"teal":2301,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2054,2055]},{"teal":2302,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2056,2057]},{"teal":2303,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2058,2059]},{"teal":2304,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2060,2061,2062]},{"teal":2305,"source":"contracts/validatorRegistry.algo.ts:571","pc":[2063,2064]},{"teal":2306,"source":"contracts/validatorRegistry.algo.ts:570","pc":[2065,2066,2067]},{"teal":2316,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2068,2069,2070,2071,2072,2073]},{"teal":2317,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2074,2075]},{"teal":2318,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2076]},{"teal":2319,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2077,2078]},{"teal":2320,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2079,2080]},{"teal":2321,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2081,2082]},{"teal":2322,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2083,2084,2085]},{"teal":2323,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2086]},{"teal":2324,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2087]},{"teal":2325,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2088]},{"teal":2326,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2089]},{"teal":2327,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2090,2091]},{"teal":2328,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2092]},{"teal":2331,"source":"contracts/validatorRegistry.algo.ts:579","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2093]},{"teal":2332,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2094,2095,2096]},{"teal":2333,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2097]},{"teal":2334,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2098,2099]},{"teal":2335,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2100,2101]},{"teal":2336,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2102,2103]},{"teal":2337,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2104,2105,2106]},{"teal":2338,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2107]},{"teal":2339,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2108]},{"teal":2340,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2109]},{"teal":2341,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2110,2111]},{"teal":2342,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2112]},{"teal":2343,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2113,2114]},{"teal":2344,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2115]},{"teal":2345,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2116]},{"teal":2346,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2117]},{"teal":2347,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2118]},{"teal":2351,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2119,2120]},{"teal":2352,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2121,2122]},{"teal":2353,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2123,2124]},{"teal":2354,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2125,2126,2127]},{"teal":2357,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2128,2129]},{"teal":2360,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2130,2131]},{"teal":2361,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2132]},{"teal":2366,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2133]},{"teal":2369,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2134,2135,2136]},{"teal":2370,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2137]},{"teal":2373,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2138,2139,2140]},{"teal":2374,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2141]},{"teal":2375,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2142]},{"teal":2376,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2143]},{"teal":2377,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2144]},{"teal":2395,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2145,2146,2147]},{"teal":2398,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2148]},{"teal":2399,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2149,2150]},{"teal":2403,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2151,2152]},{"teal":2404,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2153]},{"teal":2405,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2154]},{"teal":2406,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2155,2156]},{"teal":2407,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2157]},{"teal":2408,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2158]},{"teal":2409,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2159,2160]},{"teal":2410,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2161]},{"teal":2411,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2162]},{"teal":2412,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2163,2164]},{"teal":2416,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2165,2166]},{"teal":2417,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2167]},{"teal":2418,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2168]},{"teal":2419,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2169]},{"teal":2424,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2170,2171]},{"teal":2425,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2172,2173]},{"teal":2426,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2174,2175]},{"teal":2427,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2176]},{"teal":2428,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2177]},{"teal":2429,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2178,2179,2180]},{"teal":2434,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2181,2182]},{"teal":2435,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2183,2184]},{"teal":2436,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2185]},{"teal":2437,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2186,2187]},{"teal":2438,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2188]},{"teal":2439,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2189]},{"teal":2440,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2190,2191]},{"teal":2441,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2192]},{"teal":2442,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2193,2194,2195]},{"teal":2447,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2196,2197]},{"teal":2448,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2198,2199]},{"teal":2452,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2200,2201]},{"teal":2453,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2202]},{"teal":2454,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2203]},{"teal":2455,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2204,2205]},{"teal":2456,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2206]},{"teal":2457,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2207]},{"teal":2458,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2208,2209]},{"teal":2459,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2210]},{"teal":2460,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2211]},{"teal":2461,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2212,2213]},{"teal":2466,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2214,2215]},{"teal":2467,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2216]},{"teal":2468,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2217]},{"teal":2469,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2218,2219,2220]},{"teal":2475,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2221,2222]},{"teal":2476,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234]},{"teal":2477,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2235]},{"teal":2480,"source":"contracts/validatorRegistry.algo.ts:619","errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2236]},{"teal":2481,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2237,2238]},{"teal":2482,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2239]},{"teal":2483,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2240,2241,2242]},{"teal":2488,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2243,2244]},{"teal":2489,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2245,2246]},{"teal":2490,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2247]},{"teal":2491,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2248,2249]},{"teal":2492,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2250]},{"teal":2493,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2251]},{"teal":2494,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2252,2253]},{"teal":2495,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2254]},{"teal":2496,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2255,2256,2257]},{"teal":2501,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2258,2259,2260]},{"teal":2502,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2261,2262]},{"teal":2503,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2263]},{"teal":2504,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2264,2265]},{"teal":2505,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2266]},{"teal":2506,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2267]},{"teal":2507,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2268,2269]},{"teal":2508,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2270]},{"teal":2509,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2271]},{"teal":2510,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2272,2273]},{"teal":2514,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2274,2275]},{"teal":2515,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2276,2277]},{"teal":2516,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2278,2279]},{"teal":2517,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2280]},{"teal":2518,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2281]},{"teal":2519,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2282,2283]},{"teal":2524,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2284,2285]},{"teal":2525,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2286,2287]},{"teal":2526,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2288,2289]},{"teal":2527,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2290]},{"teal":2528,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2291]},{"teal":2529,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2292,2293]},{"teal":2530,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2294]},{"teal":2531,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2295,2296,2297]},{"teal":2536,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2298,2299]},{"teal":2537,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2300,2301]},{"teal":2538,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2302]},{"teal":2539,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2303,2304]},{"teal":2540,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2305]},{"teal":2541,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2306]},{"teal":2542,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2307,2308]},{"teal":2543,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2309]},{"teal":2544,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2310,2311,2312]},{"teal":2551,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2313,2314]},{"teal":2552,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2315,2316]},{"teal":2553,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2317]},{"teal":2554,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2318]},{"teal":2555,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2319,2320]},{"teal":2556,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2321]},{"teal":2557,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2322]},{"teal":2558,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2323,2324]},{"teal":2559,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2325]},{"teal":2563,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2326,2327]},{"teal":2564,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2328,2329]},{"teal":2565,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2330]},{"teal":2566,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2331,2332]},{"teal":2567,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2333]},{"teal":2568,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2334]},{"teal":2569,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2335,2336]},{"teal":2570,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2337]},{"teal":2571,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2338]},{"teal":2572,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2339,2340]},{"teal":2576,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2341,2342]},{"teal":2577,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2343]},{"teal":2578,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2344]},{"teal":2579,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2345,2346]},{"teal":2580,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2347]},{"teal":2581,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2348]},{"teal":2582,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2349,2350]},{"teal":2583,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2351]},{"teal":2584,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2352]},{"teal":2585,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2353,2354]},{"teal":2589,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2355]},{"teal":2590,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2356,2357]},{"teal":2595,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2358,2359]},{"teal":2596,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2360,2361]},{"teal":2597,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2362]},{"teal":2598,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2363,2364,2365]},{"teal":2605,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2366,2367]},{"teal":2606,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2368,2369]},{"teal":2607,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2370,2371]},{"teal":2608,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2372]},{"teal":2609,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2373]},{"teal":2610,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2374,2375]},{"teal":2611,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2376]},{"teal":2612,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2377]},{"teal":2613,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2378]},{"teal":2614,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2379,2380]},{"teal":2615,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2381]},{"teal":2616,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2382]},{"teal":2617,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2383,2384]},{"teal":2618,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2385]},{"teal":2619,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2386]},{"teal":2620,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2387,2388,2389,2390]},{"teal":2621,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2391]},{"teal":2622,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2392]},{"teal":2623,"source":"contracts/validatorRegistry.algo.ts:640","pc":[2393,2394]},{"teal":2624,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2395]},{"teal":2625,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2396]},{"teal":2626,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2397]},{"teal":2627,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2398]},{"teal":2628,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2399]},{"teal":2631,"source":"contracts/validatorRegistry.algo.ts:638","errorMessage":"wideRatio failed","pc":[2400]},{"teal":2632,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2401,2402]},{"teal":2636,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2403,2404]},{"teal":2637,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2405,2406]},{"teal":2638,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2407]},{"teal":2639,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2408]},{"teal":2640,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2409]},{"teal":2641,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2410,2411]},{"teal":2642,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2412]},{"teal":2643,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2413]},{"teal":2644,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2414,2415]},{"teal":2645,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2416]},{"teal":2646,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2417]},{"teal":2647,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2418,2419]},{"teal":2648,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2420]},{"teal":2653,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2421,2422]},{"teal":2654,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2423]},{"teal":2655,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2424]},{"teal":2656,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2425,2426]},{"teal":2657,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2427,2428,2429]},{"teal":2662,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2430,2431]},{"teal":2663,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2432,2433]},{"teal":2664,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2434]},{"teal":2665,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2435,2436]},{"teal":2666,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2437]},{"teal":2667,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2438]},{"teal":2668,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2439,2440]},{"teal":2669,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2441]},{"teal":2673,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2442,2443]},{"teal":2676,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2444,2445]},{"teal":2677,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2446]},{"teal":2682,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2447,2448,2449]},{"teal":2683,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2450]},{"teal":2686,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2451,2452,2453]},{"teal":2687,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2454]},{"teal":2690,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2455,2456,2457]},{"teal":2691,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2458]},{"teal":2694,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2459,2460,2461]},{"teal":2695,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2462]},{"teal":2698,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2463,2464,2465]},{"teal":2699,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2466]},{"teal":2700,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2467]},{"teal":2701,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2468]},{"teal":2702,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2469]},{"teal":2705,"source":"contracts/validatorRegistry.algo.ts:659","errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2470]},{"teal":2708,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2471,2472,2473]},{"teal":2709,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2474]},{"teal":2710,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2475]},{"teal":2724,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2476,2477,2478]},{"teal":2728,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2479,2480]},{"teal":2729,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2481,2482,2483]},{"teal":2733,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2484,2485]},{"teal":2734,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2486,2487]},{"teal":2735,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2488,2489,2490]},{"teal":2736,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2491]},{"teal":2737,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2492]},{"teal":2738,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2493]},{"teal":2739,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2494,2495]},{"teal":2740,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2496]},{"teal":2741,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2497]},{"teal":2742,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2498,2499]},{"teal":2743,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2500]},{"teal":2744,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2501,2502]},{"teal":2745,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2503,2504]},{"teal":2746,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2505,2506,2507]},{"teal":2747,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2508]},{"teal":2748,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2509]},{"teal":2749,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2510]},{"teal":2750,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2511,2512]},{"teal":2751,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2513]},{"teal":2752,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2514]},{"teal":2753,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2515,2516]},{"teal":2754,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2517]},{"teal":2755,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2518]},{"teal":2756,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2519]},{"teal":2757,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2520,2521]},{"teal":2758,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2522,2523,2524]},{"teal":2759,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2525]},{"teal":2760,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2526]},{"teal":2761,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2527]},{"teal":2762,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2528,2529]},{"teal":2763,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2530]},{"teal":2764,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2531]},{"teal":2765,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2532,2533]},{"teal":2766,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2534]},{"teal":2767,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2535]},{"teal":2768,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2536]},{"teal":2769,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2537,2538]},{"teal":2770,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2539,2540,2541]},{"teal":2771,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2542]},{"teal":2772,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2543]},{"teal":2773,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2544]},{"teal":2774,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2545,2546]},{"teal":2775,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2547]},{"teal":2779,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2548,2549]},{"teal":2780,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2550]},{"teal":2781,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2551]},{"teal":2782,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2552]},{"teal":2783,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2553,2554]},{"teal":2784,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2555,2556,2557]},{"teal":2785,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2558]},{"teal":2786,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2559]},{"teal":2787,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2560]},{"teal":2788,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2561,2562]},{"teal":2789,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2563]},{"teal":2790,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2564]},{"teal":2791,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2565,2566]},{"teal":2792,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2567]},{"teal":2793,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2568]},{"teal":2794,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2569]},{"teal":2795,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2570,2571]},{"teal":2796,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2572,2573,2574]},{"teal":2797,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2575]},{"teal":2798,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2576]},{"teal":2799,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2577]},{"teal":2800,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2578,2579]},{"teal":2801,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2580]},{"teal":2805,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2581,2582]},{"teal":2806,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2583]},{"teal":2807,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2584]},{"teal":2808,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2585]},{"teal":2809,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2586,2587]},{"teal":2810,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2588,2589,2590]},{"teal":2811,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2591]},{"teal":2812,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2592]},{"teal":2813,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2593]},{"teal":2814,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2594,2595]},{"teal":2815,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2596]},{"teal":2816,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2597]},{"teal":2817,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2598,2599]},{"teal":2818,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2600]},{"teal":2819,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2601]},{"teal":2820,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2602]},{"teal":2821,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2603,2604]},{"teal":2822,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2605,2606,2607]},{"teal":2823,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2608]},{"teal":2824,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2609]},{"teal":2825,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2610]},{"teal":2826,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2611,2612]},{"teal":2827,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2613]},{"teal":2831,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2614,2615]},{"teal":2832,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2616]},{"teal":2833,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2617,2618]},{"teal":2834,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2619]},{"teal":2835,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2620,2621]},{"teal":2836,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2622]},{"teal":2837,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2623]},{"teal":2841,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2624,2625]},{"teal":2842,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2626,2627,2628]},{"teal":2843,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2629]},{"teal":2844,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2630,2631,2632]},{"teal":2856,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2633,2634,2635,2636,2637,2638]},{"teal":2857,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2639,2640]},{"teal":2858,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2641,2642,2643]},{"teal":2859,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2644]},{"teal":2860,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2645]},{"teal":2861,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2646,2647]},{"teal":2862,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2648,2649,2650]},{"teal":2863,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2651]},{"teal":2864,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2652]},{"teal":2865,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2653]},{"teal":2866,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2654]},{"teal":2867,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2655,2656]},{"teal":2868,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2657]},{"teal":2871,"source":"contracts/validatorRegistry.algo.ts:679","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2658]},{"teal":2872,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2659,2660,2661]},{"teal":2873,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2662]},{"teal":2874,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2663,2664]},{"teal":2875,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2665,2666,2667]},{"teal":2876,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2668]},{"teal":2877,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2669]},{"teal":2878,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2670]},{"teal":2879,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2671,2672]},{"teal":2880,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2673]},{"teal":2881,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2674]},{"teal":2882,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2675,2676]},{"teal":2883,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2677]},{"teal":2884,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2678]},{"teal":2885,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2679,2680]},{"teal":2886,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2681]},{"teal":2887,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2682]},{"teal":2888,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2683,2684]},{"teal":2889,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2685]},{"teal":2890,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2686]},{"teal":2891,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2687]},{"teal":2892,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2688]},{"teal":2893,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2689]},{"teal":2898,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2690,2691,2692]},{"teal":2899,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2693]},{"teal":2900,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2694]},{"teal":2901,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2695]},{"teal":2902,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2696]},{"teal":2905,"source":"contracts/validatorRegistry.algo.ts:705","errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2697]},{"teal":2906,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2698]},{"teal":2907,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2699]},{"teal":2910,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2700,2701,2702]},{"teal":2911,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2703]},{"teal":2914,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2704,2705,2706]},{"teal":2915,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2707]},{"teal":2918,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2708,2709,2710]},{"teal":2919,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2711]},{"teal":2920,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2712]},{"teal":2921,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2713,2714]},{"teal":2922,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2715]},{"teal":2925,"source":"contracts/validatorRegistry.algo.ts:702","errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2716]},{"teal":2928,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2717,2718,2719]},{"teal":2929,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2720]},{"teal":2930,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2721]},{"teal":2931,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2722]},{"teal":2932,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2723]},{"teal":2935,"source":"contracts/validatorRegistry.algo.ts:701","errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2724]},{"teal":2938,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2725,2726,2727]},{"teal":2939,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2728]},{"teal":2940,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2729]},{"teal":2955,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2730,2731,2732]},{"teal":2958,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2733]},{"teal":2959,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2734,2735]},{"teal":2964,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2736,2737]},{"teal":2965,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2738,2739]},{"teal":2966,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2740]},{"teal":2967,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2741,2742,2743]},{"teal":2972,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2744]},{"teal":2973,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2745,2746]},{"teal":2974,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2747,2748]},{"teal":2975,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2749]},{"teal":2976,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2750,2751]},{"teal":2977,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2752,2753]},{"teal":2978,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2754]},{"teal":2979,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2755,2756]},{"teal":2980,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2757,2758]},{"teal":2981,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2759,2760]},{"teal":2982,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2761,2762]},{"teal":2983,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2763]},{"teal":2988,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2764,2765]},{"teal":2989,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2766,2767,2768]},{"teal":2993,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2769,2770]},{"teal":2994,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2771]},{"teal":2995,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2772]},{"teal":2996,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2773]},{"teal":2997,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2774,2775,2776]},{"teal":2998,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2777,2778]},{"teal":2999,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2779]},{"teal":3000,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2780]},{"teal":3001,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2781]},{"teal":3005,"source":"contracts/validatorRegistry.algo.ts:714","errorMessage":"should only be called if algo or reward was removed","pc":[2782]},{"teal":3009,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2783,2784]},{"teal":3010,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2785,2786]},{"teal":3011,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2787,2788,2789]},{"teal":3012,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2790]},{"teal":3013,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2791]},{"teal":3014,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2792]},{"teal":3015,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2793,2794]},{"teal":3016,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2795]},{"teal":3017,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2796]},{"teal":3018,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2797,2798]},{"teal":3019,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2799]},{"teal":3020,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2800,2801]},{"teal":3021,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2802,2803]},{"teal":3022,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2804,2805,2806]},{"teal":3023,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2807]},{"teal":3024,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2808]},{"teal":3025,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2809]},{"teal":3026,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2810,2811]},{"teal":3027,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2812]},{"teal":3028,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2813]},{"teal":3029,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2814,2815]},{"teal":3030,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2816]},{"teal":3031,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2817]},{"teal":3032,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2818]},{"teal":3033,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2819,2820]},{"teal":3034,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2821,2822,2823]},{"teal":3035,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2824]},{"teal":3036,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2825]},{"teal":3037,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2826]},{"teal":3038,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2827,2828]},{"teal":3039,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2829]},{"teal":3040,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2830]},{"teal":3041,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2831,2832]},{"teal":3042,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2833]},{"teal":3043,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2834]},{"teal":3044,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2835]},{"teal":3045,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2836,2837]},{"teal":3046,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2838,2839,2840]},{"teal":3047,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2841]},{"teal":3048,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2842]},{"teal":3049,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2843]},{"teal":3050,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2844,2845]},{"teal":3051,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2846]},{"teal":3055,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2847,2848]},{"teal":3056,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2849]},{"teal":3057,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2850]},{"teal":3058,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2851]},{"teal":3059,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2852,2853]},{"teal":3060,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2854,2855,2856]},{"teal":3061,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2857]},{"teal":3062,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2858]},{"teal":3063,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2859]},{"teal":3064,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2860,2861]},{"teal":3065,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2862]},{"teal":3066,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2863]},{"teal":3067,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2864,2865]},{"teal":3068,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2866]},{"teal":3069,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2867]},{"teal":3070,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2868]},{"teal":3071,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2869,2870]},{"teal":3072,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2871,2872,2873]},{"teal":3073,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2874]},{"teal":3074,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2875]},{"teal":3075,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2876]},{"teal":3076,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2877,2878]},{"teal":3077,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2879]},{"teal":3081,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2880,2881]},{"teal":3082,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2882]},{"teal":3083,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2883,2884]},{"teal":3084,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2885]},{"teal":3085,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2886,2887]},{"teal":3086,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2888]},{"teal":3087,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2889]},{"teal":3092,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2890,2891]},{"teal":3093,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2892]},{"teal":3094,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2893]},{"teal":3095,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2894,2895,2896]},{"teal":3100,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2897,2898]},{"teal":3101,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2899]},{"teal":3102,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2900]},{"teal":3103,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2901,2902]},{"teal":3104,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2903,2904,2905]},{"teal":3105,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2906]},{"teal":3106,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2907]},{"teal":3107,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2908]},{"teal":3108,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2909,2910]},{"teal":3109,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2911]},{"teal":3110,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2912]},{"teal":3111,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2913,2914]},{"teal":3115,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2915,2916]},{"teal":3116,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2917]},{"teal":3117,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2918]},{"teal":3120,"source":"contracts/validatorRegistry.algo.ts:723","errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[2919]},{"teal":3127,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2920,2921]},{"teal":3128,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2922]},{"teal":3129,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2923]},{"teal":3130,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2924,2925]},{"teal":3131,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2926,2927,2928]},{"teal":3132,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2929]},{"teal":3133,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2930]},{"teal":3134,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2931]},{"teal":3135,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2932,2933]},{"teal":3136,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2934]},{"teal":3137,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2935]},{"teal":3138,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2936,2937]},{"teal":3139,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2938]},{"teal":3142,"source":"contracts/validatorRegistry.algo.ts:724","errorMessage":"reward being removed must be covered by hold back amount","pc":[2939]},{"teal":3146,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2940,2941]},{"teal":3147,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2942]},{"teal":3148,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2943]},{"teal":3149,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2944]},{"teal":3150,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2945,2946]},{"teal":3151,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2947,2948,2949]},{"teal":3152,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2950]},{"teal":3153,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2951]},{"teal":3154,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2952]},{"teal":3155,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2953,2954]},{"teal":3156,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2955]},{"teal":3157,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2956]},{"teal":3158,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2957,2958]},{"teal":3159,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2959]},{"teal":3160,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2960]},{"teal":3161,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2961]},{"teal":3162,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2962,2963]},{"teal":3163,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2964,2965,2966]},{"teal":3164,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2967]},{"teal":3165,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2968]},{"teal":3166,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2969]},{"teal":3167,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2970,2971]},{"teal":3168,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2972]},{"teal":3173,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2973,2974]},{"teal":3174,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2975,2976,2977]},{"teal":3175,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2978]},{"teal":3176,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2979]},{"teal":3177,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2980]},{"teal":3178,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2981,2982,2983]},{"teal":3186,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2984]},{"teal":3187,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2985,2986]},{"teal":3188,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2987,2988]},{"teal":3189,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2989,2990]},{"teal":3190,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2991,2992]},{"teal":3194,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2993,2994]},{"teal":3195,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2995]},{"teal":3196,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2996]},{"teal":3197,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2997,2998]},{"teal":3198,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2999,3000,3001]},{"teal":3199,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3002]},{"teal":3200,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3003]},{"teal":3201,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3004]},{"teal":3202,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3005,3006]},{"teal":3203,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3007]},{"teal":3204,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3008]},{"teal":3205,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3009,3010]},{"teal":3209,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3011,3012]},{"teal":3210,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3013,3014]},{"teal":3211,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3015,3016]},{"teal":3212,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3017]},{"teal":3213,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3018,3019]},{"teal":3214,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3020,3021]},{"teal":3215,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3022]},{"teal":3216,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3023,3024]},{"teal":3219,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3025]},{"teal":3220,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3026,3027]},{"teal":3223,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3028]},{"teal":3236,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3029,3030]},{"teal":3237,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3031,3032]},{"teal":3238,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3033,3034,3035]},{"teal":3239,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3036]},{"teal":3240,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3037]},{"teal":3241,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3038,3039]},{"teal":3242,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3040,3041,3042]},{"teal":3243,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3043]},{"teal":3244,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3044]},{"teal":3245,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3045]},{"teal":3246,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3046]},{"teal":3247,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3047,3048]},{"teal":3248,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3049]},{"teal":3251,"source":"contracts/validatorRegistry.algo.ts:743","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3050]},{"teal":3252,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3051,3052,3053]},{"teal":3253,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3054]},{"teal":3254,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3055,3056]},{"teal":3255,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3057,3058,3059]},{"teal":3256,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3060]},{"teal":3257,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3061]},{"teal":3258,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3062]},{"teal":3259,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3063,3064]},{"teal":3260,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3065]},{"teal":3261,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3066,3067]},{"teal":3262,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3068]},{"teal":3263,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3069]},{"teal":3264,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3070,3071]},{"teal":3265,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3072]},{"teal":3266,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3073]},{"teal":3267,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3074,3075]},{"teal":3268,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3076]},{"teal":3269,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3077]},{"teal":3270,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3078]},{"teal":3271,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3079]},{"teal":3272,"source":"contracts/validatorRegistry.algo.ts:721","pc":[3080,3081,3082]},{"teal":3286,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3083,3084]},{"teal":3287,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3085,3086]},{"teal":3288,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3087,3088,3089]},{"teal":3289,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3090]},{"teal":3290,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3091]},{"teal":3291,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3092,3093]},{"teal":3292,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3094,3095,3096]},{"teal":3293,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3097]},{"teal":3294,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3098]},{"teal":3295,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3099]},{"teal":3296,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3100]},{"teal":3297,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3101,3102]},{"teal":3298,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3103]},{"teal":3301,"source":"contracts/validatorRegistry.algo.ts:753","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3104]},{"teal":3302,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3105,3106,3107]},{"teal":3303,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3108]},{"teal":3304,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3109,3110]},{"teal":3305,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3111,3112,3113]},{"teal":3306,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3114]},{"teal":3307,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3115]},{"teal":3308,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3116]},{"teal":3309,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3117,3118]},{"teal":3310,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3119]},{"teal":3311,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3120,3121]},{"teal":3312,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3122]},{"teal":3313,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3123]},{"teal":3314,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3124,3125]},{"teal":3315,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3126]},{"teal":3316,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3127,3128]},{"teal":3317,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3129]},{"teal":3318,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3130]},{"teal":3319,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3131]},{"teal":3325,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3132,3133]},{"teal":3326,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3134,3135,3136]},{"teal":3331,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3137,3138]},{"teal":3332,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3139,3140]},{"teal":3333,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3141,3142,3143]},{"teal":3334,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3144]},{"teal":3335,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3145]},{"teal":3336,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3146]},{"teal":3337,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3147,3148]},{"teal":3338,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3149]},{"teal":3339,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3150]},{"teal":3340,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3151]},{"teal":3341,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3152]},{"teal":3342,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3153,3154]},{"teal":3343,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3155,3156]},{"teal":3344,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3157,3158,3159]},{"teal":3345,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3160]},{"teal":3346,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3161]},{"teal":3347,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3162]},{"teal":3348,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3163,3164]},{"teal":3349,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3165]},{"teal":3350,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3166]},{"teal":3351,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3167]},{"teal":3352,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3168]},{"teal":3353,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3169,3170]},{"teal":3354,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3171]},{"teal":3355,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3172,3173]},{"teal":3356,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3174,3175,3176]},{"teal":3357,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3177]},{"teal":3358,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3178]},{"teal":3359,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3179]},{"teal":3360,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3180,3181]},{"teal":3361,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3182]},{"teal":3362,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3183]},{"teal":3363,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3184]},{"teal":3364,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3185]},{"teal":3365,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3186]},{"teal":3366,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3187,3188,3189]},{"teal":3367,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3190]},{"teal":3368,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3191,3192]},{"teal":3369,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3193,3194,3195]},{"teal":3370,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3196]},{"teal":3371,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3197]},{"teal":3372,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3198]},{"teal":3373,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3199,3200]},{"teal":3374,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3201]},{"teal":3382,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3202,3203]},{"teal":3383,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3204,3205,3206]},{"teal":3384,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3207]},{"teal":3385,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3208]},{"teal":3386,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3209,3210]},{"teal":3387,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3211,3212,3213]},{"teal":3388,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3214]},{"teal":3389,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3215]},{"teal":3390,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3216]},{"teal":3391,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3217,3218]},{"teal":3392,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3219,3220,3221]},{"teal":3393,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3222]},{"teal":3394,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3223]},{"teal":3395,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3224]},{"teal":3396,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3225,3226]},{"teal":3397,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3227,3228,3229]},{"teal":3398,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3230,3231]},{"teal":3402,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3232,3233]},{"teal":3403,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3234,3235]},{"teal":3404,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3236,3237]},{"teal":3405,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3238]},{"teal":3406,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3239]},{"teal":3407,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3240,3241]},{"teal":3411,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3242,3243]},{"teal":3412,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3244,3245]},{"teal":3413,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3246,3247]},{"teal":3414,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3248]},{"teal":3415,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3249]},{"teal":3416,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3250,3251]},{"teal":3421,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3252,3253]},{"teal":3422,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3254,3255,3256]},{"teal":3427,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3257,3258]},{"teal":3428,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3259]},{"teal":3429,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3260]},{"teal":3430,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3261]},{"teal":3431,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3262,3263]},{"teal":3432,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3264,3265,3266]},{"teal":3433,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3267]},{"teal":3434,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3268]},{"teal":3435,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3269]},{"teal":3436,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3270,3271]},{"teal":3437,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3272]},{"teal":3438,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3273]},{"teal":3439,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3274]},{"teal":3440,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3275]},{"teal":3441,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3276]},{"teal":3442,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3277]},{"teal":3443,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3278,3279]},{"teal":3444,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3280,3281,3282]},{"teal":3445,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3283]},{"teal":3446,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3284]},{"teal":3447,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3285]},{"teal":3448,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3286,3287]},{"teal":3449,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3288]},{"teal":3455,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3289,3290]},{"teal":3456,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3291,3292,3293]},{"teal":3461,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3294,3295]},{"teal":3462,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3296]},{"teal":3463,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3297]},{"teal":3464,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3298]},{"teal":3465,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3299,3300]},{"teal":3466,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3301]},{"teal":3467,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3302]},{"teal":3472,"source":"contracts/validatorRegistry.algo.ts:700","pc":[3303]},{"teal":3477,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3304]},{"teal":3480,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3305,3306,3307]},{"teal":3481,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3308]},{"teal":3484,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3309,3310,3311]},{"teal":3485,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3312]},{"teal":3486,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3313]},{"teal":3487,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3314,3315]},{"teal":3488,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3316]},{"teal":3491,"source":"contracts/validatorRegistry.algo.ts:799","errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3317]},{"teal":3494,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3318,3319,3320]},{"teal":3495,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3321]},{"teal":3498,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3322,3323,3324]},{"teal":3499,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3325]},{"teal":3500,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3326]},{"teal":3501,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3327]},{"teal":3502,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3328]},{"teal":3516,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3329,3330,3331]},{"teal":3519,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3332]},{"teal":3520,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3333,3334]},{"teal":3524,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3335]},{"teal":3525,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3336,3337]},{"teal":3529,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3338]},{"teal":3530,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3339,3340]},{"teal":3534,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3341,3342]},{"teal":3535,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3343,3344,3345]},{"teal":3536,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3346,3347]},{"teal":3541,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3348]},{"teal":3542,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3349,3350]},{"teal":3543,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3351]},{"teal":3544,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3352]},{"teal":3545,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3353]},{"teal":3546,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3354]},{"teal":3547,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3355,3356,3357]},{"teal":3552,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3358]},{"teal":3553,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3359,3360]},{"teal":3554,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3361]},{"teal":3555,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3362]},{"teal":3558,"source":"contracts/validatorRegistry.algo.ts:815","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3363]},{"teal":3559,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3364,3365]},{"teal":3563,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3366,3367]},{"teal":3564,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3368]},{"teal":3565,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3369]},{"teal":3566,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3370]},{"teal":3570,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3371]},{"teal":3571,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3372,3373]},{"teal":3576,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3374,3375]},{"teal":3577,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3376,3377]},{"teal":3578,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3378]},{"teal":3579,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3379,3380,3381]},{"teal":3584,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3382,3383]},{"teal":3585,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3384,3385]},{"teal":3586,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3386]},{"teal":3587,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3387,3388,3389]},{"teal":3592,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3390]},{"teal":3593,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3391,3392]},{"teal":3594,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3393,3394]},{"teal":3595,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3395]},{"teal":3596,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3396,3397]},{"teal":3597,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3398,3399]},{"teal":3598,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3400]},{"teal":3599,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3401,3402]},{"teal":3600,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3403,3404]},{"teal":3601,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3405,3406]},{"teal":3602,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3407,3408]},{"teal":3603,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3409]},{"teal":3609,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3410,3411]},{"teal":3610,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3412,3413]},{"teal":3611,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3414]},{"teal":3612,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3415]},{"teal":3613,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3416]},{"teal":3614,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3417]},{"teal":3615,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3418]},{"teal":3616,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3419]},{"teal":3617,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3420]},{"teal":3618,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3421]},{"teal":3619,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3422]},{"teal":3620,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3423,3424,3425]},{"teal":3623,"source":"contracts/validatorRegistry.algo.ts:822","pc":[3426,3427,3428]},{"teal":3628,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3429]},{"teal":3629,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3430,3431]},{"teal":3634,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3432,3433]},{"teal":3635,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3434,3435]},{"teal":3636,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3436]},{"teal":3637,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3437]},{"teal":3638,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3438]},{"teal":3639,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3439]},{"teal":3640,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3440]},{"teal":3641,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3441]},{"teal":3642,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3442]},{"teal":3643,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3443,3444]},{"teal":3644,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3445]},{"teal":3645,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3446,3447,3448]},{"teal":3650,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3449]},{"teal":3651,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3450,3451]},{"teal":3658,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3452,3453]},{"teal":3659,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3454,3455]},{"teal":3660,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3456,3457]},{"teal":3661,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3458]},{"teal":3662,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3459]},{"teal":3663,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3460]},{"teal":3664,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3461]},{"teal":3665,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3462]},{"teal":3666,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3463]},{"teal":3667,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3464]},{"teal":3668,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3465]},{"teal":3669,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3466]},{"teal":3670,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3467,3468]},{"teal":3671,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3469]},{"teal":3672,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3470]},{"teal":3673,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3471,3472]},{"teal":3674,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3473]},{"teal":3675,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3474]},{"teal":3676,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3475]},{"teal":3677,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3476,3477]},{"teal":3678,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3478]},{"teal":3679,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3479]},{"teal":3680,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3480,3481]},{"teal":3681,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3482]},{"teal":3682,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3483]},{"teal":3683,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3484,3485]},{"teal":3684,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3486]},{"teal":3685,"source":"contracts/validatorRegistry.algo.ts:831","pc":[3487,3488]},{"teal":3686,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3489]},{"teal":3687,"source":"contracts/validatorRegistry.algo.ts:828","pc":[3490,3491,3492]},{"teal":3692,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3493,3494]},{"teal":3693,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3495,3496]},{"teal":3694,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3497]},{"teal":3695,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3498]},{"teal":3696,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3499]},{"teal":3697,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3500]},{"teal":3698,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3501,3502]},{"teal":3699,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3503]},{"teal":3700,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3504,3505]},{"teal":3701,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3506]},{"teal":3702,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3507]},{"teal":3703,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3508,3509]},{"teal":3704,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3510]},{"teal":3705,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3511]},{"teal":3706,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3512,3513,3514]},{"teal":3715,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3515,3516]},{"teal":3716,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3517]},{"teal":3717,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3518]},{"teal":3718,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3519,3520]},{"teal":3719,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3521,3522,3523]},{"teal":3729,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3524,3525]},{"teal":3730,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3526,3527]},{"teal":3731,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3528]},{"teal":3732,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3529]},{"teal":3733,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3530,3531]},{"teal":3734,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3532]},{"teal":3735,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3533]},{"teal":3736,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3534,3535]},{"teal":3737,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3536]},{"teal":3738,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3537]},{"teal":3739,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3538]},{"teal":3742,"source":"contracts/validatorRegistry.algo.ts:840","errorMessage":"must stake at least the minimum for this pool","pc":[3539]},{"teal":3746,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3540,3541]},{"teal":3747,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3542,3543]},{"teal":3748,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3544]},{"teal":3749,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3545,3546]},{"teal":3750,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3547]},{"teal":3751,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3548]},{"teal":3752,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3549,3550]},{"teal":3753,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3551]},{"teal":3754,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3552,3553]},{"teal":3758,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3554,3555]},{"teal":3759,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3556,3557]},{"teal":3760,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3558]},{"teal":3761,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3559,3560]},{"teal":3762,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3561]},{"teal":3763,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3562]},{"teal":3764,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3563,3564]},{"teal":3765,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3565]},{"teal":3766,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3566]},{"teal":3767,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3567,3568]},{"teal":3771,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3569]},{"teal":3772,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3570,3571]},{"teal":3777,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3572,3573]},{"teal":3778,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3574,3575]},{"teal":3779,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3576]},{"teal":3780,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3577,3578,3579]},{"teal":3785,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3580,3581]},{"teal":3786,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3582,3583]},{"teal":3787,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3584,3585]},{"teal":3788,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3586]},{"teal":3789,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3587,3588]},{"teal":3790,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3589]},{"teal":3791,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3590]},{"teal":3792,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3591]},{"teal":3793,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3592]},{"teal":3794,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3593,3594]},{"teal":3795,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3595]},{"teal":3796,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3596,3597]},{"teal":3797,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3598]},{"teal":3798,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3599,3600,3601]},{"teal":3807,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3602,3603]},{"teal":3808,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3604]},{"teal":3809,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3605,3606]},{"teal":3810,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3607]},{"teal":3811,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3608]},{"teal":3812,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3609]},{"teal":3813,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3610]},{"teal":3814,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3611,3612]},{"teal":3815,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3613,3614]},{"teal":3816,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3615,3616]},{"teal":3817,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3617]},{"teal":3818,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3618]},{"teal":3819,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3619]},{"teal":3820,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3620]},{"teal":3821,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3621]},{"teal":3822,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3622]},{"teal":3823,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3623]},{"teal":3824,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3624]},{"teal":3825,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3625,3626]},{"teal":3826,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3627]},{"teal":3827,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3628,3629]},{"teal":3828,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3630]},{"teal":3829,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3631]},{"teal":3830,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3632,3633]},{"teal":3831,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3634]},{"teal":3832,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3635]},{"teal":3833,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3636,3637,3638]},{"teal":3840,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3639,3640]},{"teal":3841,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3641]},{"teal":3842,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3642]},{"teal":3843,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3643,3644]},{"teal":3844,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3645,3646,3647]},{"teal":3849,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3648,3649]},{"teal":3850,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3650]},{"teal":3851,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3651,3652]},{"teal":3852,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3653]},{"teal":3853,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3654,3655]},{"teal":3854,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3656]},{"teal":3855,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3657,3658]},{"teal":3856,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3659]},{"teal":3857,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3660,3661]},{"teal":3858,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3662]},{"teal":3859,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3663]},{"teal":3860,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3664,3665]},{"teal":3861,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3666]},{"teal":3862,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3667]},{"teal":3866,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3668,3669]},{"teal":3869,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3670,3671]},{"teal":3870,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3672]},{"teal":3875,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3673,3674,3675]},{"teal":3876,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3676]},{"teal":3879,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3677,3678,3679]},{"teal":3880,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3680]},{"teal":3883,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3681,3682,3683]},{"teal":3884,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3684]},{"teal":3887,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3685,3686,3687]},{"teal":3888,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3688]},{"teal":3889,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3689]},{"teal":3903,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3690,3691,3692]},{"teal":3906,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3693]},{"teal":3907,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3694,3695]},{"teal":3911,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3696,3697]},{"teal":3912,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3698,3699,3700]},{"teal":3916,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3701,3702]},{"teal":3917,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3703,3704]},{"teal":3918,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3705]},{"teal":3919,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3706,3707]},{"teal":3920,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3708]},{"teal":3921,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3709]},{"teal":3922,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3710,3711]},{"teal":3923,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3712]},{"teal":3924,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3713,3714]},{"teal":3928,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3715,3716]},{"teal":3929,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3717]},{"teal":3930,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3718]},{"teal":3931,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3719]},{"teal":3932,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3720,3721,3722]},{"teal":3933,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3723,3724]},{"teal":3934,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3725]},{"teal":3935,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3726]},{"teal":3936,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3727]},{"teal":3940,"source":"contracts/validatorRegistry.algo.ts:876","errorMessage":"node number out of allowable range","pc":[3728]},{"teal":3944,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3729]},{"teal":3945,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3730,3731]},{"teal":3950,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3732,3733]},{"teal":3951,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3734]},{"teal":3952,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3735]},{"teal":3953,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3736,3737,3738]},{"teal":3957,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3739]},{"teal":3958,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3740,3741]},{"teal":3963,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3742,3743]},{"teal":3964,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3744,3745]},{"teal":3965,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3746]},{"teal":3966,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3747,3748,3749]},{"teal":3971,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3750,3751]},{"teal":3972,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3752]},{"teal":3973,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3753,3754]},{"teal":3974,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3755]},{"teal":3975,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3756]},{"teal":3976,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3757]},{"teal":3977,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3758]},{"teal":3978,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3759]},{"teal":3979,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3760,3761]},{"teal":3980,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3762]},{"teal":3981,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3763]},{"teal":3982,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3764]},{"teal":3983,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3765]},{"teal":3984,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3766]},{"teal":3985,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3767]},{"teal":3986,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3768,3769]},{"teal":3987,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3770]},{"teal":3988,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3771,3772,3773]},{"teal":3993,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3774,3775]},{"teal":3994,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3776]},{"teal":3995,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3777]},{"teal":3996,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3778,3779]},{"teal":3997,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3780]},{"teal":4000,"source":"contracts/validatorRegistry.algo.ts:881","errorMessage":"can't move to same node","pc":[3781]},{"teal":4004,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3782,3783]},{"teal":4005,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3784,3785]},{"teal":4006,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3786]},{"teal":4007,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3787]},{"teal":4008,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3788]},{"teal":4009,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3789]},{"teal":4010,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3790]},{"teal":4011,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3791,3792]},{"teal":4012,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3793]},{"teal":4013,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3794]},{"teal":4014,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3795]},{"teal":4015,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3796,3797]},{"teal":4016,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3798]},{"teal":4017,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3799,3800]},{"teal":4018,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3801]},{"teal":4019,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3802]},{"teal":4020,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3803,3804]},{"teal":4021,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3805]},{"teal":4027,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3806]},{"teal":4028,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3807,3808]},{"teal":4029,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3809,3810]},{"teal":4030,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3811,3812,3813,3814,3815,3816]},{"teal":4031,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3817,3818]},{"teal":4035,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3819,3820]},{"teal":4036,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3821,3822]},{"teal":4039,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3823]},{"teal":4040,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3824,3825]},{"teal":4043,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3826]},{"teal":4047,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3827,3828]},{"teal":4048,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3829,3830]},{"teal":4049,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3831,3832]},{"teal":4050,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3833,3834,3835]},{"teal":4054,"source":"contracts/validatorRegistry.algo.ts:892","pc":[3836]},{"teal":4061,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3837,3838]},{"teal":4062,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3839]},{"teal":4063,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3840]},{"teal":4064,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3841,3842]},{"teal":4065,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3843,3844,3845]},{"teal":4072,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3846,3847]},{"teal":4073,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3848]},{"teal":4074,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3849]},{"teal":4075,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3850,3851]},{"teal":4076,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3852,3853,3854]},{"teal":4080,"source":"contracts/validatorRegistry.algo.ts:896","errorMessage":"couldn't find pool app id in nodes to move","pc":[3855]},{"teal":4081,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3856]},{"teal":4086,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3857]},{"teal":4089,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3858,3859,3860]},{"teal":4090,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3861]},{"teal":4091,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3862]},{"teal":4092,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3863,3864]},{"teal":4093,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3865]},{"teal":4096,"source":"contracts/validatorRegistry.algo.ts:910","errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[3866]},{"teal":4099,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3867,3868,3869]},{"teal":4100,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3870]},{"teal":4103,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3871,3872,3873]},{"teal":4104,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3874]},{"teal":4105,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3875]},{"teal":4106,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3876]},{"teal":4107,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3877]},{"teal":4108,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3878]},{"teal":4122,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3879,3880,3881]},{"teal":4125,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3882]},{"teal":4126,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3883,3884]},{"teal":4130,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3885,3886]},{"teal":4131,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3887,3888,3889]},{"teal":4135,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3890,3891]},{"teal":4136,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3892]},{"teal":4137,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3893]},{"teal":4138,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3894,3895]},{"teal":4139,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3896]},{"teal":4140,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3897]},{"teal":4141,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3898,3899]},{"teal":4142,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3900]},{"teal":4143,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3901]},{"teal":4144,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3902,3903]},{"teal":4148,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3904,3905]},{"teal":4149,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3906]},{"teal":4150,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3907]},{"teal":4151,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3908,3909]},{"teal":4152,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3910]},{"teal":4153,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3911]},{"teal":4154,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3912,3913]},{"teal":4155,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3914]},{"teal":4156,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3915]},{"teal":4157,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3916,3917]},{"teal":4161,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3918,3919]},{"teal":4162,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3920]},{"teal":4163,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3921]},{"teal":4166,"source":"contracts/validatorRegistry.algo.ts:914","errorMessage":"this validator doesn't have a reward token defined","pc":[3922]},{"teal":4170,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3923,3924]},{"teal":4171,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3925]},{"teal":4172,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3926]},{"teal":4173,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3927,3928]},{"teal":4174,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3929]},{"teal":4175,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3930]},{"teal":4176,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3931,3932]},{"teal":4177,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3933]},{"teal":4178,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3934]},{"teal":4179,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3935,3936]},{"teal":4184,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3937,3938]},{"teal":4185,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3939,3940]},{"teal":4186,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3941]},{"teal":4187,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3942,3943]},{"teal":4188,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3944,3945]},{"teal":4189,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3946]},{"teal":4190,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3947,3948]},{"teal":4191,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3949]},{"teal":4192,"source":"contracts/validatorRegistry.algo.ts:917","pc":[3950,3951]},{"teal":4199,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3952]},{"teal":4200,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3953,3954]},{"teal":4201,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3955,3956]},{"teal":4202,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3957,3958]},{"teal":4203,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3959,3960]},{"teal":4207,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3961,3962]},{"teal":4208,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3963,3964]},{"teal":4212,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3965,3966]},{"teal":4213,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3967,3968]},{"teal":4214,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3969,3970]},{"teal":4215,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3971]},{"teal":4216,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3972,3973]},{"teal":4217,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3974,3975]},{"teal":4218,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3976]},{"teal":4219,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3977,3978]},{"teal":4222,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3979]},{"teal":4223,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3980,3981]},{"teal":4226,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3982]},{"teal":4233,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3983,3984]},{"teal":4234,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3985,3986]},{"teal":4235,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3987]},{"teal":4236,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3988,3989]},{"teal":4237,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3990,3991]},{"teal":4238,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3992]},{"teal":4239,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3993,3994]},{"teal":4240,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3995]},{"teal":4243,"source":"contracts/validatorRegistry.algo.ts:925","errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[3996]},{"teal":4247,"source":"contracts/validatorRegistry.algo.ts:929","pc":[3997,3998]},{"teal":4250,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3999,4000]},{"teal":4253,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4001,4002]},{"teal":4254,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4003]},{"teal":4258,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4004,4005,4006]},{"teal":4265,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4007,4008]},{"teal":4266,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4009]},{"teal":4267,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4010,4011]},{"teal":4268,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4012]},{"teal":4269,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4013,4014]},{"teal":4270,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4015]},{"teal":4271,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4016]},{"teal":4272,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4017,4018]},{"teal":4273,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4019]},{"teal":4274,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4020]},{"teal":4277,"source":"contracts/validatorRegistry.algo.ts:1022","errorMessage":"can only be called by validator owner","pc":[4021]},{"teal":4278,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4022]},{"teal":4282,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4023,4024,4025]},{"teal":4290,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4026,4027]},{"teal":4291,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4028]},{"teal":4292,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4029,4030]},{"teal":4293,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4031]},{"teal":4294,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4032,4033]},{"teal":4295,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4034]},{"teal":4296,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4035]},{"teal":4297,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4036,4037]},{"teal":4298,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4038]},{"teal":4299,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4039]},{"teal":4300,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4040]},{"teal":4301,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4041,4042,4043]},{"teal":4302,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4044,4045]},{"teal":4303,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4046,4047]},{"teal":4304,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4048,4049]},{"teal":4305,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4050]},{"teal":4306,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4051,4052]},{"teal":4307,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4053]},{"teal":4308,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4054]},{"teal":4309,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4055,4056]},{"teal":4310,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4057]},{"teal":4311,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4058]},{"teal":4312,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4059]},{"teal":4316,"source":"contracts/validatorRegistry.algo.ts:1029","errorMessage":"can only be called by owner or manager of validator","pc":[4060]},{"teal":4317,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4061]},{"teal":4325,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4062,4063,4064]},{"teal":4329,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4065]},{"teal":4330,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4066,4067]},{"teal":4331,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4068,4069,4070]},{"teal":4332,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4071]},{"teal":4333,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4072]},{"teal":4334,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4073]},{"teal":4335,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4074]},{"teal":4336,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4075]},{"teal":4337,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4076]},{"teal":4340,"source":"contracts/validatorRegistry.algo.ts:1042","errorMessage":"the specified validator id isn't valid","pc":[4077]},{"teal":4344,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4078,4079]},{"teal":4345,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4080,4081,4082]},{"teal":4346,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4083]},{"teal":4347,"source":"contracts/constants.algo.ts:30","pc":[4084]},{"teal":4348,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4085]},{"teal":4351,"source":"contracts/validatorRegistry.algo.ts:1043","errorMessage":"pool id not in valid range","pc":[4086]},{"teal":4358,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4087,4088]},{"teal":4359,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4089,4090,4091]},{"teal":4360,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4092]},{"teal":4361,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4093]},{"teal":4362,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4094]},{"teal":4363,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4095]},{"teal":4364,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4096,4097,4098]},{"teal":4365,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4099,4100]},{"teal":4366,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4101,4102,4103]},{"teal":4367,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4104]},{"teal":4368,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4105,4106]},{"teal":4369,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4107,4108]},{"teal":4370,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4109]},{"teal":4371,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4110,4111]},{"teal":4372,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4112,4113,4114]},{"teal":4373,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4115]},{"teal":4374,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4116]},{"teal":4375,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4117]},{"teal":4376,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4118,4119]},{"teal":4377,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4120]},{"teal":4378,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4121]},{"teal":4379,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4122]},{"teal":4380,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4123]},{"teal":4384,"source":"contracts/validatorRegistry.algo.ts:1044","errorMessage":"pool id outside of range of pools created for this validator","pc":[4124]},{"teal":4391,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4125,4126]},{"teal":4392,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4127,4128,4129]},{"teal":4393,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4130]},{"teal":4394,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4131,4132]},{"teal":4395,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4133,4134]},{"teal":4396,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4135,4136,4137]},{"teal":4397,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4138]},{"teal":4398,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4139]},{"teal":4399,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4140]},{"teal":4400,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4141,4142]},{"teal":4401,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4143]},{"teal":4402,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4144]},{"teal":4403,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4145]},{"teal":4404,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4146]},{"teal":4405,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4147]},{"teal":4406,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4148]},{"teal":4407,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4149,4150]},{"teal":4408,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4151,4152,4153]},{"teal":4409,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4154]},{"teal":4410,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4155]},{"teal":4411,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4156]},{"teal":4412,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4157,4158]},{"teal":4413,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4159]},{"teal":4414,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4160]},{"teal":4415,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4161]},{"teal":4418,"source":"contracts/validatorRegistry.algo.ts:1050","errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4162]},{"teal":4422,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4163,4164]},{"teal":4423,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4165,4166]},{"teal":4424,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4167,4168,4169]},{"teal":4425,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4170]},{"teal":4426,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4171,4172]},{"teal":4427,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4173]},{"teal":4428,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4174]},{"teal":4429,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4175]},{"teal":4433,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4176,4177]},{"teal":4434,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4178,4179,4180]},{"teal":4435,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4181]},{"teal":4436,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4182,4183]},{"teal":4437,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4184,4185,4186]},{"teal":4438,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4187]},{"teal":4439,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200]},{"teal":4440,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4201]},{"teal":4443,"source":"contracts/validatorRegistry.algo.ts:1057","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4202]},{"teal":4444,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4203]},{"teal":4445,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4204]},{"teal":4449,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4205,4206]},{"teal":4450,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4207,4208,4209]},{"teal":4451,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4210]},{"teal":4452,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4211,4212]},{"teal":4453,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4213,4214,4215]},{"teal":4454,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4216]},{"teal":4455,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4217,4218,4219,4220,4221,4222,4223,4224]},{"teal":4456,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4225]},{"teal":4459,"source":"contracts/validatorRegistry.algo.ts:1058","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4226]},{"teal":4460,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4227]},{"teal":4461,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4228]},{"teal":4462,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4229]},{"teal":4471,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4230,4231,4232]},{"teal":4474,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4233]},{"teal":4475,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4234]},{"teal":4479,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4235]},{"teal":4480,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4236,4237]},{"teal":4481,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4238]},{"teal":4482,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4239]},{"teal":4483,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4240,4241]},{"teal":4488,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4242,4243]},{"teal":4489,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4244]},{"teal":4490,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4245]},{"teal":4491,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4246,4247]},{"teal":4492,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4248]},{"teal":4493,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4249]},{"teal":4494,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4250,4251]},{"teal":4495,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4252]},{"teal":4496,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4253]},{"teal":4497,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4254]},{"teal":4498,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4255]},{"teal":4499,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4256,4257,4258]},{"teal":4504,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4259,4260]},{"teal":4505,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4261]},{"teal":4506,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4262]},{"teal":4507,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4263,4264]},{"teal":4508,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4265]},{"teal":4509,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4266]},{"teal":4510,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4267,4268]},{"teal":4511,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4269]},{"teal":4512,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4270]},{"teal":4513,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4271,4272]},{"teal":4514,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4273]},{"teal":4517,"source":"contracts/validatorRegistry.algo.ts:1072","errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4274]},{"teal":4518,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4275,4276]},{"teal":4523,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4277]},{"teal":4524,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4278,4279]},{"teal":4525,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4280]},{"teal":4526,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4281,4282]},{"teal":4527,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4283]},{"teal":4528,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4284]},{"teal":4529,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4285,4286]},{"teal":4530,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4287]},{"teal":4531,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4288,4289]},{"teal":4532,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4290]},{"teal":4533,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4291]},{"teal":4534,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4292,4293,4294]},{"teal":4535,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4295,4296]},{"teal":4536,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4297,4298]},{"teal":4537,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4299]},{"teal":4538,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4300,4301]},{"teal":4539,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4302]},{"teal":4540,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4303]},{"teal":4541,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4304,4305]},{"teal":4542,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4306]},{"teal":4543,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4307,4308]},{"teal":4544,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4309]},{"teal":4545,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4310]},{"teal":4548,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4311,4312,4313]},{"teal":4553,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4314,4315]},{"teal":4554,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4316,4317]},{"teal":4555,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4318]},{"teal":4556,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4319,4320]},{"teal":4557,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4321]},{"teal":4558,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4322]},{"teal":4559,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4323,4324]},{"teal":4560,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4325]},{"teal":4565,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4326]},{"teal":4569,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4327,4328,4329]},{"teal":4573,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4330,4331]},{"teal":4574,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4332,4333,4334]},{"teal":4575,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4335,4336]},{"teal":4576,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4337]},{"teal":4577,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4338]},{"teal":4581,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4339,4340]},{"teal":4582,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4341,4342,4343]},{"teal":4583,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4344,4345]},{"teal":4584,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4346]},{"teal":4585,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4347]},{"teal":4589,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4348,4349]},{"teal":4590,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4350,4351]},{"teal":4591,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4352,4353,4354]},{"teal":4592,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4355]},{"teal":4595,"source":"contracts/validatorRegistry.algo.ts:1085","errorMessage":"sender must be owner to add new validator","pc":[4356]},{"teal":4602,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4357,4358]},{"teal":4603,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4359,4360,4361]},{"teal":4604,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4362]},{"teal":4605,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4363]},{"teal":4606,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4364]},{"teal":4607,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4365]},{"teal":4608,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4366,4367,4368]},{"teal":4609,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4369,4370]},{"teal":4610,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4371,4372,4373]},{"teal":4611,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4374]},{"teal":4612,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4375,4376]},{"teal":4613,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4377]},{"teal":4614,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4378]},{"teal":4618,"source":"contracts/validatorRegistry.algo.ts:1087","errorMessage":"gating type not valid","pc":[4379]},{"teal":4625,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4380,4381]},{"teal":4626,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4382,4383,4384]},{"teal":4627,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4385]},{"teal":4628,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4386]},{"teal":4629,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4387]},{"teal":4630,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4388]},{"teal":4631,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4389,4390,4391]},{"teal":4632,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4392,4393]},{"teal":4633,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4394,4395,4396]},{"teal":4634,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4397]},{"teal":4635,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4398,4399]},{"teal":4636,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4400]},{"teal":4637,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4401]},{"teal":4641,"source":"contracts/validatorRegistry.algo.ts:1091","errorMessage":"epoch length not in allowable range","pc":[4402]},{"teal":4648,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4403,4404]},{"teal":4649,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4405,4406,4407]},{"teal":4650,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4408]},{"teal":4651,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4409]},{"teal":4652,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4410]},{"teal":4653,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4411]},{"teal":4654,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4412,4413,4414]},{"teal":4655,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4415,4416]},{"teal":4656,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4417,4418,4419]},{"teal":4657,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4420]},{"teal":4658,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4421,4422]},{"teal":4659,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4423]},{"teal":4660,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4424]},{"teal":4664,"source":"contracts/validatorRegistry.algo.ts:1095","errorMessage":"commission percentage not valid","pc":[4425]},{"teal":4669,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4426,4427]},{"teal":4670,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4428,4429,4430]},{"teal":4671,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4431]},{"teal":4672,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4432]},{"teal":4673,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4433]},{"teal":4674,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4434,4435,4436]},{"teal":4682,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4437,4438]},{"teal":4683,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4439,4440,4441]},{"teal":4684,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4442,4443]},{"teal":4685,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4444]},{"teal":4688,"source":"contracts/validatorRegistry.algo.ts:1100","errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4445]},{"teal":4693,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4446,4447]},{"teal":4694,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4448,4449,4450]},{"teal":4695,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4451]},{"teal":4696,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4452,4453]},{"teal":4697,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4454]},{"teal":4700,"source":"contracts/validatorRegistry.algo.ts:1105","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4455]},{"teal":4707,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4456,4457]},{"teal":4708,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4458,4459,4460]},{"teal":4709,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4461]},{"teal":4710,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4462]},{"teal":4711,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4463]},{"teal":4712,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4464]},{"teal":4713,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4465,4466,4467]},{"teal":4714,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4468,4469]},{"teal":4715,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4470,4471,4472]},{"teal":4716,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4473]},{"teal":4717,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4474,4475]},{"teal":4718,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4476]},{"teal":4719,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4477]},{"teal":4723,"source":"contracts/validatorRegistry.algo.ts:1107","errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4478]},{"teal":4728,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4479,4480]},{"teal":4729,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4481,4482,4483]},{"teal":4730,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4484]},{"teal":4731,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4485]},{"teal":4732,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4486]},{"teal":4733,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4487,4488,4489]},{"teal":4738,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4490,4491]},{"teal":4739,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4492,4493,4494]},{"teal":4740,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4495]},{"teal":4741,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4496,4497]},{"teal":4742,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4498]},{"teal":4745,"source":"contracts/validatorRegistry.algo.ts:1112","errorMessage":"sunsettingOn must be later than now if set","pc":[4499]},{"teal":4748,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4500]},{"teal":4762,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4501,4502,4503]},{"teal":4765,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4504]},{"teal":4766,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4505,4506]},{"teal":4770,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4507,4508]},{"teal":4771,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4509,4510]},{"teal":4772,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4511,4512,4513]},{"teal":4773,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4514]},{"teal":4774,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4515]},{"teal":4775,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4516]},{"teal":4776,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4517,4518]},{"teal":4777,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4519]},{"teal":4778,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4520]},{"teal":4779,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4521]},{"teal":4780,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4522]},{"teal":4781,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4523]},{"teal":4782,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4524]},{"teal":4783,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4525,4526]},{"teal":4784,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4527,4528,4529]},{"teal":4785,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4530]},{"teal":4786,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4531]},{"teal":4787,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4532]},{"teal":4788,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4533,4534]},{"teal":4789,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4535]},{"teal":4790,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4536]},{"teal":4791,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4537,4538]},{"teal":4804,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4539]},{"teal":4805,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4540]},{"teal":4806,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4541,4542]},{"teal":4810,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4543,4544]},{"teal":4811,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4545,4546]},{"teal":4812,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4547,4548]},{"teal":4813,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4549]},{"teal":4814,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4550,4551]},{"teal":4818,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4552,4553]},{"teal":4819,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4554,4555]},{"teal":4820,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4556]},{"teal":4821,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4557,4558]},{"teal":4824,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4559]},{"teal":4825,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4560,4561]},{"teal":4826,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4562]},{"teal":4827,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4563,4564]},{"teal":4828,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4565,4566]},{"teal":4829,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4567,4568,4569,4570,4571,4572]},{"teal":4830,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4573,4574]},{"teal":4834,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4575,4576]},{"teal":4835,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4577,4578]},{"teal":4845,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4579,4580]},{"teal":4846,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4581,4582]},{"teal":4847,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4583,4584]},{"teal":4850,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4585]},{"teal":4851,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4586,4587]},{"teal":4854,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4588]},{"teal":4855,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4589,4590]},{"teal":4856,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4591]},{"teal":4857,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4592]},{"teal":4858,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4593,4594]},{"teal":4859,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4595,4596,4597]},{"teal":4860,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4598]},{"teal":4865,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4599,4600]},{"teal":4866,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4601,4602,4603]},{"teal":4867,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4604]},{"teal":4868,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4605,4606,4607]},{"teal":4873,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4608]},{"teal":4874,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4609,4610]},{"teal":4875,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4611,4612]},{"teal":4876,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4613]},{"teal":4877,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4614,4615]},{"teal":4878,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4616,4617]},{"teal":4879,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4618]},{"teal":4880,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4619,4620]},{"teal":4881,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4621,4622]},{"teal":4882,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4623,4624]},{"teal":4883,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4625,4626]},{"teal":4884,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4627]},{"teal":4889,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4628,4629]},{"teal":4890,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4630,4631]},{"teal":4891,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4632]},{"teal":4894,"source":"contracts/validatorRegistry.algo.ts:1153","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4633]},{"teal":4895,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4634,4635]},{"teal":4899,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4636,4637]},{"teal":4900,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4638,4639]},{"teal":4901,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4640]},{"teal":4904,"source":"contracts/validatorRegistry.algo.ts:1154","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4641]},{"teal":4905,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4642,4643]},{"teal":4909,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4644,4645]},{"teal":4910,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4646,4647]},{"teal":4911,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4648,4649,4650]},{"teal":4912,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4651]},{"teal":4913,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4652]},{"teal":4914,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4653]},{"teal":4915,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4654,4655]},{"teal":4916,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4656]},{"teal":4917,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4657]},{"teal":4918,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4658]},{"teal":4919,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4659]},{"teal":4920,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4660,4661]},{"teal":4921,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4662]},{"teal":4922,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4663,4664,4665]},{"teal":4923,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4666]},{"teal":4924,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4667,4668]},{"teal":4925,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4669,4670,4671]},{"teal":4926,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4672]},{"teal":4927,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4673]},{"teal":4928,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4674]},{"teal":4929,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4675,4676]},{"teal":4930,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4677]},{"teal":4934,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4678,4679]},{"teal":4935,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4680,4681]},{"teal":4936,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4682,4683,4684]},{"teal":4937,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4685]},{"teal":4938,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4686]},{"teal":4939,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4687]},{"teal":4940,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4688,4689]},{"teal":4941,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4690]},{"teal":4942,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4691]},{"teal":4943,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4692,4693]},{"teal":4944,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4694]},{"teal":4945,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4695,4696]},{"teal":4946,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4697]},{"teal":4947,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4698]},{"teal":4948,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4699,4700]},{"teal":4949,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4701,4702,4703]},{"teal":4950,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4704]},{"teal":4951,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4705]},{"teal":4952,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4706]},{"teal":4953,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4707,4708]},{"teal":4954,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4709]},{"teal":4959,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4710,4711]},{"teal":4960,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4712,4713,4714]},{"teal":4965,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4715,4716]},{"teal":4966,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4717]},{"teal":4967,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4718]},{"teal":4968,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4719]},{"teal":4969,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4720,4721]},{"teal":4970,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4722,4723,4724]},{"teal":4971,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4725]},{"teal":4972,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4726]},{"teal":4973,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4727]},{"teal":4974,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4728,4729]},{"teal":4975,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4730]},{"teal":4976,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4731]},{"teal":4977,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4732]},{"teal":4978,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4733]},{"teal":4979,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4734]},{"teal":4980,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4735]},{"teal":4981,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4736,4737]},{"teal":4982,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4738,4739,4740]},{"teal":4983,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4741]},{"teal":4984,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4742]},{"teal":4985,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4743]},{"teal":4986,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4744,4745]},{"teal":4987,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4746]},{"teal":4993,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4747,4748]},{"teal":4994,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4749,4750,4751]},{"teal":4999,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4752,4753]},{"teal":5000,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4754]},{"teal":5001,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4755]},{"teal":5002,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4756]},{"teal":5003,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4757,4758]},{"teal":5004,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4759]},{"teal":5005,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4760]},{"teal":5010,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4761,4762]},{"teal":5011,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4763]},{"teal":5012,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4764]},{"teal":5013,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4765]},{"teal":5014,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4766,4767]},{"teal":5015,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4768,4769,4770]},{"teal":5016,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4771]},{"teal":5017,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4772]},{"teal":5018,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4773]},{"teal":5019,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4774,4775]},{"teal":5020,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4776]},{"teal":5021,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4777]},{"teal":5022,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4778,4779]},{"teal":5023,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4780,4781]},{"teal":5024,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4782,4783]},{"teal":5025,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4784]},{"teal":5026,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4785]},{"teal":5027,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4786]},{"teal":5028,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4787]},{"teal":5029,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4788,4789]},{"teal":5030,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4790,4791,4792]},{"teal":5031,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4793]},{"teal":5032,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4794]},{"teal":5033,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4795]},{"teal":5034,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4796,4797]},{"teal":5035,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4798]},{"teal":5039,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4799,4800]},{"teal":5040,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4801]},{"teal":5041,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4802,4803]},{"teal":5042,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4804,4805]},{"teal":5043,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4806,4807]},{"teal":5044,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4808]},{"teal":5045,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4809]},{"teal":5046,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4810,4811]},{"teal":5047,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4812]},{"teal":5048,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4813]},{"teal":5049,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4814]},{"teal":5053,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4815,4816,4817]},{"teal":5056,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4818]},{"teal":5057,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4819,4820]},{"teal":5061,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4821]},{"teal":5062,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4822,4823]},{"teal":5063,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4824]},{"teal":5064,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4825]},{"teal":5065,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4826]},{"teal":5066,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4827]},{"teal":5067,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4828]},{"teal":5071,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4829]},{"teal":5072,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4830,4831]},{"teal":5073,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4832]},{"teal":5074,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4833]},{"teal":5077,"source":"contracts/validatorRegistry.algo.ts:1172","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4834]},{"teal":5078,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4835,4836]},{"teal":5082,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4837]},{"teal":5083,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4838,4839]},{"teal":5087,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4840]},{"teal":5088,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4841,4842]},{"teal":5093,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4843,4844]},{"teal":5094,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4845,4846]},{"teal":5095,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4847]},{"teal":5096,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4848,4849,4850]},{"teal":5101,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4851,4852]},{"teal":5102,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4853,4854]},{"teal":5103,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4855]},{"teal":5104,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4856]},{"teal":5105,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4857]},{"teal":5106,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4858]},{"teal":5107,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4859,4860]},{"teal":5108,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4861]},{"teal":5109,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4862,4863,4864]},{"teal":5114,"source":"contracts/validatorRegistry.algo.ts:1177","pc":[4865]},{"teal":5120,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4866,4867]},{"teal":5121,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4868]},{"teal":5122,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4869]},{"teal":5123,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4870]},{"teal":5124,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4871,4872,4873]},{"teal":5125,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4874,4875]},{"teal":5126,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4876,4877]},{"teal":5127,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4878]},{"teal":5128,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4879]},{"teal":5129,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4880]},{"teal":5130,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4881]},{"teal":5131,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4882]},{"teal":5132,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4883]},{"teal":5133,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4884]},{"teal":5134,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4885]},{"teal":5135,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4886]},{"teal":5136,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4887]},{"teal":5139,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4888,4889,4890]},{"teal":5144,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4891,4892]},{"teal":5145,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4893]},{"teal":5146,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4894]},{"teal":5147,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4895,4896]},{"teal":5154,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4897,4898]},{"teal":5155,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4899]},{"teal":5156,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4900]},{"teal":5157,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4901,4902]},{"teal":5158,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4903,4904,4905]},{"teal":5164,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4906,4907]},{"teal":5165,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4908]},{"teal":5166,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4909]},{"teal":5167,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4910,4911,4912]},{"teal":5171,"source":"contracts/validatorRegistry.algo.ts:1184","errorMessage":"No empty slot available in the staker pool set","pc":[4913]},{"teal":5176,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4914,4915]},{"teal":5177,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4916]},{"teal":5178,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4917]},{"teal":5179,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4918]},{"teal":5180,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4919]},{"teal":5181,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4920,4921]},{"teal":5182,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4922]},{"teal":5183,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4923,4924]},{"teal":5184,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4925]},{"teal":5185,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4926,4927]},{"teal":5186,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4928]},{"teal":5187,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4929]},{"teal":5198,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4930,4931,4932]},{"teal":5201,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4933]},{"teal":5202,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4934,4935]},{"teal":5206,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4936]},{"teal":5207,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4937,4938]},{"teal":5211,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4939]},{"teal":5212,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4940,4941]},{"teal":5216,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4942]},{"teal":5217,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4943,4944]},{"teal":5221,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4945]},{"teal":5222,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4946,4947]},{"teal":5223,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4948]},{"teal":5224,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4949]},{"teal":5227,"source":"contracts/validatorRegistry.algo.ts:1203","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4950]},{"teal":5228,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4951,4952]},{"teal":5232,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4953]},{"teal":5233,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4954,4955]},{"teal":5238,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4956,4957]},{"teal":5239,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4958,4959]},{"teal":5240,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4960]},{"teal":5241,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4961,4962,4963]},{"teal":5246,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4964,4965]},{"teal":5247,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4966,4967]},{"teal":5248,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4968]},{"teal":5249,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4969]},{"teal":5250,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4970]},{"teal":5251,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4971]},{"teal":5252,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4972]},{"teal":5253,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4973]},{"teal":5254,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4974]},{"teal":5255,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4975]},{"teal":5256,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4976]},{"teal":5257,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4977,4978,4979]},{"teal":5260,"source":"contracts/validatorRegistry.algo.ts:1206","pc":[4980,4981,4982]},{"teal":5265,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4983,4984]},{"teal":5266,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4985]},{"teal":5267,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4986]},{"teal":5268,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4987,4988]},{"teal":5273,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4989,4990]},{"teal":5274,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4991,4992]},{"teal":5275,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4993]},{"teal":5276,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4994]},{"teal":5277,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4995]},{"teal":5278,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4996]},{"teal":5279,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4997]},{"teal":5280,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4998]},{"teal":5281,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4999]},{"teal":5282,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5000,5001]},{"teal":5283,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5002,5003,5004]},{"teal":5284,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5005]},{"teal":5285,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5006]},{"teal":5286,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5007,5008,5009]},{"teal":5292,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5010,5011]},{"teal":5293,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5012,5013]},{"teal":5294,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5014]},{"teal":5295,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5015]},{"teal":5296,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5016]},{"teal":5297,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5017]},{"teal":5298,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5018,5019]},{"teal":5299,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5020]},{"teal":5300,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5021,5022,5023]},{"teal":5305,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5024]},{"teal":5306,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5025,5026]},{"teal":5310,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5027,5028]},{"teal":5311,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5029]},{"teal":5312,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5030]},{"teal":5313,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056]},{"teal":5314,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5057]},{"teal":5315,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5058,5059]},{"teal":5316,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5060]},{"teal":5317,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5061,5062]},{"teal":5318,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5063]},{"teal":5319,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5064,5065,5066]},{"teal":5324,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5067,5068]},{"teal":5325,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5069]},{"teal":5326,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5070]},{"teal":5327,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5071,5072]},{"teal":5336,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5073,5074]},{"teal":5337,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5075]},{"teal":5338,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5076]},{"teal":5339,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5077,5078]},{"teal":5340,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5079,5080,5081]},{"teal":5346,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5082,5083]},{"teal":5347,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5084]},{"teal":5348,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5085,5086,5087]},{"teal":5352,"source":"contracts/validatorRegistry.algo.ts:1220","errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5088]},{"teal":5357,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5089,5090]},{"teal":5358,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5091]},{"teal":5359,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5092,5093]},{"teal":5360,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5094]},{"teal":5361,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5095]},{"teal":5362,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5096]},{"teal":5363,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5097]},{"teal":5364,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5098,5099]},{"teal":5365,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5100]},{"teal":5366,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5101]},{"teal":5367,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5102]},{"teal":5370,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5103,5104]},{"teal":5373,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5105,5106]},{"teal":5374,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5107]},{"teal":5378,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5108,5109,5110]},{"teal":5381,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5111]},{"teal":5382,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5112,5113]},{"teal":5386,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5114,5115]},{"teal":5387,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5116,5117]},{"teal":5388,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5118]},{"teal":5389,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5119,5120]},{"teal":5390,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5121]},{"teal":5391,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5122]},{"teal":5392,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5123,5124]},{"teal":5393,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5125]},{"teal":5394,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5126,5127]},{"teal":5398,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5128,5129,5130]},{"teal":5399,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5131]},{"teal":5400,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5132]},{"teal":5401,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5133,5134]},{"teal":5402,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5135]},{"teal":5403,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5136]},{"teal":5404,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5137,5138]},{"teal":5405,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5139]},{"teal":5406,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5140]},{"teal":5407,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5141,5142]},{"teal":5411,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5143,5144]},{"teal":5412,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5145]},{"teal":5413,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5146]},{"teal":5414,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5147]},{"teal":5415,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5148,5149,5150]},{"teal":5416,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5151,5152]},{"teal":5417,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5153]},{"teal":5418,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5154]},{"teal":5419,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5155]},{"teal":5423,"source":"contracts/validatorRegistry.algo.ts:1230","errorMessage":"node number not in valid range","pc":[5156]},{"teal":5427,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5157]},{"teal":5428,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5158,5159]},{"teal":5433,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5160,5161]},{"teal":5434,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5162,5163]},{"teal":5435,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5164]},{"teal":5436,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5165,5166,5167]},{"teal":5441,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5168,5169]},{"teal":5442,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5170]},{"teal":5443,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5171,5172]},{"teal":5444,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5173]},{"teal":5445,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5174]},{"teal":5446,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5175]},{"teal":5447,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5176]},{"teal":5448,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5177]},{"teal":5449,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5178]},{"teal":5450,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5179]},{"teal":5451,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5180,5181]},{"teal":5452,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5182]},{"teal":5453,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5183]},{"teal":5454,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5184]},{"teal":5455,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5185]},{"teal":5456,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5186]},{"teal":5457,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5187]},{"teal":5458,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5188]},{"teal":5459,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5189]},{"teal":5460,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5190,5191,5192]},{"teal":5465,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5193,5194]},{"teal":5466,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5195,5196]},{"teal":5467,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5197]},{"teal":5468,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5198]},{"teal":5469,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5199]},{"teal":5470,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5200]},{"teal":5471,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5201]},{"teal":5472,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5202]},{"teal":5473,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5203]},{"teal":5474,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5204,5205]},{"teal":5475,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5206]},{"teal":5476,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5207]},{"teal":5477,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5208]},{"teal":5478,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5209,5210]},{"teal":5479,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5211]},{"teal":5480,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5212]},{"teal":5481,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5213,5214]},{"teal":5482,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5215]},{"teal":5483,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5216]},{"teal":5484,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5217,5218]},{"teal":5485,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5219]},{"teal":5489,"source":"contracts/validatorRegistry.algo.ts:1236","pc":[5220]},{"teal":5496,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5221,5222]},{"teal":5497,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5223]},{"teal":5498,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5224]},{"teal":5499,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5225,5226]},{"teal":5500,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5227,5228,5229]},{"teal":5504,"source":"contracts/validatorRegistry.algo.ts:1239","errorMessage":"no available space in specified node for this pool","pc":[5230]},{"teal":5505,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5231]},{"teal":5515,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5232,5233,5234]},{"teal":5518,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5235]},{"teal":5519,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5236,5237]},{"teal":5523,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5238,5239]},{"teal":5524,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5240]},{"teal":5525,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5241]},{"teal":5526,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5242,5243]},{"teal":5527,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5244]},{"teal":5528,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5245]},{"teal":5529,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5246,5247]},{"teal":5530,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5248]},{"teal":5531,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5249]},{"teal":5532,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5250,5251]},{"teal":5537,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5252,5253]},{"teal":5538,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5254]},{"teal":5539,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5255]},{"teal":5540,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5256,5257,5258]},{"teal":5545,"source":"contracts/validatorRegistry.algo.ts:1252","pc":[5259]},{"teal":5550,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5260,5261]},{"teal":5551,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5262,5263]},{"teal":5555,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5264]},{"teal":5556,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5265,5266]},{"teal":5557,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5267]},{"teal":5558,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5268,5269]},{"teal":5559,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5270]},{"teal":5560,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5271]},{"teal":5561,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5272,5273]},{"teal":5562,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5274]},{"teal":5563,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5275,5276]},{"teal":5570,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5277,5278]},{"teal":5571,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5279]},{"teal":5572,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5280]},{"teal":5573,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5281]},{"teal":5574,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5282,5283,5284]},{"teal":5575,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5285,5286]},{"teal":5576,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5287,5288]},{"teal":5577,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5289]},{"teal":5578,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5290]},{"teal":5581,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5291]},{"teal":5582,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5292,5293,5294]},{"teal":5583,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5295,5296]},{"teal":5584,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5297,5298]},{"teal":5585,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5299]},{"teal":5586,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5300]},{"teal":5589,"source":"contracts/validatorRegistry.algo.ts:1258","pc":[5301,5302,5303]},{"teal":5594,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5304,5305]},{"teal":5595,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5306]},{"teal":5596,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5307]},{"teal":5597,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5308]},{"teal":5601,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5309,5310]},{"teal":5602,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5311]},{"teal":5603,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5312]},{"teal":5604,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5313,5314]},{"teal":5605,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5315]},{"teal":5606,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5316]},{"teal":5607,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5317,5318]},{"teal":5608,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5319]},{"teal":5609,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5320]},{"teal":5610,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5321,5322]},{"teal":5615,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5323,5324]},{"teal":5616,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5325]},{"teal":5617,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5326]},{"teal":5618,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5327,5328,5329]},{"teal":5623,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5330]},{"teal":5624,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5331,5332]},{"teal":5632,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5333,5334]},{"teal":5633,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5335,5336]},{"teal":5634,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5337,5338]},{"teal":5635,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5339]},{"teal":5636,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5340,5341]},{"teal":5637,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5342]},{"teal":5640,"source":"contracts/validatorRegistry.algo.ts:1268","errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5343]},{"teal":5646,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5344,5345]},{"teal":5647,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5346]},{"teal":5648,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5347]},{"teal":5649,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5348,5349,5350]},{"teal":5657,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5351,5352]},{"teal":5658,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5353,5354]},{"teal":5659,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5355]},{"teal":5660,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5356,5357]},{"teal":5661,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5358,5359,5360]},{"teal":5662,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5361]},{"teal":5665,"source":"contracts/validatorRegistry.algo.ts:1274","errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5362]},{"teal":5671,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5363,5364]},{"teal":5672,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5365,5366]},{"teal":5673,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5367]},{"teal":5674,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5368,5369,5370]},{"teal":5679,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5371]},{"teal":5680,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5372,5373]},{"teal":5684,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5374,5375]},{"teal":5685,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5376,5377,5378]},{"teal":5686,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5379]},{"teal":5687,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5380,5381]},{"teal":5688,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5382,5383,5384]},{"teal":5689,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5385]},{"teal":5690,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5386,5387]},{"teal":5691,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5388]},{"teal":5692,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5389,5390]},{"teal":5698,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5391,5392]},{"teal":5699,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5393,5394]},{"teal":5700,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5395]},{"teal":5701,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5396,5397,5398]},{"teal":5706,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5399]},{"teal":5707,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5400,5401]},{"teal":5708,"source":"contracts/validatorRegistry.algo.ts:1284","pc":[5402,5403,5404]},{"teal":5714,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5405,5406]},{"teal":5715,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5407]},{"teal":5716,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5408]},{"teal":5717,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5409]},{"teal":5718,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5410,5411]},{"teal":5719,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5412]},{"teal":5720,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5413,5414,5415]},{"teal":5721,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5416,5417]},{"teal":5722,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5418,5419]},{"teal":5723,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5420,5421]},{"teal":5724,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5422]},{"teal":5725,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5423]},{"teal":5726,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5424]},{"teal":5727,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5425,5426]},{"teal":5728,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5427,5428,5429]},{"teal":5733,"source":"contracts/validatorRegistry.algo.ts:1287","pc":[5430,5431]},{"teal":5736,"source":"contracts/validatorRegistry.algo.ts:1287","errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5432]},{"teal":5742,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5433,5434]},{"teal":5743,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5435,5436]},{"teal":5744,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5437]},{"teal":5745,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5438,5439,5440]},{"teal":5753,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5441,5442]},{"teal":5754,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5443,5444]},{"teal":5755,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5445]},{"teal":5756,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5446,5447]},{"teal":5757,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5448,5449,5450]},{"teal":5758,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5451]},{"teal":5759,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5452,5453,5454]},{"teal":5762,"source":"contracts/validatorRegistry.algo.ts:1292","errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5455]},{"teal":5768,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5456,5457]},{"teal":5769,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5458,5459]},{"teal":5770,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5460]},{"teal":5771,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5461,5462,5463]},{"teal":5776,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5464,5465]},{"teal":5777,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5466,5467]},{"teal":5781,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5468,5469]},{"teal":5782,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5470,5471,5472]},{"teal":5785,"source":"contracts/validatorRegistry.algo.ts:1300","errorMessage":"provided NFD must be valid","pc":[5473]},{"teal":5793,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5474,5475]},{"teal":5794,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5476,5477]},{"teal":5795,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5478]},{"teal":5798,"source":"contracts/validatorRegistry.algo.ts:1304","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5479]},{"teal":5799,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5480,5481]},{"teal":5800,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5482]},{"teal":5801,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5483]},{"teal":5802,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5484,5485,5486]},{"teal":5803,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5487,5488]},{"teal":5804,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5489,5490]},{"teal":5805,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5491,5492,5493]},{"teal":5806,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5494]},{"teal":5810,"source":"contracts/validatorRegistry.algo.ts:1303","errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5495]},{"teal":5818,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5496,5497]},{"teal":5819,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512]},{"teal":5820,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5513]},{"teal":5823,"source":"contracts/validatorRegistry.algo.ts:1311","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5514]},{"teal":5824,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5515]},{"teal":5825,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5516,5517]},{"teal":5826,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5518,5519,5520]},{"teal":5827,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5521]},{"teal":5828,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5522]},{"teal":5831,"source":"contracts/validatorRegistry.algo.ts:1310","errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5523]},{"teal":5834,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5524]},{"teal":5846,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5525,5526,5527]},{"teal":5849,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5528]},{"teal":5853,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5529,5530]},{"teal":5854,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5531,5532,5533,5534,5535,5536,5537,5538]},{"teal":5855,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5539]},{"teal":5858,"source":"contracts/validatorRegistry.algo.ts:1329","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5540]},{"teal":5859,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5541,5542]},{"teal":5867,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5543]},{"teal":5868,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5544,5545]},{"teal":5869,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5546,5547]},{"teal":5870,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5548,5549,5550,5551,5552,5553]},{"teal":5871,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5554,5555]},{"teal":5875,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5556,5557]},{"teal":5876,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5558,5559]},{"teal":5880,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5560,5561]},{"teal":5881,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5562]},{"teal":5882,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5563]},{"teal":5883,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5564]},{"teal":5884,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5565,5566,5567]},{"teal":5885,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5568]},{"teal":5886,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5569]},{"teal":5887,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5570,5571]},{"teal":5888,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5572,5573]},{"teal":5889,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5574]},{"teal":5890,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5575,5576]},{"teal":5893,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5577]},{"teal":5894,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5578,5579]},{"teal":5897,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5580]},{"teal":5898,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5581,5582]},{"teal":5899,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5583]},{"teal":5900,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5584]},{"teal":5901,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5585,5586]},{"teal":5902,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5587,5588,5589]},{"teal":5903,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5590]},{"teal":5904,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5591]},{"teal":5907,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5592,5593]},{"teal":5908,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5594]},{"teal":5919,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5595,5596,5597]},{"teal":5922,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5598]},{"teal":5923,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5599,5600]},{"teal":5930,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5601]},{"teal":5931,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5602,5603]},{"teal":5932,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5604,5605]},{"teal":5936,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5606,5607]},{"teal":5937,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5608,5609]},{"teal":5941,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624]},{"teal":5942,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5625,5626]},{"teal":5943,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641]},{"teal":5944,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5642,5643]},{"teal":5947,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5644]},{"teal":5948,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5645,5646]},{"teal":5951,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5647]},{"teal":5955,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5648,5649]},{"teal":5956,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5650,5651]},{"teal":5960,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5652]},{"teal":5961,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5653,5654]},{"teal":5966,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5655,5656]},{"teal":5967,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5657,5658]},{"teal":5968,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5659]},{"teal":5969,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5660]},{"teal":5970,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5661,5662,5663]},{"teal":5974,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5664,5665]},{"teal":5975,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5666,5667]},{"teal":5976,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5668,5669]},{"teal":5977,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5670]},{"teal":5978,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5671,5672]},{"teal":5983,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5673,5674]},{"teal":5984,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5675,5676]},{"teal":5985,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5677]},{"teal":5986,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5678]},{"teal":5987,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5679,5680,5681]},{"teal":5988,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5682,5683]},{"teal":5989,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5684,5685]},{"teal":5990,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5686]},{"teal":5991,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5687]},{"teal":5994,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5688,5689,5690]},{"teal":5999,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5691]},{"teal":6000,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5692,5693,5694]},{"teal":6007,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5695,5696]},{"teal":6008,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5697,5698]},{"teal":6009,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5699]},{"teal":6010,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5700,5701]},{"teal":6011,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5702,5703,5704]},{"teal":6016,"source":"contracts/validatorRegistry.algo.ts:1358","pc":[5705]},{"teal":6020,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5706,5707]},{"teal":6023,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5708,5709]},{"teal":6024,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5710]},{"teal":6032,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5711,5712,5713]},{"teal":6035,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5714]},{"teal":6039,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5715,5716,5717]},{"teal":6040,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5718,5719]},{"teal":6044,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5720,5721]},{"teal":6045,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5722,5723]},{"teal":6046,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5724]},{"teal":6047,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5725]},{"teal":6048,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5726,5727]},{"teal":6049,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5728]},{"teal":6050,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5729]},{"teal":6051,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5730]},{"teal":6052,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5731]},{"teal":6053,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5732]},{"teal":6056,"source":"contracts/validatorRegistry.algo.ts:1369","errorMessage":"wideRatio failed","pc":[5733]},{"teal":6059,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5734,5735]},{"teal":6060,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5736]},{"teal":6067,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5737,5738,5739]},{"teal":6070,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5740]},{"teal":6074,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5741,5742,5743]},{"teal":6075,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5744,5745]},{"teal":6079,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5746,5747]},{"teal":6080,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5748,5749,5750]},{"teal":6081,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5751]},{"teal":6082,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5752]},{"teal":6083,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5753,5754]},{"teal":6084,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5755]},{"teal":6085,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5756]},{"teal":6086,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5757]},{"teal":6087,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5758]},{"teal":6088,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5759]},{"teal":6091,"source":"contracts/validatorRegistry.algo.ts:1379","errorMessage":"wideRatio failed","pc":[5760]},{"teal":6094,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5761,5762]},{"teal":6095,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5763]},{"teal":6101,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5764,5765,5766]},{"teal":6105,"source":"contracts/validatorRegistry.algo.ts:1386","pc":[5767,5768]},{"teal":6106,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5769]},{"teal":6110,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5770,5771,5772]},{"teal":6114,"source":"contracts/validatorRegistry.algo.ts:1390","pc":[5773]},{"teal":6115,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5774]},{"teal":6119,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5775,5776,5777]},{"teal":6122,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5778]},{"teal":6126,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5779,5780]},{"teal":6127,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5781,5782]},{"teal":6131,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5783,5784]},{"teal":6132,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5785,5786]},{"teal":6133,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5787,5788]},{"teal":6134,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5789]},{"teal":6135,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5790]},{"teal":6136,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5791,5792]},{"teal":6140,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5793,5794]},{"teal":6141,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5795,5796]},{"teal":6142,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5797,5798]},{"teal":6143,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5799]},{"teal":6144,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5800]},{"teal":6145,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5801,5802]},{"teal":6149,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5803,5804]},{"teal":6150,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5805,5806]},{"teal":6151,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5807,5808]},{"teal":6152,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5809]},{"teal":6153,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5810]},{"teal":6154,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5811,5812]},{"teal":6158,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5813,5814]},{"teal":6159,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5815,5816]},{"teal":6160,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5817,5818]},{"teal":6161,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5819]},{"teal":6162,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5820]},{"teal":6163,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5821,5822]},{"teal":6167,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5823,5824]},{"teal":6168,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5825,5826]},{"teal":6169,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5827,5828]},{"teal":6170,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5829]},{"teal":6171,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5830]},{"teal":6172,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5831,5832]},{"teal":6176,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5833,5834]},{"teal":6177,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5835,5836]},{"teal":6178,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5837,5838]},{"teal":6179,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5839]},{"teal":6180,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5840]},{"teal":6181,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5841,5842]},{"teal":6185,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5843,5844]},{"teal":6186,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5845,5846]},{"teal":6187,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5847,5848]},{"teal":6188,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5849]},{"teal":6189,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5850]},{"teal":6190,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5851,5852]},{"teal":6194,"source":"contracts/validatorRegistry.algo.ts:1410","pc":[5853,5854]},{"teal":6197,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5855,5856]},{"teal":6198,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5857]},{"teal":6202,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5858,5859,5860]},{"teal":6206,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5861,5862,5863]},{"teal":6207,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5864,5865]},{"teal":6208,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5866,5867,5868]},{"teal":6209,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5869]},{"teal":6210,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5870]},{"teal":6211,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5871]},{"teal":6214,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5872,5873,5874,5875,5876,5877]},{"teal":6215,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5878,5879,5880]},{"teal":6216,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5881,5882,5883,5884]},{"teal":6219,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[5885]},{"teal":6222,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5886,5887,5888,5889,5890,5891]},{"teal":6223,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5892,5893,5894,5895,5896,5897]},{"teal":6224,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5898,5899,5900,5901,5902,5903]},{"teal":6225,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5904,5905,5906,5907,5908,5909]},{"teal":6226,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5910,5911,5912,5913,5914,5915]},{"teal":6227,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5916,5917,5918,5919,5920,5921]},{"teal":6228,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5922,5923,5924,5925,5926,5927]},{"teal":6229,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5928,5929,5930,5931,5932,5933]},{"teal":6230,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5934,5935,5936,5937,5938,5939]},{"teal":6231,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5940,5941,5942,5943,5944,5945]},{"teal":6232,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5946,5947,5948,5949,5950,5951]},{"teal":6233,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5952,5953,5954,5955,5956,5957]},{"teal":6234,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5958,5959,5960,5961,5962,5963]},{"teal":6235,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5964,5965,5966,5967,5968,5969]},{"teal":6236,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5970,5971,5972,5973,5974,5975]},{"teal":6237,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5976,5977,5978,5979,5980,5981]},{"teal":6238,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5982,5983,5984,5985,5986,5987]},{"teal":6239,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5988,5989,5990,5991,5992,5993]},{"teal":6240,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5994,5995,5996,5997,5998,5999]},{"teal":6241,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6000,6001,6002,6003,6004,6005]},{"teal":6242,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6006,6007,6008,6009,6010,6011]},{"teal":6243,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6012,6013,6014,6015,6016,6017]},{"teal":6244,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6018,6019,6020,6021,6022,6023]},{"teal":6245,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6024,6025,6026,6027,6028,6029]},{"teal":6246,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6030,6031,6032,6033,6034,6035]},{"teal":6247,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6036,6037,6038,6039,6040,6041]},{"teal":6248,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6042,6043,6044,6045,6046,6047]},{"teal":6249,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6048,6049,6050,6051,6052,6053]},{"teal":6250,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6054,6055,6056,6057,6058,6059]},{"teal":6251,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6060,6061,6062,6063,6064,6065]},{"teal":6252,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6066,6067,6068,6069,6070,6071]},{"teal":6253,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6072,6073,6074,6075,6076,6077]},{"teal":6254,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6078,6079,6080,6081,6082,6083]},{"teal":6255,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6084,6085,6086]},{"teal":6256,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154]},{"teal":6259,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6155]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract /** * A state record containing binary data diff --git a/contracts/package.json b/contracts/package.json index d8df7d51..35735c61 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -3,7 +3,7 @@ "version": "0.11.8", "license": "MIT", "scripts": { - "generate-client": "pnpx @algorandfoundation/algokit-client-generator@4.0.0 generate -a contracts/artifacts/StakingPool.arc56_draft.json -o contracts/clients/StakingPoolClient.ts && pnpx @algorandfoundation/algokit-client-generator@4.0.0 generate -a contracts/artifacts/ValidatorRegistry.arc56_draft.json -o contracts/clients/ValidatorRegistryClient.ts && ./update_contract_artifacts.sh", + "generate-client": "algokit generate client contracts/artifacts/ --language typescript --output contracts/clients/{contract_name}Client.ts && ./update_contract_artifacts.sh", "compile-contract": "tealscript contracts/*.algo.ts contracts/artifacts", "generate-components": "algokit-generate-component contracts/artifacts/validatorRegistry.arc32.json contracts/artifacts/components", "noalgobuild": "pnpm run compile-contract -- --skip-algod && pnpm run generate-client", @@ -22,7 +22,7 @@ }, "devDependencies": { "@algorandfoundation/algokit-client-generator": "4.0.0", - "@algorandfoundation/tealscript": "0.105.5", + "@algorandfoundation/tealscript": "0.106.0", "@joe-p/algokit-generate-component": "0.2.1", "@typescript-eslint/eslint-plugin": "8.8.1", "@typescript-eslint/parser": "8.8.1", diff --git a/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json b/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json index b56ff928..362a0e95 100644 --- a/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json +++ b/nodemgr/internal/lib/reti/artifacts/contracts/StakingPool.arc32.json @@ -156,7 +156,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json b/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json index 445cd44c..5d1a8050 100644 --- a/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json +++ b/nodemgr/internal/lib/reti/artifacts/contracts/ValidatorRegistry.arc32.json @@ -216,7 +216,7 @@ } }, "source": { - "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", + "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDEx" }, "contract": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 045d9269..7869c176 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,8 +21,8 @@ importers: specifier: 4.0.0 version: 4.0.0(@algorandfoundation/algokit-utils@7.0.0(algosdk@2.9.0))(algosdk@2.9.0) '@algorandfoundation/tealscript': - specifier: 0.105.5 - version: 0.105.5 + specifier: 0.106.0 + version: 0.106.0 '@joe-p/algokit-generate-component': specifier: 0.2.1 version: 0.2.1(chokidar@3.6.0) @@ -360,8 +360,8 @@ packages: peerDependencies: algosdk: '>=2.9.0 <3.0' - '@algorandfoundation/tealscript@0.105.5': - resolution: {integrity: sha512-Vt805Hs6BTeA1XAHuZc7D/O52YuO/4UIUr8QqYxjqsP63xTFufITRhE0ce26EvtlTCIzwa3k1P44DyRHfkGYUA==} + '@algorandfoundation/tealscript@0.106.0': + resolution: {integrity: sha512-CN3TmBqIrOW5rsnB3NvaNRe3XAGMOItQkvZBobFrxn9M8HxTona7ZrkbJX9IpgzNE7Byond8fSn8gqXex0Tuew==} hasBin: true '@alloc/quick-lru@5.2.0': @@ -5146,7 +5146,7 @@ snapshots: algosdk: 2.9.0 buffer: 6.0.3 - '@algorandfoundation/tealscript@0.105.5': + '@algorandfoundation/tealscript@0.106.0': dependencies: '@microsoft/tsdoc': 0.14.2 '@playwright/test': 1.48.0 diff --git a/ui/src/contracts/StakingPoolClient.ts b/ui/src/contracts/StakingPoolClient.ts index 2b44a052..634572a2 100644 --- a/ui/src/contracts/StakingPoolClient.ts +++ b/ui/src/contracts/StakingPoolClient.ts @@ -24,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { Address, encodeAddress, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/stakingPool.algo.ts:37","pc":[1,2]},{"teal":16,"source":"contracts/stakingPool.algo.ts:37","pc":[3]},{"teal":17,"source":"contracts/stakingPool.algo.ts:37","pc":[4]},{"teal":18,"source":"contracts/stakingPool.algo.ts:37","pc":[5]},{"teal":19,"source":"contracts/stakingPool.algo.ts:37","pc":[6,7]},{"teal":20,"source":"contracts/stakingPool.algo.ts:37","pc":[8]},{"teal":21,"source":"contracts/stakingPool.algo.ts:37","pc":[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]},{"teal":25,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[35]},{"teal":30,"source":"contracts/stakingPool.algo.ts:101","pc":[36,37,38]},{"teal":31,"source":"contracts/stakingPool.algo.ts:101","pc":[39]},{"teal":34,"source":"contracts/stakingPool.algo.ts:101","pc":[40,41,42]},{"teal":35,"source":"contracts/stakingPool.algo.ts:101","pc":[43]},{"teal":38,"source":"contracts/stakingPool.algo.ts:101","pc":[44,45,46]},{"teal":39,"source":"contracts/stakingPool.algo.ts:101","pc":[47]},{"teal":42,"source":"contracts/stakingPool.algo.ts:101","pc":[48,49,50]},{"teal":43,"source":"contracts/stakingPool.algo.ts:101","pc":[51]},{"teal":46,"source":"contracts/stakingPool.algo.ts:101","pc":[52,53,54]},{"teal":47,"source":"contracts/stakingPool.algo.ts:101","pc":[55]},{"teal":48,"source":"contracts/stakingPool.algo.ts:101","pc":[56]},{"teal":58,"source":"contracts/stakingPool.algo.ts:101","pc":[57,58,59]},{"teal":63,"source":"contracts/stakingPool.algo.ts:102","pc":[60,61]},{"teal":64,"source":"contracts/stakingPool.algo.ts:102","pc":[62]},{"teal":65,"source":"contracts/stakingPool.algo.ts:102","pc":[63]},{"teal":66,"source":"contracts/stakingPool.algo.ts:102","pc":[64,65,66]},{"teal":71,"source":"contracts/stakingPool.algo.ts:104","pc":[67,68]},{"teal":72,"source":"contracts/stakingPool.algo.ts:104","pc":[69]},{"teal":73,"source":"contracts/stakingPool.algo.ts:104","pc":[70]},{"teal":74,"source":"contracts/stakingPool.algo.ts:104","pc":[71]},{"teal":78,"source":"contracts/stakingPool.algo.ts:105","pc":[72,73]},{"teal":79,"source":"contracts/stakingPool.algo.ts:105","pc":[74]},{"teal":80,"source":"contracts/stakingPool.algo.ts:105","pc":[75]},{"teal":81,"source":"contracts/stakingPool.algo.ts:105","pc":[76]},{"teal":82,"source":"contracts/stakingPool.algo.ts:102","pc":[77,78,79]},{"teal":87,"source":"contracts/stakingPool.algo.ts:107","pc":[80,81]},{"teal":88,"source":"contracts/stakingPool.algo.ts:107","pc":[82]},{"teal":89,"source":"contracts/stakingPool.algo.ts:107","pc":[83]},{"teal":90,"source":"contracts/stakingPool.algo.ts:107","pc":[84]},{"teal":94,"source":"contracts/stakingPool.algo.ts:108","pc":[85,86]},{"teal":95,"source":"contracts/stakingPool.algo.ts:108","pc":[87]},{"teal":96,"source":"contracts/stakingPool.algo.ts:108","pc":[88]},{"teal":97,"source":"contracts/stakingPool.algo.ts:108","pc":[89]},{"teal":102,"source":"contracts/stakingPool.algo.ts:110","pc":[90,91]},{"teal":103,"source":"contracts/stakingPool.algo.ts:110","pc":[92,93,94,95]},{"teal":104,"source":"contracts/stakingPool.algo.ts:110","pc":[96]},{"teal":107,"source":"contracts/stakingPool.algo.ts:110","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[97]},{"teal":111,"source":"contracts/stakingPool.algo.ts:111","pc":[98]},{"teal":112,"source":"contracts/stakingPool.algo.ts:111","pc":[99,100]},{"teal":113,"source":"contracts/stakingPool.algo.ts:111","pc":[101]},{"teal":117,"source":"contracts/stakingPool.algo.ts:112","pc":[102]},{"teal":118,"source":"contracts/stakingPool.algo.ts:112","pc":[103,104]},{"teal":119,"source":"contracts/stakingPool.algo.ts:112","pc":[105]},{"teal":123,"source":"contracts/stakingPool.algo.ts:113","pc":[106,107]},{"teal":124,"source":"contracts/stakingPool.algo.ts:113","pc":[108,109]},{"teal":125,"source":"contracts/stakingPool.algo.ts:113","pc":[110]},{"teal":129,"source":"contracts/stakingPool.algo.ts:114","pc":[111,112]},{"teal":130,"source":"contracts/stakingPool.algo.ts:114","pc":[113]},{"teal":131,"source":"contracts/stakingPool.algo.ts:114","pc":[114]},{"teal":135,"source":"contracts/stakingPool.algo.ts:115","pc":[115,116]},{"teal":136,"source":"contracts/stakingPool.algo.ts:115","pc":[117]},{"teal":137,"source":"contracts/stakingPool.algo.ts:115","pc":[118]},{"teal":141,"source":"contracts/stakingPool.algo.ts:116","pc":[119,120]},{"teal":142,"source":"contracts/stakingPool.algo.ts:116","pc":[121,122]},{"teal":143,"source":"contracts/stakingPool.algo.ts:116","pc":[123]},{"teal":147,"source":"contracts/stakingPool.algo.ts:117","pc":[124,125]},{"teal":148,"source":"contracts/stakingPool.algo.ts:117","pc":[126,127]},{"teal":149,"source":"contracts/stakingPool.algo.ts:117","pc":[128]},{"teal":153,"source":"contracts/stakingPool.algo.ts:118","pc":[129,130]},{"teal":154,"source":"contracts/stakingPool.algo.ts:118","pc":[131]},{"teal":155,"source":"contracts/stakingPool.algo.ts:118","pc":[132]},{"teal":159,"source":"contracts/stakingPool.algo.ts:120","pc":[133,134,135]},{"teal":163,"source":"contracts/stakingPool.algo.ts:121","pc":[136,137]},{"teal":164,"source":"contracts/stakingPool.algo.ts:121","pc":[138,139]},{"teal":165,"source":"contracts/stakingPool.algo.ts:121","pc":[140,141]},{"teal":166,"source":"contracts/stakingPool.algo.ts:121","pc":[142,143]},{"teal":167,"source":"contracts/stakingPool.algo.ts:121","pc":[144]},{"teal":168,"source":"contracts/stakingPool.algo.ts:121","pc":[145]},{"teal":169,"source":"contracts/stakingPool.algo.ts:121","pc":[146]},{"teal":170,"source":"contracts/stakingPool.algo.ts:121","pc":[147]},{"teal":174,"source":"contracts/stakingPool.algo.ts:122","pc":[148,149]},{"teal":175,"source":"contracts/stakingPool.algo.ts:122","pc":[150,151]},{"teal":176,"source":"contracts/stakingPool.algo.ts:122","pc":[152]},{"teal":180,"source":"contracts/stakingPool.algo.ts:123","pc":[153,154]},{"teal":181,"source":"contracts/stakingPool.algo.ts:123","pc":[155]},{"teal":182,"source":"contracts/stakingPool.algo.ts:123","pc":[156]},{"teal":186,"source":"contracts/stakingPool.algo.ts:124","pc":[157,158]},{"teal":187,"source":"contracts/stakingPool.algo.ts:124","pc":[159,160]},{"teal":188,"source":"contracts/stakingPool.algo.ts:124","pc":[161]},{"teal":189,"source":"contracts/stakingPool.algo.ts:101","pc":[162]},{"teal":194,"source":"contracts/stakingPool.algo.ts:130","pc":[163,164,165]},{"teal":195,"source":"contracts/stakingPool.algo.ts:130","pc":[166]},{"teal":196,"source":"contracts/stakingPool.algo.ts:130","pc":[167]},{"teal":202,"source":"contracts/stakingPool.algo.ts:130","pc":[168,169,170]},{"teal":203,"source":"contracts/stakingPool.algo.ts:130","pc":[171]},{"teal":207,"source":"contracts/stakingPool.algo.ts:132","pc":[172,173,174]},{"teal":211,"source":"contracts/stakingPool.algo.ts:136","pc":[175,176,177]},{"teal":212,"source":"contracts/stakingPool.algo.ts:136","pc":[178,179]},{"teal":213,"source":"contracts/stakingPool.algo.ts:136","pc":[180,181]},{"teal":214,"source":"contracts/stakingPool.algo.ts:136","pc":[182]},{"teal":215,"source":"contracts/stakingPool.algo.ts:136","pc":[183]},{"teal":216,"source":"contracts/stakingPool.algo.ts:132","pc":[184]},{"teal":221,"source":"contracts/stakingPool.algo.ts:146","pc":[185,186]},{"teal":222,"source":"contracts/stakingPool.algo.ts:146","pc":[187]},{"teal":223,"source":"contracts/stakingPool.algo.ts:146","pc":[188]},{"teal":224,"source":"contracts/stakingPool.algo.ts:146","pc":[189]},{"teal":225,"source":"contracts/stakingPool.algo.ts:146","pc":[190,191]},{"teal":226,"source":"contracts/stakingPool.algo.ts:146","pc":[192]},{"teal":227,"source":"contracts/stakingPool.algo.ts:146","pc":[193]},{"teal":230,"source":"contracts/stakingPool.algo.ts:146","errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[194]},{"teal":233,"source":"contracts/stakingPool.algo.ts:146","pc":[195,196,197]},{"teal":234,"source":"contracts/stakingPool.algo.ts:146","pc":[198]},{"teal":235,"source":"contracts/stakingPool.algo.ts:146","pc":[199]},{"teal":245,"source":"contracts/stakingPool.algo.ts:146","pc":[200,201,202]},{"teal":248,"source":"contracts/stakingPool.algo.ts:146","pc":[203]},{"teal":249,"source":"contracts/stakingPool.algo.ts:146","pc":[204,205]},{"teal":253,"source":"contracts/stakingPool.algo.ts:147","pc":[206]},{"teal":254,"source":"contracts/stakingPool.algo.ts:147","pc":[207]},{"teal":255,"source":"contracts/stakingPool.algo.ts:147","pc":[208]},{"teal":256,"source":"contracts/stakingPool.algo.ts:147","pc":[209]},{"teal":257,"source":"contracts/stakingPool.algo.ts:147","pc":[210]},{"teal":260,"source":"contracts/stakingPool.algo.ts:147","errorMessage":"staking pool already initialized","pc":[211]},{"teal":267,"source":"contracts/stakingPool.algo.ts:150","pc":[212]},{"teal":268,"source":"contracts/stakingPool.algo.ts:150","pc":[213]},{"teal":269,"source":"contracts/stakingPool.algo.ts:150","pc":[214,215]},{"teal":270,"source":"contracts/stakingPool.algo.ts:150","pc":[216,217]},{"teal":271,"source":"contracts/stakingPool.algo.ts:150","pc":[218,219]},{"teal":275,"source":"contracts/stakingPool.algo.ts:151","pc":[220]},{"teal":276,"source":"contracts/stakingPool.algo.ts:151","pc":[221]},{"teal":277,"source":"contracts/stakingPool.algo.ts:151","pc":[222,223]},{"teal":281,"source":"contracts/stakingPool.algo.ts:152","pc":[224]},{"teal":282,"source":"contracts/stakingPool.algo.ts:152","pc":[225]},{"teal":283,"source":"contracts/stakingPool.algo.ts:152","pc":[226]},{"teal":284,"source":"contracts/stakingPool.algo.ts:152","pc":[227,228]},{"teal":287,"source":"contracts/stakingPool.algo.ts:150","pc":[229]},{"teal":288,"source":"contracts/stakingPool.algo.ts:150","pc":[230,231]},{"teal":291,"source":"contracts/stakingPool.algo.ts:150","pc":[232]},{"teal":292,"source":"contracts/stakingPool.algo.ts:150","pc":[233,234]},{"teal":293,"source":"contracts/stakingPool.algo.ts:150","pc":[235]},{"teal":294,"source":"contracts/stakingPool.algo.ts:150","pc":[236]},{"teal":295,"source":"contracts/stakingPool.algo.ts:150","pc":[237,238]},{"teal":296,"source":"contracts/stakingPool.algo.ts:150","pc":[239,240,241]},{"teal":297,"source":"contracts/stakingPool.algo.ts:150","pc":[242,243]},{"teal":301,"source":"contracts/stakingPool.algo.ts:154","pc":[244,245]},{"teal":302,"source":"contracts/stakingPool.algo.ts:154","pc":[246,247,248]},{"teal":303,"source":"contracts/stakingPool.algo.ts:154","pc":[249]},{"teal":304,"source":"contracts/stakingPool.algo.ts:154","pc":[250]},{"teal":305,"source":"contracts/stakingPool.algo.ts:154","pc":[251]},{"teal":306,"source":"contracts/stakingPool.algo.ts:154","pc":[252,253]},{"teal":310,"source":"contracts/stakingPool.algo.ts:155","pc":[254,255]},{"teal":311,"source":"contracts/stakingPool.algo.ts:155","pc":[256]},{"teal":312,"source":"contracts/stakingPool.algo.ts:155","pc":[257,258,259]},{"teal":313,"source":"contracts/stakingPool.algo.ts:155","pc":[260,261]},{"teal":314,"source":"contracts/stakingPool.algo.ts:155","pc":[262]},{"teal":315,"source":"contracts/stakingPool.algo.ts:155","pc":[263]},{"teal":316,"source":"contracts/stakingPool.algo.ts:155","pc":[264]},{"teal":317,"source":"contracts/stakingPool.algo.ts:155","pc":[265]},{"teal":320,"source":"contracts/stakingPool.algo.ts:155","pc":[266,267,268]},{"teal":321,"source":"contracts/stakingPool.algo.ts:155","pc":[269,270]},{"teal":322,"source":"contracts/stakingPool.algo.ts:155","pc":[271,272,273]},{"teal":325,"source":"contracts/stakingPool.algo.ts:155","pc":[274]},{"teal":328,"source":"contracts/stakingPool.algo.ts:155","pc":[275,276]},{"teal":335,"source":"contracts/stakingPool.algo.ts:157","pc":[277,278]},{"teal":336,"source":"contracts/stakingPool.algo.ts:158","pc":[279,280]},{"teal":337,"source":"contracts/stakingPool.algo.ts:157","pc":[281]},{"teal":338,"source":"contracts/stakingPool.algo.ts:159","pc":[282,283,284]},{"teal":339,"source":"contracts/stakingPool.algo.ts:159","pc":[285,286,287]},{"teal":340,"source":"contracts/stakingPool.algo.ts:158","pc":[288]},{"teal":341,"source":"contracts/stakingPool.algo.ts:156","pc":[289,290]},{"teal":346,"source":"contracts/stakingPool.algo.ts:162","pc":[291,292]},{"teal":347,"source":"contracts/stakingPool.algo.ts:162","pc":[293,294]},{"teal":348,"source":"contracts/stakingPool.algo.ts:162","pc":[295,296]},{"teal":349,"source":"contracts/stakingPool.algo.ts:162","pc":[297]},{"teal":352,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[298]},{"teal":355,"source":"contracts/stakingPool.algo.ts:162","pc":[299,300]},{"teal":356,"source":"contracts/stakingPool.algo.ts:162","pc":[301,302]},{"teal":357,"source":"contracts/stakingPool.algo.ts:162","pc":[303,304]},{"teal":358,"source":"contracts/stakingPool.algo.ts:162","pc":[305]},{"teal":361,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[306]},{"teal":365,"source":"contracts/stakingPool.algo.ts:163","pc":[307]},{"teal":366,"source":"contracts/stakingPool.algo.ts:163","pc":[308,309,310]},{"teal":367,"source":"contracts/stakingPool.algo.ts:163","pc":[311]},{"teal":368,"source":"contracts/stakingPool.algo.ts:163","pc":[312]},{"teal":373,"source":"contracts/stakingPool.algo.ts:165","pc":[313,314]},{"teal":374,"source":"contracts/stakingPool.algo.ts:165","pc":[315]},{"teal":375,"source":"contracts/stakingPool.algo.ts:165","pc":[316,317,318]},{"teal":376,"source":"contracts/stakingPool.algo.ts:165","pc":[319,320]},{"teal":377,"source":"contracts/stakingPool.algo.ts:165","pc":[321]},{"teal":378,"source":"contracts/stakingPool.algo.ts:165","pc":[322]},{"teal":379,"source":"contracts/stakingPool.algo.ts:165","pc":[323]},{"teal":380,"source":"contracts/stakingPool.algo.ts:165","pc":[324]},{"teal":383,"source":"contracts/stakingPool.algo.ts:165","pc":[325,326,327]},{"teal":392,"source":"contracts/stakingPool.algo.ts:167","pc":[328]},{"teal":393,"source":"contracts/stakingPool.algo.ts:167","pc":[329,330]},{"teal":394,"source":"contracts/stakingPool.algo.ts:167","pc":[331,332]},{"teal":398,"source":"contracts/stakingPool.algo.ts:168","pc":[333,334]},{"teal":399,"source":"contracts/stakingPool.algo.ts:168","pc":[335,336,337]},{"teal":400,"source":"contracts/stakingPool.algo.ts:168","pc":[338]},{"teal":401,"source":"contracts/stakingPool.algo.ts:168","pc":[339,340]},{"teal":405,"source":"contracts/stakingPool.algo.ts:169","pc":[341,342]},{"teal":406,"source":"contracts/stakingPool.algo.ts:169","pc":[343,344]},{"teal":410,"source":"contracts/stakingPool.algo.ts:170","pc":[345]},{"teal":411,"source":"contracts/stakingPool.algo.ts:170","pc":[346,347]},{"teal":414,"source":"contracts/stakingPool.algo.ts:167","pc":[348]},{"teal":415,"source":"contracts/stakingPool.algo.ts:167","pc":[349,350]},{"teal":418,"source":"contracts/stakingPool.algo.ts:167","pc":[351]},{"teal":421,"source":"contracts/stakingPool.algo.ts:146","pc":[352]},{"teal":426,"source":"contracts/stakingPool.algo.ts:185","pc":[353,354]},{"teal":429,"source":"contracts/stakingPool.algo.ts:185","pc":[355,356,357]},{"teal":430,"source":"contracts/stakingPool.algo.ts:185","pc":[358]},{"teal":431,"source":"contracts/stakingPool.algo.ts:185","pc":[359]},{"teal":432,"source":"contracts/stakingPool.algo.ts:185","pc":[360,361]},{"teal":433,"source":"contracts/stakingPool.algo.ts:185","pc":[362]},{"teal":436,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 0 (staker) for addStake must be a address","pc":[363]},{"teal":439,"source":"contracts/stakingPool.algo.ts:185","pc":[364,365]},{"teal":440,"source":"contracts/stakingPool.algo.ts:185","pc":[366]},{"teal":441,"source":"contracts/stakingPool.algo.ts:185","pc":[367]},{"teal":442,"source":"contracts/stakingPool.algo.ts:185","pc":[368]},{"teal":443,"source":"contracts/stakingPool.algo.ts:185","pc":[369,370]},{"teal":444,"source":"contracts/stakingPool.algo.ts:185","pc":[371]},{"teal":445,"source":"contracts/stakingPool.algo.ts:185","pc":[372]},{"teal":448,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[373]},{"teal":451,"source":"contracts/stakingPool.algo.ts:185","pc":[374,375,376]},{"teal":452,"source":"contracts/stakingPool.algo.ts:185","pc":[377]},{"teal":453,"source":"contracts/stakingPool.algo.ts:185","pc":[378]},{"teal":454,"source":"contracts/stakingPool.algo.ts:185","pc":[379]},{"teal":455,"source":"contracts/stakingPool.algo.ts:185","pc":[380]},{"teal":456,"source":"contracts/stakingPool.algo.ts:185","pc":[381]},{"teal":469,"source":"contracts/stakingPool.algo.ts:185","pc":[382,383,384]},{"teal":472,"source":"contracts/stakingPool.algo.ts:185","pc":[385]},{"teal":473,"source":"contracts/stakingPool.algo.ts:185","pc":[386,387]},{"teal":477,"source":"contracts/stakingPool.algo.ts:186","pc":[388]},{"teal":478,"source":"contracts/stakingPool.algo.ts:186","pc":[389]},{"teal":479,"source":"contracts/stakingPool.algo.ts:186","pc":[390]},{"teal":480,"source":"contracts/stakingPool.algo.ts:186","pc":[391]},{"teal":483,"source":"contracts/stakingPool.algo.ts:186","errorMessage":"staking pool must be initialized first","pc":[392]},{"teal":490,"source":"contracts/stakingPool.algo.ts:190","pc":[393,394]},{"teal":491,"source":"contracts/stakingPool.algo.ts:190","pc":[395]},{"teal":492,"source":"contracts/stakingPool.algo.ts:190","pc":[396]},{"teal":493,"source":"contracts/stakingPool.algo.ts:190","pc":[397,398]},{"teal":494,"source":"contracts/stakingPool.algo.ts:190","pc":[399]},{"teal":495,"source":"contracts/stakingPool.algo.ts:190","pc":[400]},{"teal":498,"source":"contracts/stakingPool.algo.ts:189","errorMessage":"stake can only be added via the validator contract","pc":[401]},{"teal":502,"source":"contracts/stakingPool.algo.ts:193","pc":[402,403]},{"teal":503,"source":"contracts/stakingPool.algo.ts:193","pc":[404,405]},{"teal":504,"source":"contracts/stakingPool.algo.ts:193","pc":[406]},{"teal":505,"source":"contracts/stakingPool.algo.ts:193","pc":[407]},{"teal":509,"source":"contracts/stakingPool.algo.ts:196","pc":[408,409,410]},{"teal":518,"source":"contracts/stakingPool.algo.ts:200","pc":[411,412]},{"teal":519,"source":"contracts/stakingPool.algo.ts:201","pc":[413,414]},{"teal":520,"source":"contracts/stakingPool.algo.ts:201","pc":[415]},{"teal":521,"source":"contracts/stakingPool.algo.ts:201","pc":[416]},{"teal":522,"source":"contracts/stakingPool.algo.ts:201","pc":[417,418]},{"teal":523,"source":"contracts/stakingPool.algo.ts:201","pc":[419]},{"teal":524,"source":"contracts/stakingPool.algo.ts:201","pc":[420]},{"teal":527,"source":"contracts/stakingPool.algo.ts:201","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[421]},{"teal":530,"source":"contracts/stakingPool.algo.ts:200","pc":[422,423]},{"teal":531,"source":"contracts/stakingPool.algo.ts:202","pc":[424,425]},{"teal":532,"source":"contracts/stakingPool.algo.ts:202","pc":[426,427]},{"teal":533,"source":"contracts/stakingPool.algo.ts:202","pc":[428]},{"teal":536,"source":"contracts/stakingPool.algo.ts:202","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[429]},{"teal":539,"source":"contracts/stakingPool.algo.ts:200","pc":[430,431]},{"teal":540,"source":"contracts/stakingPool.algo.ts:203","pc":[432,433]},{"teal":541,"source":"contracts/stakingPool.algo.ts:203","pc":[434,435]},{"teal":542,"source":"contracts/stakingPool.algo.ts:203","pc":[436,437]},{"teal":543,"source":"contracts/stakingPool.algo.ts:203","pc":[438]},{"teal":546,"source":"contracts/stakingPool.algo.ts:203","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[439]},{"teal":550,"source":"contracts/stakingPool.algo.ts:209","pc":[440,441]},{"teal":551,"source":"contracts/stakingPool.algo.ts:209","pc":[442,443,444]},{"teal":552,"source":"contracts/stakingPool.algo.ts:209","pc":[445]},{"teal":553,"source":"contracts/stakingPool.algo.ts:209","pc":[446,447]},{"teal":557,"source":"contracts/stakingPool.algo.ts:210","pc":[448]},{"teal":558,"source":"contracts/stakingPool.algo.ts:210","pc":[449,450]},{"teal":562,"source":"contracts/stakingPool.algo.ts:212","pc":[451,452]},{"teal":563,"source":"contracts/stakingPool.algo.ts:212","pc":[453]},{"teal":564,"source":"contracts/stakingPool.algo.ts:212","pc":[454,455]},{"teal":565,"source":"contracts/stakingPool.algo.ts:212","pc":[456,457]},{"teal":566,"source":"contracts/stakingPool.algo.ts:212","pc":[458]},{"teal":567,"source":"contracts/stakingPool.algo.ts:212","pc":[459,460]},{"teal":568,"source":"contracts/stakingPool.algo.ts:212","pc":[461]},{"teal":569,"source":"contracts/stakingPool.algo.ts:212","pc":[462]},{"teal":573,"source":"contracts/stakingPool.algo.ts:214","pc":[463,464]},{"teal":574,"source":"contracts/stakingPool.algo.ts:214","pc":[465]},{"teal":575,"source":"contracts/stakingPool.algo.ts:214","pc":[466,467]},{"teal":576,"source":"contracts/stakingPool.algo.ts:214","pc":[468]},{"teal":577,"source":"contracts/stakingPool.algo.ts:214","pc":[469]},{"teal":578,"source":"contracts/stakingPool.algo.ts:214","pc":[470,471]},{"teal":579,"source":"contracts/stakingPool.algo.ts:214","pc":[472]},{"teal":580,"source":"contracts/stakingPool.algo.ts:214","pc":[473,474]},{"teal":585,"source":"contracts/stakingPool.algo.ts:215","pc":[475,476]},{"teal":586,"source":"contracts/stakingPool.algo.ts:215","pc":[477]},{"teal":587,"source":"contracts/stakingPool.algo.ts:216","pc":[478]},{"teal":588,"source":"contracts/stakingPool.algo.ts:216","pc":[479,480]},{"teal":589,"source":"contracts/stakingPool.algo.ts:216","pc":[481,482]},{"teal":590,"source":"contracts/stakingPool.algo.ts:216","pc":[483]},{"teal":591,"source":"contracts/stakingPool.algo.ts:216","pc":[484,485]},{"teal":592,"source":"contracts/stakingPool.algo.ts:216","pc":[486]},{"teal":593,"source":"contracts/stakingPool.algo.ts:216","pc":[487]},{"teal":594,"source":"contracts/stakingPool.algo.ts:216","pc":[488]},{"teal":595,"source":"contracts/stakingPool.algo.ts:216","pc":[489]},{"teal":596,"source":"contracts/stakingPool.algo.ts:216","pc":[490]},{"teal":597,"source":"contracts/stakingPool.algo.ts:216","pc":[491,492]},{"teal":598,"source":"contracts/stakingPool.algo.ts:216","pc":[493]},{"teal":601,"source":"contracts/stakingPool.algo.ts:216","errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[494]},{"teal":602,"source":"contracts/stakingPool.algo.ts:216","pc":[495,496]},{"teal":603,"source":"contracts/stakingPool.algo.ts:216","pc":[497]},{"teal":604,"source":"contracts/stakingPool.algo.ts:216","pc":[498]},{"teal":605,"source":"contracts/stakingPool.algo.ts:216","pc":[499]},{"teal":606,"source":"contracts/stakingPool.algo.ts:216","pc":[500]},{"teal":607,"source":"contracts/stakingPool.algo.ts:216","pc":[501,502]},{"teal":608,"source":"contracts/stakingPool.algo.ts:216","pc":[503]},{"teal":609,"source":"contracts/stakingPool.algo.ts:216","pc":[504]},{"teal":610,"source":"contracts/stakingPool.algo.ts:216","pc":[505]},{"teal":611,"source":"contracts/stakingPool.algo.ts:215","pc":[506]},{"teal":615,"source":"contracts/stakingPool.algo.ts:219","pc":[507]},{"teal":616,"source":"contracts/stakingPool.algo.ts:219","pc":[508,509]},{"teal":621,"source":"contracts/stakingPool.algo.ts:219","pc":[510,511]},{"teal":622,"source":"contracts/stakingPool.algo.ts:219","pc":[512,513]},{"teal":623,"source":"contracts/stakingPool.algo.ts:219","pc":[514]},{"teal":624,"source":"contracts/stakingPool.algo.ts:219","pc":[515,516,517]},{"teal":629,"source":"contracts/stakingPool.algo.ts:220","pc":[518,519]},{"teal":630,"source":"contracts/stakingPool.algo.ts:220","pc":[520,521]},{"teal":631,"source":"contracts/stakingPool.algo.ts:220","pc":[522]},{"teal":632,"source":"contracts/stakingPool.algo.ts:220","pc":[523,524,525]},{"teal":637,"source":"contracts/stakingPool.algo.ts:221","pc":[526]},{"teal":638,"source":"contracts/stakingPool.algo.ts:221","pc":[527]},{"teal":639,"source":"contracts/stakingPool.algo.ts:221","pc":[528,529]},{"teal":640,"source":"contracts/stakingPool.algo.ts:221","pc":[530]},{"teal":641,"source":"contracts/stakingPool.algo.ts:221","pc":[531,532]},{"teal":642,"source":"contracts/stakingPool.algo.ts:221","pc":[533,534]},{"teal":643,"source":"contracts/stakingPool.algo.ts:221","pc":[535]},{"teal":644,"source":"contracts/stakingPool.algo.ts:221","pc":[536,537]},{"teal":645,"source":"contracts/stakingPool.algo.ts:221","pc":[538,539]},{"teal":646,"source":"contracts/stakingPool.algo.ts:221","pc":[540,541]},{"teal":647,"source":"contracts/stakingPool.algo.ts:221","pc":[542,543]},{"teal":648,"source":"contracts/stakingPool.algo.ts:221","pc":[544]},{"teal":653,"source":"contracts/stakingPool.algo.ts:223","pc":[545,546]},{"teal":654,"source":"contracts/stakingPool.algo.ts:223","pc":[547]},{"teal":655,"source":"contracts/stakingPool.algo.ts:223","pc":[548]},{"teal":656,"source":"contracts/stakingPool.algo.ts:223","pc":[549]},{"teal":657,"source":"contracts/stakingPool.algo.ts:223","pc":[550]},{"teal":658,"source":"contracts/stakingPool.algo.ts:223","pc":[551,552]},{"teal":659,"source":"contracts/stakingPool.algo.ts:223","pc":[553]},{"teal":660,"source":"contracts/stakingPool.algo.ts:223","pc":[554,555]},{"teal":665,"source":"contracts/stakingPool.algo.ts:224","pc":[556,557]},{"teal":666,"source":"contracts/stakingPool.algo.ts:224","pc":[558,559,560]},{"teal":667,"source":"contracts/stakingPool.algo.ts:224","pc":[561,562]},{"teal":668,"source":"contracts/stakingPool.algo.ts:224","pc":[563]},{"teal":669,"source":"contracts/stakingPool.algo.ts:224","pc":[564,565,566]},{"teal":674,"source":"contracts/stakingPool.algo.ts:226","pc":[567,568]},{"teal":675,"source":"contracts/stakingPool.algo.ts:226","pc":[569,570]},{"teal":676,"source":"contracts/stakingPool.algo.ts:226","pc":[571,572]},{"teal":677,"source":"contracts/stakingPool.algo.ts:226","pc":[573,574,575]},{"teal":678,"source":"contracts/stakingPool.algo.ts:226","pc":[576]},{"teal":679,"source":"contracts/stakingPool.algo.ts:226","pc":[577,578]},{"teal":680,"source":"contracts/stakingPool.algo.ts:226","pc":[579,580]},{"teal":681,"source":"contracts/stakingPool.algo.ts:226","pc":[581]},{"teal":682,"source":"contracts/stakingPool.algo.ts:226","pc":[582]},{"teal":683,"source":"contracts/stakingPool.algo.ts:226","pc":[583]},{"teal":684,"source":"contracts/stakingPool.algo.ts:226","pc":[584,585]},{"teal":688,"source":"contracts/stakingPool.algo.ts:227","pc":[586,587]},{"teal":689,"source":"contracts/stakingPool.algo.ts:227","pc":[588,589]},{"teal":690,"source":"contracts/stakingPool.algo.ts:227","pc":[590,591]},{"teal":691,"source":"contracts/stakingPool.algo.ts:227","pc":[592]},{"teal":692,"source":"contracts/stakingPool.algo.ts:227","pc":[593]},{"teal":693,"source":"contracts/stakingPool.algo.ts:227","pc":[594,595]},{"teal":697,"source":"contracts/stakingPool.algo.ts:230","pc":[596,597]},{"teal":698,"source":"contracts/stakingPool.algo.ts:230","pc":[598]},{"teal":699,"source":"contracts/stakingPool.algo.ts:230","pc":[599]},{"teal":700,"source":"contracts/stakingPool.algo.ts:230","pc":[600,601]},{"teal":701,"source":"contracts/stakingPool.algo.ts:230","pc":[602]},{"teal":702,"source":"contracts/stakingPool.algo.ts:230","pc":[603,604]},{"teal":703,"source":"contracts/stakingPool.algo.ts:230","pc":[605]},{"teal":707,"source":"contracts/stakingPool.algo.ts:232","pc":[606,607]},{"teal":708,"source":"contracts/stakingPool.algo.ts:232","pc":[608,609,610]},{"teal":714,"source":"contracts/stakingPool.algo.ts:234","pc":[611,612]},{"teal":715,"source":"contracts/stakingPool.algo.ts:234","pc":[613]},{"teal":716,"source":"contracts/stakingPool.algo.ts:234","pc":[614]},{"teal":717,"source":"contracts/stakingPool.algo.ts:234","pc":[615]},{"teal":718,"source":"contracts/stakingPool.algo.ts:234","pc":[616,617,618]},{"teal":719,"source":"contracts/stakingPool.algo.ts:234","pc":[619,620]},{"teal":720,"source":"contracts/stakingPool.algo.ts:234","pc":[621,622,623]},{"teal":721,"source":"contracts/stakingPool.algo.ts:234","pc":[624,625]},{"teal":722,"source":"contracts/stakingPool.algo.ts:234","pc":[626]},{"teal":723,"source":"contracts/stakingPool.algo.ts:234","pc":[627]},{"teal":726,"source":"contracts/stakingPool.algo.ts:234","pc":[628,629,630]},{"teal":731,"source":"contracts/stakingPool.algo.ts:235","pc":[631,632]},{"teal":732,"source":"contracts/stakingPool.algo.ts:235","pc":[633]},{"teal":733,"source":"contracts/stakingPool.algo.ts:235","pc":[634]},{"teal":734,"source":"contracts/stakingPool.algo.ts:235","pc":[635,636]},{"teal":741,"source":"contracts/stakingPool.algo.ts:219","pc":[637,638]},{"teal":742,"source":"contracts/stakingPool.algo.ts:219","pc":[639]},{"teal":743,"source":"contracts/stakingPool.algo.ts:219","pc":[640]},{"teal":744,"source":"contracts/stakingPool.algo.ts:219","pc":[641,642]},{"teal":745,"source":"contracts/stakingPool.algo.ts:219","pc":[643,644,645]},{"teal":751,"source":"contracts/stakingPool.algo.ts:239","pc":[646,647]},{"teal":752,"source":"contracts/stakingPool.algo.ts:239","pc":[648]},{"teal":753,"source":"contracts/stakingPool.algo.ts:239","pc":[649]},{"teal":754,"source":"contracts/stakingPool.algo.ts:239","pc":[650,651,652]},{"teal":758,"source":"contracts/stakingPool.algo.ts:241","errorMessage":"Staking pool full","pc":[653]},{"teal":763,"source":"contracts/stakingPool.algo.ts:246","pc":[654,655]},{"teal":764,"source":"contracts/stakingPool.algo.ts:246","pc":[656,657]},{"teal":765,"source":"contracts/stakingPool.algo.ts:246","pc":[658,659]},{"teal":766,"source":"contracts/stakingPool.algo.ts:246","pc":[660]},{"teal":767,"source":"contracts/stakingPool.algo.ts:246","pc":[661]},{"teal":770,"source":"contracts/stakingPool.algo.ts:246","errorMessage":"must stake at least the minimum for this pool","pc":[662]},{"teal":774,"source":"contracts/stakingPool.algo.ts:248","pc":[663,664]},{"teal":775,"source":"contracts/stakingPool.algo.ts:248","pc":[665]},{"teal":776,"source":"contracts/stakingPool.algo.ts:248","pc":[666]},{"teal":777,"source":"contracts/stakingPool.algo.ts:248","pc":[667]},{"teal":778,"source":"contracts/stakingPool.algo.ts:248","pc":[668]},{"teal":779,"source":"contracts/stakingPool.algo.ts:248","pc":[669]},{"teal":780,"source":"contracts/stakingPool.algo.ts:248","pc":[670]},{"teal":781,"source":"contracts/stakingPool.algo.ts:248","pc":[671,672]},{"teal":782,"source":"contracts/stakingPool.algo.ts:248","pc":[673]},{"teal":783,"source":"contracts/stakingPool.algo.ts:248","pc":[674,675]},{"teal":784,"source":"contracts/stakingPool.algo.ts:248","pc":[676]},{"teal":785,"source":"contracts/stakingPool.algo.ts:248","pc":[677,678]},{"teal":786,"source":"contracts/stakingPool.algo.ts:248","pc":[679]},{"teal":787,"source":"contracts/stakingPool.algo.ts:248","pc":[680]},{"teal":797,"source":"contracts/stakingPool.algo.ts:249","pc":[681,682]},{"teal":798,"source":"contracts/stakingPool.algo.ts:249","pc":[683]},{"teal":799,"source":"contracts/stakingPool.algo.ts:249","pc":[684]},{"teal":800,"source":"contracts/stakingPool.algo.ts:249","pc":[685]},{"teal":801,"source":"contracts/stakingPool.algo.ts:249","pc":[686]},{"teal":802,"source":"contracts/stakingPool.algo.ts:250","pc":[687,688]},{"teal":803,"source":"contracts/stakingPool.algo.ts:251","pc":[689,690]},{"teal":804,"source":"contracts/stakingPool.algo.ts:251","pc":[691,692]},{"teal":805,"source":"contracts/stakingPool.algo.ts:251","pc":[693]},{"teal":806,"source":"contracts/stakingPool.algo.ts:251","pc":[694]},{"teal":807,"source":"contracts/stakingPool.algo.ts:252","pc":[695,696]},{"teal":808,"source":"contracts/stakingPool.algo.ts:252","pc":[697]},{"teal":809,"source":"contracts/stakingPool.algo.ts:253","pc":[698,699]},{"teal":810,"source":"contracts/stakingPool.algo.ts:253","pc":[700]},{"teal":811,"source":"contracts/stakingPool.algo.ts:254","pc":[701,702]},{"teal":812,"source":"contracts/stakingPool.algo.ts:254","pc":[703]},{"teal":813,"source":"contracts/stakingPool.algo.ts:254","pc":[704]},{"teal":814,"source":"contracts/stakingPool.algo.ts:249","pc":[705]},{"teal":815,"source":"contracts/stakingPool.algo.ts:249","pc":[706,707]},{"teal":816,"source":"contracts/stakingPool.algo.ts:249","pc":[708]},{"teal":820,"source":"contracts/stakingPool.algo.ts:256","pc":[709,710]},{"teal":821,"source":"contracts/stakingPool.algo.ts:256","pc":[711]},{"teal":822,"source":"contracts/stakingPool.algo.ts:256","pc":[712]},{"teal":823,"source":"contracts/stakingPool.algo.ts:256","pc":[713]},{"teal":824,"source":"contracts/stakingPool.algo.ts:256","pc":[714,715]},{"teal":825,"source":"contracts/stakingPool.algo.ts:256","pc":[716]},{"teal":826,"source":"contracts/stakingPool.algo.ts:256","pc":[717]},{"teal":830,"source":"contracts/stakingPool.algo.ts:257","pc":[718,719]},{"teal":834,"source":"contracts/stakingPool.algo.ts:185","pc":[720,721]},{"teal":837,"source":"contracts/stakingPool.algo.ts:185","pc":[722,723]},{"teal":838,"source":"contracts/stakingPool.algo.ts:185","pc":[724]},{"teal":843,"source":"contracts/stakingPool.algo.ts:271","pc":[725,726,727]},{"teal":844,"source":"contracts/stakingPool.algo.ts:271","pc":[728]},{"teal":847,"source":"contracts/stakingPool.algo.ts:271","pc":[729,730,731]},{"teal":848,"source":"contracts/stakingPool.algo.ts:271","pc":[732]},{"teal":849,"source":"contracts/stakingPool.algo.ts:271","pc":[733]},{"teal":850,"source":"contracts/stakingPool.algo.ts:271","pc":[734,735]},{"teal":851,"source":"contracts/stakingPool.algo.ts:271","pc":[736]},{"teal":854,"source":"contracts/stakingPool.algo.ts:271","errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[737]},{"teal":857,"source":"contracts/stakingPool.algo.ts:271","pc":[738,739,740]},{"teal":858,"source":"contracts/stakingPool.algo.ts:271","pc":[741]},{"teal":859,"source":"contracts/stakingPool.algo.ts:271","pc":[742]},{"teal":873,"source":"contracts/stakingPool.algo.ts:271","pc":[743,744,745]},{"teal":876,"source":"contracts/stakingPool.algo.ts:271","pc":[746]},{"teal":877,"source":"contracts/stakingPool.algo.ts:271","pc":[747,748]},{"teal":882,"source":"contracts/stakingPool.algo.ts:274","pc":[749,750]},{"teal":883,"source":"contracts/stakingPool.algo.ts:274","pc":[751,752]},{"teal":884,"source":"contracts/stakingPool.algo.ts:274","pc":[753]},{"teal":885,"source":"contracts/stakingPool.algo.ts:274","pc":[754,755,756]},{"teal":893,"source":"contracts/stakingPool.algo.ts:276","pc":[757,758,759]},{"teal":896,"source":"contracts/stakingPool.algo.ts:275","errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[760]},{"teal":901,"source":"contracts/stakingPool.algo.ts:281","pc":[761,762,763]},{"teal":905,"source":"contracts/stakingPool.algo.ts:283","pc":[764]},{"teal":906,"source":"contracts/stakingPool.algo.ts:283","pc":[765,766]},{"teal":911,"source":"contracts/stakingPool.algo.ts:283","pc":[767,768]},{"teal":912,"source":"contracts/stakingPool.algo.ts:283","pc":[769,770]},{"teal":913,"source":"contracts/stakingPool.algo.ts:283","pc":[771]},{"teal":914,"source":"contracts/stakingPool.algo.ts:283","pc":[772,773,774]},{"teal":919,"source":"contracts/stakingPool.algo.ts:284","pc":[775,776]},{"teal":920,"source":"contracts/stakingPool.algo.ts:284","pc":[777,778]},{"teal":921,"source":"contracts/stakingPool.algo.ts:284","pc":[779]},{"teal":922,"source":"contracts/stakingPool.algo.ts:284","pc":[780,781,782]},{"teal":927,"source":"contracts/stakingPool.algo.ts:285","pc":[783]},{"teal":928,"source":"contracts/stakingPool.algo.ts:285","pc":[784]},{"teal":929,"source":"contracts/stakingPool.algo.ts:285","pc":[785,786]},{"teal":930,"source":"contracts/stakingPool.algo.ts:285","pc":[787]},{"teal":931,"source":"contracts/stakingPool.algo.ts:285","pc":[788,789]},{"teal":932,"source":"contracts/stakingPool.algo.ts:285","pc":[790,791]},{"teal":933,"source":"contracts/stakingPool.algo.ts:285","pc":[792]},{"teal":934,"source":"contracts/stakingPool.algo.ts:285","pc":[793,794]},{"teal":935,"source":"contracts/stakingPool.algo.ts:285","pc":[795,796]},{"teal":936,"source":"contracts/stakingPool.algo.ts:285","pc":[797,798]},{"teal":937,"source":"contracts/stakingPool.algo.ts:285","pc":[799,800]},{"teal":938,"source":"contracts/stakingPool.algo.ts:285","pc":[801]},{"teal":943,"source":"contracts/stakingPool.algo.ts:287","pc":[802,803]},{"teal":944,"source":"contracts/stakingPool.algo.ts:287","pc":[804]},{"teal":945,"source":"contracts/stakingPool.algo.ts:287","pc":[805]},{"teal":946,"source":"contracts/stakingPool.algo.ts:287","pc":[806]},{"teal":947,"source":"contracts/stakingPool.algo.ts:287","pc":[807]},{"teal":948,"source":"contracts/stakingPool.algo.ts:287","pc":[808,809]},{"teal":949,"source":"contracts/stakingPool.algo.ts:287","pc":[810]},{"teal":950,"source":"contracts/stakingPool.algo.ts:287","pc":[811,812]},{"teal":955,"source":"contracts/stakingPool.algo.ts:288","pc":[813,814]},{"teal":956,"source":"contracts/stakingPool.algo.ts:288","pc":[815,816,817]},{"teal":957,"source":"contracts/stakingPool.algo.ts:288","pc":[818,819]},{"teal":958,"source":"contracts/stakingPool.algo.ts:288","pc":[820]},{"teal":959,"source":"contracts/stakingPool.algo.ts:288","pc":[821,822,823]},{"teal":965,"source":"contracts/stakingPool.algo.ts:289","pc":[824,825]},{"teal":966,"source":"contracts/stakingPool.algo.ts:289","pc":[826]},{"teal":967,"source":"contracts/stakingPool.algo.ts:289","pc":[827]},{"teal":968,"source":"contracts/stakingPool.algo.ts:289","pc":[828,829,830]},{"teal":973,"source":"contracts/stakingPool.algo.ts:291","pc":[831,832]},{"teal":974,"source":"contracts/stakingPool.algo.ts:291","pc":[833,834,835]},{"teal":975,"source":"contracts/stakingPool.algo.ts:291","pc":[836]},{"teal":976,"source":"contracts/stakingPool.algo.ts:291","pc":[837,838]},{"teal":982,"source":"contracts/stakingPool.algo.ts:293","pc":[839,840]},{"teal":983,"source":"contracts/stakingPool.algo.ts:293","pc":[841,842,843]},{"teal":984,"source":"contracts/stakingPool.algo.ts:293","pc":[844]},{"teal":985,"source":"contracts/stakingPool.algo.ts:293","pc":[845,846]},{"teal":986,"source":"contracts/stakingPool.algo.ts:293","pc":[847]},{"teal":987,"source":"contracts/stakingPool.algo.ts:293","pc":[848,849,850]},{"teal":991,"source":"contracts/stakingPool.algo.ts:294","errorMessage":"Insufficient balance","pc":[851]},{"teal":996,"source":"contracts/stakingPool.algo.ts:296","pc":[852,853]},{"teal":997,"source":"contracts/stakingPool.algo.ts:296","pc":[854,855]},{"teal":998,"source":"contracts/stakingPool.algo.ts:296","pc":[856,857]},{"teal":999,"source":"contracts/stakingPool.algo.ts:296","pc":[858,859,860]},{"teal":1000,"source":"contracts/stakingPool.algo.ts:296","pc":[861]},{"teal":1001,"source":"contracts/stakingPool.algo.ts:296","pc":[862,863]},{"teal":1002,"source":"contracts/stakingPool.algo.ts:296","pc":[864]},{"teal":1003,"source":"contracts/stakingPool.algo.ts:296","pc":[865]},{"teal":1004,"source":"contracts/stakingPool.algo.ts:296","pc":[866]},{"teal":1005,"source":"contracts/stakingPool.algo.ts:296","pc":[867,868]},{"teal":1009,"source":"contracts/stakingPool.algo.ts:297","pc":[869,870]},{"teal":1010,"source":"contracts/stakingPool.algo.ts:297","pc":[871]},{"teal":1011,"source":"contracts/stakingPool.algo.ts:297","pc":[872,873]},{"teal":1012,"source":"contracts/stakingPool.algo.ts:297","pc":[874]},{"teal":1013,"source":"contracts/stakingPool.algo.ts:297","pc":[875,876]},{"teal":1014,"source":"contracts/stakingPool.algo.ts:297","pc":[877]},{"teal":1015,"source":"contracts/stakingPool.algo.ts:297","pc":[878]},{"teal":1019,"source":"contracts/stakingPool.algo.ts:299","pc":[879]},{"teal":1020,"source":"contracts/stakingPool.algo.ts:299","pc":[880,881]},{"teal":1025,"source":"contracts/stakingPool.algo.ts:300","pc":[882,883]},{"teal":1026,"source":"contracts/stakingPool.algo.ts:300","pc":[884,885,886]},{"teal":1027,"source":"contracts/stakingPool.algo.ts:300","pc":[887]},{"teal":1028,"source":"contracts/stakingPool.algo.ts:300","pc":[888]},{"teal":1029,"source":"contracts/stakingPool.algo.ts:300","pc":[889]},{"teal":1030,"source":"contracts/stakingPool.algo.ts:300","pc":[890,891,892]},{"teal":1036,"source":"contracts/stakingPool.algo.ts:302","pc":[893,894]},{"teal":1037,"source":"contracts/stakingPool.algo.ts:302","pc":[895]},{"teal":1038,"source":"contracts/stakingPool.algo.ts:302","pc":[896]},{"teal":1039,"source":"contracts/stakingPool.algo.ts:302","pc":[897]},{"teal":1040,"source":"contracts/stakingPool.algo.ts:302","pc":[898,899,900]},{"teal":1048,"source":"contracts/stakingPool.algo.ts:303","pc":[901]},{"teal":1049,"source":"contracts/stakingPool.algo.ts:303","pc":[902]},{"teal":1050,"source":"contracts/stakingPool.algo.ts:303","pc":[903,904]},{"teal":1051,"source":"contracts/stakingPool.algo.ts:303","pc":[905,906]},{"teal":1052,"source":"contracts/stakingPool.algo.ts:303","pc":[907,908]},{"teal":1056,"source":"contracts/stakingPool.algo.ts:304","pc":[909]},{"teal":1057,"source":"contracts/stakingPool.algo.ts:304","pc":[910]},{"teal":1058,"source":"contracts/stakingPool.algo.ts:304","pc":[911,912]},{"teal":1062,"source":"contracts/stakingPool.algo.ts:305","pc":[913]},{"teal":1063,"source":"contracts/stakingPool.algo.ts:305","pc":[914]},{"teal":1064,"source":"contracts/stakingPool.algo.ts:305","pc":[915]},{"teal":1065,"source":"contracts/stakingPool.algo.ts:305","pc":[916,917]},{"teal":1068,"source":"contracts/stakingPool.algo.ts:303","pc":[918]},{"teal":1069,"source":"contracts/stakingPool.algo.ts:303","pc":[919,920]},{"teal":1072,"source":"contracts/stakingPool.algo.ts:303","pc":[921]},{"teal":1073,"source":"contracts/stakingPool.algo.ts:303","pc":[922,923]},{"teal":1074,"source":"contracts/stakingPool.algo.ts:303","pc":[924]},{"teal":1075,"source":"contracts/stakingPool.algo.ts:303","pc":[925]},{"teal":1076,"source":"contracts/stakingPool.algo.ts:303","pc":[926,927]},{"teal":1077,"source":"contracts/stakingPool.algo.ts:303","pc":[928,929,930]},{"teal":1078,"source":"contracts/stakingPool.algo.ts:303","pc":[931,932]},{"teal":1086,"source":"contracts/stakingPool.algo.ts:311","pc":[933]},{"teal":1087,"source":"contracts/stakingPool.algo.ts:311","pc":[934,935]},{"teal":1088,"source":"contracts/stakingPool.algo.ts:311","pc":[936,937]},{"teal":1092,"source":"contracts/stakingPool.algo.ts:312","pc":[938,939]},{"teal":1093,"source":"contracts/stakingPool.algo.ts:312","pc":[940,941,942]},{"teal":1094,"source":"contracts/stakingPool.algo.ts:312","pc":[943]},{"teal":1095,"source":"contracts/stakingPool.algo.ts:312","pc":[944,945]},{"teal":1099,"source":"contracts/stakingPool.algo.ts:313","pc":[946,947]},{"teal":1100,"source":"contracts/stakingPool.algo.ts:313","pc":[948,949]},{"teal":1104,"source":"contracts/stakingPool.algo.ts:314","pc":[950,951]},{"teal":1105,"source":"contracts/stakingPool.algo.ts:314","pc":[952,953,954]},{"teal":1106,"source":"contracts/stakingPool.algo.ts:314","pc":[955]},{"teal":1107,"source":"contracts/stakingPool.algo.ts:314","pc":[956,957]},{"teal":1110,"source":"contracts/stakingPool.algo.ts:311","pc":[958]},{"teal":1111,"source":"contracts/stakingPool.algo.ts:311","pc":[959,960]},{"teal":1114,"source":"contracts/stakingPool.algo.ts:311","pc":[961]},{"teal":1118,"source":"contracts/stakingPool.algo.ts:316","pc":[962,963]},{"teal":1119,"source":"contracts/stakingPool.algo.ts:316","pc":[964,965,966]},{"teal":1120,"source":"contracts/stakingPool.algo.ts:316","pc":[967]},{"teal":1121,"source":"contracts/stakingPool.algo.ts:316","pc":[968,969]},{"teal":1125,"source":"contracts/stakingPool.algo.ts:317","pc":[970,971]},{"teal":1126,"source":"contracts/stakingPool.algo.ts:317","pc":[972,973]},{"teal":1127,"source":"contracts/stakingPool.algo.ts:317","pc":[974,975]},{"teal":1128,"source":"contracts/stakingPool.algo.ts:317","pc":[976,977]},{"teal":1129,"source":"contracts/stakingPool.algo.ts:302","pc":[978,979,980]},{"teal":1134,"source":"contracts/stakingPool.algo.ts:322","pc":[981,982]},{"teal":1135,"source":"contracts/stakingPool.algo.ts:322","pc":[983,984,985]},{"teal":1136,"source":"contracts/stakingPool.algo.ts:322","pc":[986]},{"teal":1137,"source":"contracts/stakingPool.algo.ts:322","pc":[987,988]},{"teal":1141,"source":"contracts/stakingPool.algo.ts:323","pc":[989,990]},{"teal":1142,"source":"contracts/stakingPool.algo.ts:323","pc":[991,992]},{"teal":1143,"source":"contracts/stakingPool.algo.ts:323","pc":[993,994]},{"teal":1144,"source":"contracts/stakingPool.algo.ts:323","pc":[995,996]},{"teal":1154,"source":"contracts/stakingPool.algo.ts:329","pc":[997,998]},{"teal":1155,"source":"contracts/stakingPool.algo.ts:329","pc":[999,1000,1001]},{"teal":1156,"source":"contracts/stakingPool.algo.ts:329","pc":[1002]},{"teal":1157,"source":"contracts/stakingPool.algo.ts:329","pc":[1003]},{"teal":1158,"source":"contracts/stakingPool.algo.ts:329","pc":[1004]},{"teal":1159,"source":"contracts/stakingPool.algo.ts:329","pc":[1005]},{"teal":1160,"source":"contracts/stakingPool.algo.ts:329","pc":[1006,1007,1008]},{"teal":1161,"source":"contracts/stakingPool.algo.ts:329","pc":[1009,1010]},{"teal":1162,"source":"contracts/stakingPool.algo.ts:329","pc":[1011,1012,1013]},{"teal":1163,"source":"contracts/stakingPool.algo.ts:329","pc":[1014]},{"teal":1164,"source":"contracts/stakingPool.algo.ts:329","pc":[1015,1016]},{"teal":1165,"source":"contracts/stakingPool.algo.ts:329","pc":[1017]},{"teal":1166,"source":"contracts/stakingPool.algo.ts:329","pc":[1018]},{"teal":1167,"source":"contracts/stakingPool.algo.ts:329","pc":[1019]},{"teal":1171,"source":"contracts/stakingPool.algo.ts:328","errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1020]},{"teal":1179,"source":"contracts/stakingPool.algo.ts:336","pc":[1021]},{"teal":1180,"source":"contracts/stakingPool.algo.ts:336","pc":[1022]},{"teal":1181,"source":"contracts/stakingPool.algo.ts:336","pc":[1023,1024]},{"teal":1185,"source":"contracts/stakingPool.algo.ts:337","pc":[1025,1026]},{"teal":1186,"source":"contracts/stakingPool.algo.ts:337","pc":[1027,1028]},{"teal":1190,"source":"contracts/stakingPool.algo.ts:338","pc":[1029,1030]},{"teal":1191,"source":"contracts/stakingPool.algo.ts:338","pc":[1031,1032]},{"teal":1195,"source":"contracts/stakingPool.algo.ts:339","pc":[1033,1034,1035,1036,1037,1038,1039,1040,1041,1042]},{"teal":1196,"source":"contracts/stakingPool.algo.ts:339","pc":[1043,1044]},{"teal":1199,"source":"contracts/stakingPool.algo.ts:336","pc":[1045]},{"teal":1200,"source":"contracts/stakingPool.algo.ts:336","pc":[1046,1047]},{"teal":1203,"source":"contracts/stakingPool.algo.ts:336","pc":[1048]},{"teal":1207,"source":"contracts/stakingPool.algo.ts:341","pc":[1049]},{"teal":1208,"source":"contracts/stakingPool.algo.ts:341","pc":[1050,1051]},{"teal":1213,"source":"contracts/stakingPool.algo.ts:342","pc":[1052,1053]},{"teal":1214,"source":"contracts/stakingPool.algo.ts:342","pc":[1054,1055,1056]},{"teal":1215,"source":"contracts/stakingPool.algo.ts:342","pc":[1057]},{"teal":1216,"source":"contracts/stakingPool.algo.ts:342","pc":[1058]},{"teal":1217,"source":"contracts/stakingPool.algo.ts:342","pc":[1059]},{"teal":1218,"source":"contracts/stakingPool.algo.ts:342","pc":[1060,1061,1062]},{"teal":1223,"source":"contracts/stakingPool.algo.ts:344","pc":[1063,1064]},{"teal":1224,"source":"contracts/stakingPool.algo.ts:344","pc":[1065]},{"teal":1225,"source":"contracts/stakingPool.algo.ts:344","pc":[1066]},{"teal":1226,"source":"contracts/stakingPool.algo.ts:344","pc":[1067]},{"teal":1227,"source":"contracts/stakingPool.algo.ts:344","pc":[1068,1069]},{"teal":1228,"source":"contracts/stakingPool.algo.ts:344","pc":[1070]},{"teal":1229,"source":"contracts/stakingPool.algo.ts:344","pc":[1071]},{"teal":1233,"source":"contracts/stakingPool.algo.ts:345","pc":[1072,1073]},{"teal":1234,"source":"contracts/stakingPool.algo.ts:345","pc":[1074]},{"teal":1235,"source":"contracts/stakingPool.algo.ts:345","pc":[1075,1076]},{"teal":1236,"source":"contracts/stakingPool.algo.ts:345","pc":[1077]},{"teal":1237,"source":"contracts/stakingPool.algo.ts:345","pc":[1078,1079]},{"teal":1241,"source":"contracts/stakingPool.algo.ts:346","pc":[1080,1081]},{"teal":1242,"source":"contracts/stakingPool.algo.ts:346","pc":[1082,1083]},{"teal":1243,"source":"contracts/stakingPool.algo.ts:346","pc":[1084,1085]},{"teal":1244,"source":"contracts/stakingPool.algo.ts:346","pc":[1086,1087]},{"teal":1248,"source":"contracts/stakingPool.algo.ts:347","pc":[1088,1089]},{"teal":1249,"source":"contracts/stakingPool.algo.ts:347","pc":[1090,1091]},{"teal":1250,"source":"contracts/stakingPool.algo.ts:347","pc":[1092,1093]},{"teal":1251,"source":"contracts/stakingPool.algo.ts:347","pc":[1094,1095]},{"teal":1255,"source":"contracts/stakingPool.algo.ts:348","pc":[1096]},{"teal":1256,"source":"contracts/stakingPool.algo.ts:348","pc":[1097,1098]},{"teal":1261,"source":"contracts/stakingPool.algo.ts:351","pc":[1099,1100]},{"teal":1262,"source":"contracts/stakingPool.algo.ts:351","pc":[1101]},{"teal":1263,"source":"contracts/stakingPool.algo.ts:351","pc":[1102]},{"teal":1264,"source":"contracts/stakingPool.algo.ts:351","pc":[1103,1104]},{"teal":1265,"source":"contracts/stakingPool.algo.ts:351","pc":[1105]},{"teal":1266,"source":"contracts/stakingPool.algo.ts:351","pc":[1106,1107]},{"teal":1267,"source":"contracts/stakingPool.algo.ts:351","pc":[1108]},{"teal":1271,"source":"contracts/stakingPool.algo.ts:353","pc":[1109,1110]},{"teal":1272,"source":"contracts/stakingPool.algo.ts:353","pc":[1111]},{"teal":1273,"source":"contracts/stakingPool.algo.ts:353","pc":[1112,1113]},{"teal":1274,"source":"contracts/stakingPool.algo.ts:353","pc":[1114]},{"teal":1275,"source":"contracts/stakingPool.algo.ts:353","pc":[1115]},{"teal":1276,"source":"contracts/stakingPool.algo.ts:353","pc":[1116,1117]},{"teal":1277,"source":"contracts/stakingPool.algo.ts:353","pc":[1118]},{"teal":1278,"source":"contracts/stakingPool.algo.ts:353","pc":[1119,1120]},{"teal":1282,"source":"contracts/stakingPool.algo.ts:354","pc":[1121,1122]},{"teal":1283,"source":"contracts/stakingPool.algo.ts:354","pc":[1123]},{"teal":1284,"source":"contracts/stakingPool.algo.ts:354","pc":[1124,1125]},{"teal":1285,"source":"contracts/stakingPool.algo.ts:354","pc":[1126]},{"teal":1286,"source":"contracts/stakingPool.algo.ts:354","pc":[1127]},{"teal":1287,"source":"contracts/stakingPool.algo.ts:354","pc":[1128]},{"teal":1288,"source":"contracts/stakingPool.algo.ts:354","pc":[1129]},{"teal":1289,"source":"contracts/stakingPool.algo.ts:354","pc":[1130,1131]},{"teal":1290,"source":"contracts/stakingPool.algo.ts:354","pc":[1132]},{"teal":1293,"source":"contracts/stakingPool.algo.ts:354","errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1133]},{"teal":1294,"source":"contracts/stakingPool.algo.ts:354","pc":[1134,1135]},{"teal":1295,"source":"contracts/stakingPool.algo.ts:354","pc":[1136]},{"teal":1296,"source":"contracts/stakingPool.algo.ts:354","pc":[1137]},{"teal":1297,"source":"contracts/stakingPool.algo.ts:354","pc":[1138]},{"teal":1298,"source":"contracts/stakingPool.algo.ts:354","pc":[1139]},{"teal":1299,"source":"contracts/stakingPool.algo.ts:354","pc":[1140,1141]},{"teal":1300,"source":"contracts/stakingPool.algo.ts:354","pc":[1142]},{"teal":1301,"source":"contracts/stakingPool.algo.ts:354","pc":[1143]},{"teal":1302,"source":"contracts/stakingPool.algo.ts:354","pc":[1144]},{"teal":1303,"source":"contracts/stakingPool.algo.ts:354","pc":[1145,1146]},{"teal":1307,"source":"contracts/stakingPool.algo.ts:355","pc":[1147,1148]},{"teal":1308,"source":"contracts/stakingPool.algo.ts:355","pc":[1149]},{"teal":1309,"source":"contracts/stakingPool.algo.ts:355","pc":[1150]},{"teal":1310,"source":"contracts/stakingPool.algo.ts:355","pc":[1151,1152]},{"teal":1311,"source":"contracts/stakingPool.algo.ts:355","pc":[1153]},{"teal":1312,"source":"contracts/stakingPool.algo.ts:355","pc":[1154]},{"teal":1313,"source":"contracts/stakingPool.algo.ts:355","pc":[1155]},{"teal":1314,"source":"contracts/stakingPool.algo.ts:355","pc":[1156,1157]},{"teal":1315,"source":"contracts/stakingPool.algo.ts:355","pc":[1158]},{"teal":1318,"source":"contracts/stakingPool.algo.ts:355","errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1159]},{"teal":1319,"source":"contracts/stakingPool.algo.ts:355","pc":[1160,1161]},{"teal":1320,"source":"contracts/stakingPool.algo.ts:355","pc":[1162]},{"teal":1321,"source":"contracts/stakingPool.algo.ts:355","pc":[1163]},{"teal":1322,"source":"contracts/stakingPool.algo.ts:355","pc":[1164]},{"teal":1323,"source":"contracts/stakingPool.algo.ts:355","pc":[1165]},{"teal":1324,"source":"contracts/stakingPool.algo.ts:355","pc":[1166,1167]},{"teal":1325,"source":"contracts/stakingPool.algo.ts:355","pc":[1168]},{"teal":1326,"source":"contracts/stakingPool.algo.ts:355","pc":[1169]},{"teal":1327,"source":"contracts/stakingPool.algo.ts:355","pc":[1170]},{"teal":1328,"source":"contracts/stakingPool.algo.ts:355","pc":[1171]},{"teal":1341,"source":"contracts/stakingPool.algo.ts:360","pc":[1172]},{"teal":1342,"source":"contracts/stakingPool.algo.ts:360","pc":[1173]},{"teal":1343,"source":"contracts/stakingPool.algo.ts:360","pc":[1174,1175]},{"teal":1344,"source":"contracts/stakingPool.algo.ts:360","pc":[1176,1177]},{"teal":1345,"source":"contracts/stakingPool.algo.ts:360","pc":[1178,1179]},{"teal":1349,"source":"contracts/stakingPool.algo.ts:361","pc":[1180]},{"teal":1350,"source":"contracts/stakingPool.algo.ts:361","pc":[1181]},{"teal":1351,"source":"contracts/stakingPool.algo.ts:361","pc":[1182,1183]},{"teal":1361,"source":"contracts/stakingPool.algo.ts:363","pc":[1184]},{"teal":1362,"source":"contracts/stakingPool.algo.ts:363","pc":[1185]},{"teal":1363,"source":"contracts/stakingPool.algo.ts:363","pc":[1186]},{"teal":1364,"source":"contracts/stakingPool.algo.ts:363","pc":[1187,1188]},{"teal":1365,"source":"contracts/stakingPool.algo.ts:363","pc":[1189]},{"teal":1366,"source":"contracts/stakingPool.algo.ts:363","pc":[1190]},{"teal":1367,"source":"contracts/stakingPool.algo.ts:363","pc":[1191]},{"teal":1368,"source":"contracts/stakingPool.algo.ts:363","pc":[1192,1193,1194]},{"teal":1369,"source":"contracts/stakingPool.algo.ts:363","pc":[1195]},{"teal":1370,"source":"contracts/stakingPool.algo.ts:363","pc":[1196]},{"teal":1371,"source":"contracts/stakingPool.algo.ts:363","pc":[1197,1198]},{"teal":1372,"source":"contracts/stakingPool.algo.ts:364","pc":[1199,1200]},{"teal":1373,"source":"contracts/stakingPool.algo.ts:364","pc":[1201,1202]},{"teal":1374,"source":"contracts/stakingPool.algo.ts:365","pc":[1203,1204]},{"teal":1375,"source":"contracts/stakingPool.algo.ts:365","pc":[1205]},{"teal":1376,"source":"contracts/stakingPool.algo.ts:365","pc":[1206,1207]},{"teal":1377,"source":"contracts/stakingPool.algo.ts:366","pc":[1208,1209]},{"teal":1378,"source":"contracts/stakingPool.algo.ts:366","pc":[1210]},{"teal":1379,"source":"contracts/stakingPool.algo.ts:366","pc":[1211,1212]},{"teal":1380,"source":"contracts/stakingPool.algo.ts:367","pc":[1213,1214]},{"teal":1381,"source":"contracts/stakingPool.algo.ts:367","pc":[1215,1216]},{"teal":1382,"source":"contracts/stakingPool.algo.ts:367","pc":[1217]},{"teal":1383,"source":"contracts/stakingPool.algo.ts:367","pc":[1218,1219]},{"teal":1384,"source":"contracts/stakingPool.algo.ts:367","pc":[1220]},{"teal":1385,"source":"contracts/stakingPool.algo.ts:367","pc":[1221,1222]},{"teal":1388,"source":"contracts/stakingPool.algo.ts:360","pc":[1223]},{"teal":1389,"source":"contracts/stakingPool.algo.ts:360","pc":[1224,1225]},{"teal":1392,"source":"contracts/stakingPool.algo.ts:360","pc":[1226]},{"teal":1396,"source":"contracts/stakingPool.algo.ts:370","pc":[1227]},{"teal":1403,"source":"contracts/stakingPool.algo.ts:283","pc":[1228,1229]},{"teal":1404,"source":"contracts/stakingPool.algo.ts:283","pc":[1230]},{"teal":1405,"source":"contracts/stakingPool.algo.ts:283","pc":[1231]},{"teal":1406,"source":"contracts/stakingPool.algo.ts:283","pc":[1232,1233]},{"teal":1407,"source":"contracts/stakingPool.algo.ts:283","pc":[1234,1235,1236]},{"teal":1411,"source":"contracts/stakingPool.algo.ts:373","errorMessage":"account not found","pc":[1237]},{"teal":1412,"source":"contracts/stakingPool.algo.ts:271","pc":[1238]},{"teal":1417,"source":"contracts/stakingPool.algo.ts:381","pc":[1239,1240,1241]},{"teal":1418,"source":"contracts/stakingPool.algo.ts:381","pc":[1242]},{"teal":1419,"source":"contracts/stakingPool.algo.ts:381","pc":[1243]},{"teal":1427,"source":"contracts/stakingPool.algo.ts:381","pc":[1244,1245,1246]},{"teal":1430,"source":"contracts/stakingPool.algo.ts:381","pc":[1247]},{"teal":1431,"source":"contracts/stakingPool.algo.ts:381","pc":[1248,1249]},{"teal":1435,"source":"contracts/stakingPool.algo.ts:385","pc":[1250,1251]},{"teal":1436,"source":"contracts/stakingPool.algo.ts:385","pc":[1252,1253]},{"teal":1440,"source":"contracts/stakingPool.algo.ts:387","pc":[1254]},{"teal":1441,"source":"contracts/stakingPool.algo.ts:387","pc":[1255,1256]},{"teal":1446,"source":"contracts/stakingPool.algo.ts:387","pc":[1257,1258]},{"teal":1447,"source":"contracts/stakingPool.algo.ts:387","pc":[1259,1260]},{"teal":1448,"source":"contracts/stakingPool.algo.ts:387","pc":[1261]},{"teal":1449,"source":"contracts/stakingPool.algo.ts:387","pc":[1262,1263,1264]},{"teal":1454,"source":"contracts/stakingPool.algo.ts:388","pc":[1265,1266]},{"teal":1455,"source":"contracts/stakingPool.algo.ts:388","pc":[1267,1268]},{"teal":1456,"source":"contracts/stakingPool.algo.ts:388","pc":[1269]},{"teal":1457,"source":"contracts/stakingPool.algo.ts:388","pc":[1270,1271,1272]},{"teal":1462,"source":"contracts/stakingPool.algo.ts:389","pc":[1273]},{"teal":1463,"source":"contracts/stakingPool.algo.ts:389","pc":[1274]},{"teal":1464,"source":"contracts/stakingPool.algo.ts:389","pc":[1275,1276]},{"teal":1465,"source":"contracts/stakingPool.algo.ts:389","pc":[1277]},{"teal":1466,"source":"contracts/stakingPool.algo.ts:389","pc":[1278,1279]},{"teal":1467,"source":"contracts/stakingPool.algo.ts:389","pc":[1280,1281]},{"teal":1468,"source":"contracts/stakingPool.algo.ts:389","pc":[1282]},{"teal":1469,"source":"contracts/stakingPool.algo.ts:389","pc":[1283,1284]},{"teal":1470,"source":"contracts/stakingPool.algo.ts:389","pc":[1285,1286]},{"teal":1471,"source":"contracts/stakingPool.algo.ts:389","pc":[1287,1288]},{"teal":1472,"source":"contracts/stakingPool.algo.ts:389","pc":[1289,1290]},{"teal":1473,"source":"contracts/stakingPool.algo.ts:389","pc":[1291]},{"teal":1478,"source":"contracts/stakingPool.algo.ts:391","pc":[1292,1293]},{"teal":1479,"source":"contracts/stakingPool.algo.ts:391","pc":[1294]},{"teal":1480,"source":"contracts/stakingPool.algo.ts:391","pc":[1295]},{"teal":1481,"source":"contracts/stakingPool.algo.ts:391","pc":[1296]},{"teal":1482,"source":"contracts/stakingPool.algo.ts:391","pc":[1297]},{"teal":1483,"source":"contracts/stakingPool.algo.ts:391","pc":[1298,1299]},{"teal":1484,"source":"contracts/stakingPool.algo.ts:391","pc":[1300]},{"teal":1485,"source":"contracts/stakingPool.algo.ts:391","pc":[1301,1302]},{"teal":1490,"source":"contracts/stakingPool.algo.ts:392","pc":[1303,1304]},{"teal":1491,"source":"contracts/stakingPool.algo.ts:392","pc":[1305,1306,1307]},{"teal":1492,"source":"contracts/stakingPool.algo.ts:392","pc":[1308,1309]},{"teal":1493,"source":"contracts/stakingPool.algo.ts:392","pc":[1310]},{"teal":1494,"source":"contracts/stakingPool.algo.ts:392","pc":[1311,1312,1313]},{"teal":1500,"source":"contracts/stakingPool.algo.ts:393","pc":[1314,1315]},{"teal":1501,"source":"contracts/stakingPool.algo.ts:393","pc":[1316,1317,1318]},{"teal":1502,"source":"contracts/stakingPool.algo.ts:393","pc":[1319]},{"teal":1503,"source":"contracts/stakingPool.algo.ts:393","pc":[1320]},{"teal":1504,"source":"contracts/stakingPool.algo.ts:393","pc":[1321]},{"teal":1505,"source":"contracts/stakingPool.algo.ts:393","pc":[1322,1323,1324]},{"teal":1510,"source":"contracts/stakingPool.algo.ts:394","pc":[1325]},{"teal":1515,"source":"contracts/stakingPool.algo.ts:396","pc":[1326]},{"teal":1516,"source":"contracts/stakingPool.algo.ts:396","pc":[1327,1328]},{"teal":1521,"source":"contracts/stakingPool.algo.ts:398","pc":[1329,1330]},{"teal":1522,"source":"contracts/stakingPool.algo.ts:398","pc":[1331]},{"teal":1523,"source":"contracts/stakingPool.algo.ts:398","pc":[1332]},{"teal":1524,"source":"contracts/stakingPool.algo.ts:398","pc":[1333]},{"teal":1525,"source":"contracts/stakingPool.algo.ts:398","pc":[1334,1335,1336]},{"teal":1533,"source":"contracts/stakingPool.algo.ts:399","pc":[1337]},{"teal":1534,"source":"contracts/stakingPool.algo.ts:399","pc":[1338]},{"teal":1535,"source":"contracts/stakingPool.algo.ts:399","pc":[1339,1340]},{"teal":1536,"source":"contracts/stakingPool.algo.ts:399","pc":[1341,1342]},{"teal":1537,"source":"contracts/stakingPool.algo.ts:399","pc":[1343,1344]},{"teal":1541,"source":"contracts/stakingPool.algo.ts:400","pc":[1345]},{"teal":1542,"source":"contracts/stakingPool.algo.ts:400","pc":[1346]},{"teal":1543,"source":"contracts/stakingPool.algo.ts:400","pc":[1347,1348]},{"teal":1547,"source":"contracts/stakingPool.algo.ts:401","pc":[1349]},{"teal":1548,"source":"contracts/stakingPool.algo.ts:401","pc":[1350]},{"teal":1549,"source":"contracts/stakingPool.algo.ts:401","pc":[1351]},{"teal":1550,"source":"contracts/stakingPool.algo.ts:401","pc":[1352,1353]},{"teal":1553,"source":"contracts/stakingPool.algo.ts:399","pc":[1354]},{"teal":1554,"source":"contracts/stakingPool.algo.ts:399","pc":[1355,1356]},{"teal":1557,"source":"contracts/stakingPool.algo.ts:399","pc":[1357]},{"teal":1558,"source":"contracts/stakingPool.algo.ts:399","pc":[1358,1359]},{"teal":1559,"source":"contracts/stakingPool.algo.ts:399","pc":[1360]},{"teal":1560,"source":"contracts/stakingPool.algo.ts:399","pc":[1361]},{"teal":1561,"source":"contracts/stakingPool.algo.ts:399","pc":[1362,1363]},{"teal":1562,"source":"contracts/stakingPool.algo.ts:399","pc":[1364,1365,1366]},{"teal":1563,"source":"contracts/stakingPool.algo.ts:399","pc":[1367,1368]},{"teal":1571,"source":"contracts/stakingPool.algo.ts:406","pc":[1369]},{"teal":1572,"source":"contracts/stakingPool.algo.ts:406","pc":[1370,1371]},{"teal":1573,"source":"contracts/stakingPool.algo.ts:406","pc":[1372,1373]},{"teal":1577,"source":"contracts/stakingPool.algo.ts:407","pc":[1374,1375]},{"teal":1578,"source":"contracts/stakingPool.algo.ts:407","pc":[1376,1377,1378]},{"teal":1579,"source":"contracts/stakingPool.algo.ts:407","pc":[1379]},{"teal":1580,"source":"contracts/stakingPool.algo.ts:407","pc":[1380,1381]},{"teal":1584,"source":"contracts/stakingPool.algo.ts:408","pc":[1382,1383]},{"teal":1585,"source":"contracts/stakingPool.algo.ts:408","pc":[1384,1385]},{"teal":1589,"source":"contracts/stakingPool.algo.ts:409","pc":[1386,1387]},{"teal":1590,"source":"contracts/stakingPool.algo.ts:409","pc":[1388,1389,1390]},{"teal":1591,"source":"contracts/stakingPool.algo.ts:409","pc":[1391]},{"teal":1592,"source":"contracts/stakingPool.algo.ts:409","pc":[1392,1393]},{"teal":1595,"source":"contracts/stakingPool.algo.ts:406","pc":[1394]},{"teal":1596,"source":"contracts/stakingPool.algo.ts:406","pc":[1395,1396]},{"teal":1599,"source":"contracts/stakingPool.algo.ts:406","pc":[1397]},{"teal":1603,"source":"contracts/stakingPool.algo.ts:411","pc":[1398,1399]},{"teal":1604,"source":"contracts/stakingPool.algo.ts:411","pc":[1400,1401,1402]},{"teal":1605,"source":"contracts/stakingPool.algo.ts:411","pc":[1403]},{"teal":1606,"source":"contracts/stakingPool.algo.ts:411","pc":[1404,1405]},{"teal":1610,"source":"contracts/stakingPool.algo.ts:412","pc":[1406,1407]},{"teal":1611,"source":"contracts/stakingPool.algo.ts:412","pc":[1408,1409]},{"teal":1612,"source":"contracts/stakingPool.algo.ts:412","pc":[1410,1411]},{"teal":1613,"source":"contracts/stakingPool.algo.ts:412","pc":[1412,1413]},{"teal":1614,"source":"contracts/stakingPool.algo.ts:398","pc":[1414,1415,1416]},{"teal":1619,"source":"contracts/stakingPool.algo.ts:417","pc":[1417,1418]},{"teal":1620,"source":"contracts/stakingPool.algo.ts:417","pc":[1419,1420,1421]},{"teal":1621,"source":"contracts/stakingPool.algo.ts:417","pc":[1422]},{"teal":1622,"source":"contracts/stakingPool.algo.ts:417","pc":[1423,1424]},{"teal":1626,"source":"contracts/stakingPool.algo.ts:418","pc":[1425,1426]},{"teal":1627,"source":"contracts/stakingPool.algo.ts:418","pc":[1427,1428]},{"teal":1628,"source":"contracts/stakingPool.algo.ts:418","pc":[1429,1430]},{"teal":1629,"source":"contracts/stakingPool.algo.ts:418","pc":[1431,1432]},{"teal":1634,"source":"contracts/stakingPool.algo.ts:422","pc":[1433,1434]},{"teal":1635,"source":"contracts/stakingPool.algo.ts:422","pc":[1435]},{"teal":1636,"source":"contracts/stakingPool.algo.ts:422","pc":[1436]},{"teal":1637,"source":"contracts/stakingPool.algo.ts:422","pc":[1437,1438]},{"teal":1638,"source":"contracts/stakingPool.algo.ts:422","pc":[1439]},{"teal":1639,"source":"contracts/stakingPool.algo.ts:422","pc":[1440,1441]},{"teal":1640,"source":"contracts/stakingPool.algo.ts:422","pc":[1442]},{"teal":1653,"source":"contracts/stakingPool.algo.ts:427","pc":[1443]},{"teal":1654,"source":"contracts/stakingPool.algo.ts:427","pc":[1444]},{"teal":1655,"source":"contracts/stakingPool.algo.ts:427","pc":[1445,1446]},{"teal":1656,"source":"contracts/stakingPool.algo.ts:427","pc":[1447,1448]},{"teal":1657,"source":"contracts/stakingPool.algo.ts:427","pc":[1449,1450]},{"teal":1661,"source":"contracts/stakingPool.algo.ts:428","pc":[1451]},{"teal":1662,"source":"contracts/stakingPool.algo.ts:428","pc":[1452]},{"teal":1663,"source":"contracts/stakingPool.algo.ts:428","pc":[1453,1454]},{"teal":1673,"source":"contracts/stakingPool.algo.ts:430","pc":[1455]},{"teal":1674,"source":"contracts/stakingPool.algo.ts:430","pc":[1456]},{"teal":1675,"source":"contracts/stakingPool.algo.ts:430","pc":[1457]},{"teal":1676,"source":"contracts/stakingPool.algo.ts:430","pc":[1458,1459]},{"teal":1677,"source":"contracts/stakingPool.algo.ts:430","pc":[1460]},{"teal":1678,"source":"contracts/stakingPool.algo.ts:430","pc":[1461]},{"teal":1679,"source":"contracts/stakingPool.algo.ts:430","pc":[1462]},{"teal":1680,"source":"contracts/stakingPool.algo.ts:430","pc":[1463,1464,1465]},{"teal":1681,"source":"contracts/stakingPool.algo.ts:430","pc":[1466]},{"teal":1682,"source":"contracts/stakingPool.algo.ts:430","pc":[1467]},{"teal":1683,"source":"contracts/stakingPool.algo.ts:430","pc":[1468,1469]},{"teal":1684,"source":"contracts/stakingPool.algo.ts:431","pc":[1470,1471]},{"teal":1685,"source":"contracts/stakingPool.algo.ts:431","pc":[1472,1473]},{"teal":1686,"source":"contracts/stakingPool.algo.ts:432","pc":[1474,1475]},{"teal":1687,"source":"contracts/stakingPool.algo.ts:432","pc":[1476,1477]},{"teal":1688,"source":"contracts/stakingPool.algo.ts:433","pc":[1478,1479]},{"teal":1689,"source":"contracts/stakingPool.algo.ts:433","pc":[1480]},{"teal":1690,"source":"contracts/stakingPool.algo.ts:433","pc":[1481,1482]},{"teal":1691,"source":"contracts/stakingPool.algo.ts:434","pc":[1483]},{"teal":1692,"source":"contracts/stakingPool.algo.ts:434","pc":[1484,1485]},{"teal":1693,"source":"contracts/stakingPool.algo.ts:434","pc":[1486]},{"teal":1694,"source":"contracts/stakingPool.algo.ts:434","pc":[1487,1488]},{"teal":1695,"source":"contracts/stakingPool.algo.ts:434","pc":[1489]},{"teal":1696,"source":"contracts/stakingPool.algo.ts:434","pc":[1490,1491]},{"teal":1699,"source":"contracts/stakingPool.algo.ts:427","pc":[1492]},{"teal":1700,"source":"contracts/stakingPool.algo.ts:427","pc":[1493,1494]},{"teal":1703,"source":"contracts/stakingPool.algo.ts:427","pc":[1495]},{"teal":1707,"source":"contracts/stakingPool.algo.ts:437","pc":[1496]},{"teal":1714,"source":"contracts/stakingPool.algo.ts:387","pc":[1497,1498]},{"teal":1715,"source":"contracts/stakingPool.algo.ts:387","pc":[1499]},{"teal":1716,"source":"contracts/stakingPool.algo.ts:387","pc":[1500]},{"teal":1717,"source":"contracts/stakingPool.algo.ts:387","pc":[1501,1502]},{"teal":1718,"source":"contracts/stakingPool.algo.ts:387","pc":[1503,1504,1505]},{"teal":1722,"source":"contracts/stakingPool.algo.ts:440","errorMessage":"account not found","pc":[1506]},{"teal":1723,"source":"contracts/stakingPool.algo.ts:381","pc":[1507]},{"teal":1728,"source":"contracts/stakingPool.algo.ts:450","pc":[1508,1509]},{"teal":1731,"source":"contracts/stakingPool.algo.ts:451","pc":[1510,1511,1512]},{"teal":1732,"source":"contracts/stakingPool.algo.ts:451","pc":[1513]},{"teal":1733,"source":"contracts/stakingPool.algo.ts:451","pc":[1514]},{"teal":1734,"source":"contracts/stakingPool.algo.ts:451","pc":[1515,1516]},{"teal":1735,"source":"contracts/stakingPool.algo.ts:451","pc":[1517]},{"teal":1738,"source":"contracts/stakingPool.algo.ts:451","errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1518]},{"teal":1741,"source":"contracts/stakingPool.algo.ts:450","pc":[1519,1520,1521]},{"teal":1742,"source":"contracts/stakingPool.algo.ts:450","pc":[1522]},{"teal":1743,"source":"contracts/stakingPool.algo.ts:450","pc":[1523]},{"teal":1744,"source":"contracts/stakingPool.algo.ts:450","pc":[1524]},{"teal":1745,"source":"contracts/stakingPool.algo.ts:450","pc":[1525]},{"teal":1755,"source":"contracts/stakingPool.algo.ts:450","pc":[1526,1527,1528]},{"teal":1758,"source":"contracts/stakingPool.algo.ts:450","pc":[1529]},{"teal":1762,"source":"contracts/stakingPool.algo.ts:452","pc":[1530]},{"teal":1763,"source":"contracts/stakingPool.algo.ts:452","pc":[1531,1532]},{"teal":1768,"source":"contracts/stakingPool.algo.ts:452","pc":[1533,1534]},{"teal":1769,"source":"contracts/stakingPool.algo.ts:452","pc":[1535,1536]},{"teal":1770,"source":"contracts/stakingPool.algo.ts:452","pc":[1537]},{"teal":1771,"source":"contracts/stakingPool.algo.ts:452","pc":[1538,1539,1540]},{"teal":1776,"source":"contracts/stakingPool.algo.ts:453","pc":[1541,1542]},{"teal":1777,"source":"contracts/stakingPool.algo.ts:453","pc":[1543,1544]},{"teal":1778,"source":"contracts/stakingPool.algo.ts:453","pc":[1545]},{"teal":1779,"source":"contracts/stakingPool.algo.ts:453","pc":[1546,1547,1548]},{"teal":1784,"source":"contracts/stakingPool.algo.ts:454","pc":[1549]},{"teal":1785,"source":"contracts/stakingPool.algo.ts:454","pc":[1550]},{"teal":1786,"source":"contracts/stakingPool.algo.ts:454","pc":[1551,1552]},{"teal":1787,"source":"contracts/stakingPool.algo.ts:454","pc":[1553]},{"teal":1788,"source":"contracts/stakingPool.algo.ts:454","pc":[1554,1555]},{"teal":1789,"source":"contracts/stakingPool.algo.ts:454","pc":[1556,1557]},{"teal":1790,"source":"contracts/stakingPool.algo.ts:454","pc":[1558]},{"teal":1791,"source":"contracts/stakingPool.algo.ts:454","pc":[1559,1560]},{"teal":1792,"source":"contracts/stakingPool.algo.ts:454","pc":[1561,1562]},{"teal":1793,"source":"contracts/stakingPool.algo.ts:454","pc":[1563,1564]},{"teal":1794,"source":"contracts/stakingPool.algo.ts:454","pc":[1565,1566]},{"teal":1795,"source":"contracts/stakingPool.algo.ts:454","pc":[1567]},{"teal":1801,"source":"contracts/stakingPool.algo.ts:456","pc":[1568,1569]},{"teal":1802,"source":"contracts/stakingPool.algo.ts:456","pc":[1570]},{"teal":1803,"source":"contracts/stakingPool.algo.ts:456","pc":[1571]},{"teal":1804,"source":"contracts/stakingPool.algo.ts:456","pc":[1572]},{"teal":1805,"source":"contracts/stakingPool.algo.ts:456","pc":[1573]},{"teal":1806,"source":"contracts/stakingPool.algo.ts:456","pc":[1574,1575]},{"teal":1807,"source":"contracts/stakingPool.algo.ts:456","pc":[1576]},{"teal":1808,"source":"contracts/stakingPool.algo.ts:456","pc":[1577,1578]},{"teal":1809,"source":"contracts/stakingPool.algo.ts:456","pc":[1579]},{"teal":1810,"source":"contracts/stakingPool.algo.ts:456","pc":[1580,1581]},{"teal":1811,"source":"contracts/stakingPool.algo.ts:456","pc":[1582]},{"teal":1812,"source":"contracts/stakingPool.algo.ts:456","pc":[1583,1584,1585]},{"teal":1817,"source":"contracts/stakingPool.algo.ts:457","pc":[1586,1587]},{"teal":1818,"source":"contracts/stakingPool.algo.ts:457","pc":[1588]},{"teal":1819,"source":"contracts/stakingPool.algo.ts:457","pc":[1589]},{"teal":1820,"source":"contracts/stakingPool.algo.ts:457","pc":[1590]},{"teal":1821,"source":"contracts/stakingPool.algo.ts:457","pc":[1591]},{"teal":1822,"source":"contracts/stakingPool.algo.ts:457","pc":[1592,1593]},{"teal":1823,"source":"contracts/stakingPool.algo.ts:457","pc":[1594]},{"teal":1824,"source":"contracts/stakingPool.algo.ts:457","pc":[1595,1596,1597]},{"teal":1831,"source":"contracts/stakingPool.algo.ts:452","pc":[1598,1599]},{"teal":1832,"source":"contracts/stakingPool.algo.ts:452","pc":[1600]},{"teal":1833,"source":"contracts/stakingPool.algo.ts:452","pc":[1601]},{"teal":1834,"source":"contracts/stakingPool.algo.ts:452","pc":[1602,1603]},{"teal":1835,"source":"contracts/stakingPool.algo.ts:452","pc":[1604,1605,1606]},{"teal":1839,"source":"contracts/stakingPool.algo.ts:460","errorMessage":"account not found","pc":[1607]},{"teal":1843,"source":"contracts/stakingPool.algo.ts:450","pc":[1608,1609]},{"teal":1844,"source":"contracts/stakingPool.algo.ts:450","pc":[1610]},{"teal":1849,"source":"contracts/stakingPool.algo.ts:473","pc":[1611,1612,1613]},{"teal":1850,"source":"contracts/stakingPool.algo.ts:473","pc":[1614]},{"teal":1853,"source":"contracts/stakingPool.algo.ts:473","pc":[1615,1616,1617]},{"teal":1854,"source":"contracts/stakingPool.algo.ts:473","pc":[1618]},{"teal":1857,"source":"contracts/stakingPool.algo.ts:473","pc":[1619,1620,1621]},{"teal":1858,"source":"contracts/stakingPool.algo.ts:473","pc":[1622]},{"teal":1859,"source":"contracts/stakingPool.algo.ts:473","pc":[1623]},{"teal":1860,"source":"contracts/stakingPool.algo.ts:473","pc":[1624,1625]},{"teal":1861,"source":"contracts/stakingPool.algo.ts:473","pc":[1626]},{"teal":1864,"source":"contracts/stakingPool.algo.ts:473","errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1627]},{"teal":1867,"source":"contracts/stakingPool.algo.ts:473","pc":[1628,1629,1630]},{"teal":1868,"source":"contracts/stakingPool.algo.ts:473","pc":[1631]},{"teal":1869,"source":"contracts/stakingPool.algo.ts:473","pc":[1632]},{"teal":1882,"source":"contracts/stakingPool.algo.ts:473","pc":[1633,1634,1635]},{"teal":1889,"source":"contracts/stakingPool.algo.ts:476","pc":[1636,1637]},{"teal":1890,"source":"contracts/stakingPool.algo.ts:476","pc":[1638]},{"teal":1891,"source":"contracts/stakingPool.algo.ts:476","pc":[1639]},{"teal":1892,"source":"contracts/stakingPool.algo.ts:476","pc":[1640,1641]},{"teal":1893,"source":"contracts/stakingPool.algo.ts:476","pc":[1642]},{"teal":1894,"source":"contracts/stakingPool.algo.ts:476","pc":[1643]},{"teal":1897,"source":"contracts/stakingPool.algo.ts:475","errorMessage":"this can only be called via the validator contract","pc":[1644]},{"teal":1901,"source":"contracts/stakingPool.algo.ts:479","pc":[1645,1646]},{"teal":1902,"source":"contracts/stakingPool.algo.ts:479","pc":[1647]},{"teal":1903,"source":"contracts/stakingPool.algo.ts:479","pc":[1648]},{"teal":1904,"source":"contracts/stakingPool.algo.ts:479","pc":[1649]},{"teal":1907,"source":"contracts/stakingPool.algo.ts:479","errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1650]},{"teal":1911,"source":"contracts/stakingPool.algo.ts:480","pc":[1651,1652]},{"teal":1912,"source":"contracts/stakingPool.algo.ts:480","pc":[1653]},{"teal":1913,"source":"contracts/stakingPool.algo.ts:480","pc":[1654]},{"teal":1916,"source":"contracts/stakingPool.algo.ts:480","errorMessage":"can only claim token rewards from validator that has them","pc":[1655]},{"teal":1924,"source":"contracts/stakingPool.algo.ts:483","pc":[1656]},{"teal":1925,"source":"contracts/stakingPool.algo.ts:483","pc":[1657,1658]},{"teal":1926,"source":"contracts/stakingPool.algo.ts:483","pc":[1659,1660]},{"teal":1930,"source":"contracts/stakingPool.algo.ts:484","pc":[1661,1662]},{"teal":1931,"source":"contracts/stakingPool.algo.ts:484","pc":[1663,1664]},{"teal":1935,"source":"contracts/stakingPool.algo.ts:485","pc":[1665,1666]},{"teal":1936,"source":"contracts/stakingPool.algo.ts:485","pc":[1667,1668]},{"teal":1940,"source":"contracts/stakingPool.algo.ts:486","pc":[1669,1670]},{"teal":1941,"source":"contracts/stakingPool.algo.ts:486","pc":[1671,1672]},{"teal":1944,"source":"contracts/stakingPool.algo.ts:483","pc":[1673]},{"teal":1945,"source":"contracts/stakingPool.algo.ts:483","pc":[1674,1675]},{"teal":1948,"source":"contracts/stakingPool.algo.ts:483","pc":[1676]},{"teal":1949,"source":"contracts/stakingPool.algo.ts:473","pc":[1677]},{"teal":1954,"source":"contracts/stakingPool.algo.ts:499","pc":[1678,1679,1680]},{"teal":1955,"source":"contracts/stakingPool.algo.ts:499","pc":[1681,1682,1683]},{"teal":1958,"source":"contracts/stakingPool.algo.ts:499","pc":[1684,1685,1686]},{"teal":1959,"source":"contracts/stakingPool.algo.ts:499","pc":[1687]},{"teal":1960,"source":"contracts/stakingPool.algo.ts:499","pc":[1688]},{"teal":1972,"source":"contracts/stakingPool.algo.ts:499","pc":[1689,1690,1691]},{"teal":1976,"source":"contracts/stakingPool.algo.ts:500","pc":[1692,1693,1694]},{"teal":1979,"source":"contracts/stakingPool.algo.ts:500","errorMessage":"can only be called by owner or manager of validator","pc":[1695]},{"teal":1983,"source":"contracts/stakingPool.algo.ts:501","pc":[1696,1697,1698,1699,1700,1701,1702,1703,1704,1705]},{"teal":1984,"source":"contracts/stakingPool.algo.ts:501","pc":[1706,1707]},{"teal":1985,"source":"contracts/stakingPool.algo.ts:501","pc":[1708]},{"teal":1986,"source":"contracts/stakingPool.algo.ts:499","pc":[1709]},{"teal":1991,"source":"contracts/stakingPool.algo.ts:512","pc":[1710,1711,1712]},{"teal":1992,"source":"contracts/stakingPool.algo.ts:512","pc":[1713]},{"teal":1993,"source":"contracts/stakingPool.algo.ts:512","pc":[1714]},{"teal":2004,"source":"contracts/stakingPool.algo.ts:512","pc":[1715,1716,1717]},{"teal":2007,"source":"contracts/stakingPool.algo.ts:512","pc":[1718]},{"teal":2008,"source":"contracts/stakingPool.algo.ts:512","pc":[1719,1720]},{"teal":2015,"source":"contracts/stakingPool.algo.ts:514","pc":[1721]},{"teal":2016,"source":"contracts/stakingPool.algo.ts:514","pc":[1722]},{"teal":2017,"source":"contracts/stakingPool.algo.ts:514","pc":[1723,1724]},{"teal":2018,"source":"contracts/stakingPool.algo.ts:514","pc":[1725,1726]},{"teal":2019,"source":"contracts/stakingPool.algo.ts:514","pc":[1727,1728]},{"teal":2023,"source":"contracts/stakingPool.algo.ts:515","pc":[1729]},{"teal":2024,"source":"contracts/stakingPool.algo.ts:515","pc":[1730]},{"teal":2025,"source":"contracts/stakingPool.algo.ts:515","pc":[1731,1732]},{"teal":2029,"source":"contracts/stakingPool.algo.ts:516","pc":[1733]},{"teal":2030,"source":"contracts/stakingPool.algo.ts:516","pc":[1734]},{"teal":2031,"source":"contracts/stakingPool.algo.ts:516","pc":[1735]},{"teal":2032,"source":"contracts/stakingPool.algo.ts:516","pc":[1736,1737]},{"teal":2035,"source":"contracts/stakingPool.algo.ts:514","pc":[1738]},{"teal":2036,"source":"contracts/stakingPool.algo.ts:514","pc":[1739,1740]},{"teal":2039,"source":"contracts/stakingPool.algo.ts:514","pc":[1741]},{"teal":2040,"source":"contracts/stakingPool.algo.ts:514","pc":[1742,1743]},{"teal":2041,"source":"contracts/stakingPool.algo.ts:514","pc":[1744]},{"teal":2042,"source":"contracts/stakingPool.algo.ts:514","pc":[1745]},{"teal":2043,"source":"contracts/stakingPool.algo.ts:514","pc":[1746,1747]},{"teal":2044,"source":"contracts/stakingPool.algo.ts:514","pc":[1748,1749,1750]},{"teal":2045,"source":"contracts/stakingPool.algo.ts:514","pc":[1751,1752]},{"teal":2049,"source":"contracts/stakingPool.algo.ts:523","pc":[1753,1754]},{"teal":2050,"source":"contracts/stakingPool.algo.ts:523","pc":[1755,1756,1757]},{"teal":2051,"source":"contracts/stakingPool.algo.ts:523","pc":[1758]},{"teal":2052,"source":"contracts/stakingPool.algo.ts:523","pc":[1759,1760]},{"teal":2056,"source":"contracts/stakingPool.algo.ts:524","pc":[1761,1762]},{"teal":2057,"source":"contracts/stakingPool.algo.ts:524","pc":[1763,1764]},{"teal":2061,"source":"contracts/stakingPool.algo.ts:525","pc":[1765,1766]},{"teal":2062,"source":"contracts/stakingPool.algo.ts:525","pc":[1767,1768]},{"teal":2063,"source":"contracts/stakingPool.algo.ts:525","pc":[1769,1770]},{"teal":2064,"source":"contracts/stakingPool.algo.ts:525","pc":[1771]},{"teal":2065,"source":"contracts/stakingPool.algo.ts:525","pc":[1772]},{"teal":2066,"source":"contracts/stakingPool.algo.ts:525","pc":[1773,1774]},{"teal":2070,"source":"contracts/stakingPool.algo.ts:528","pc":[1775,1776]},{"teal":2071,"source":"contracts/stakingPool.algo.ts:528","pc":[1777]},{"teal":2072,"source":"contracts/stakingPool.algo.ts:528","pc":[1778,1779]},{"teal":2073,"source":"contracts/stakingPool.algo.ts:528","pc":[1780]},{"teal":2074,"source":"contracts/stakingPool.algo.ts:528","pc":[1781,1782]},{"teal":2075,"source":"contracts/stakingPool.algo.ts:528","pc":[1783]},{"teal":2076,"source":"contracts/stakingPool.algo.ts:528","pc":[1784]},{"teal":2077,"source":"contracts/stakingPool.algo.ts:528","pc":[1785,1786]},{"teal":2081,"source":"contracts/stakingPool.algo.ts:530","pc":[1787,1788]},{"teal":2082,"source":"contracts/stakingPool.algo.ts:530","pc":[1789,1790]},{"teal":2083,"source":"contracts/stakingPool.algo.ts:530","pc":[1791]},{"teal":2086,"source":"contracts/stakingPool.algo.ts:530","errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[1792]},{"teal":2090,"source":"contracts/stakingPool.algo.ts:532","pc":[1793,1794,1795]},{"teal":2094,"source":"contracts/stakingPool.algo.ts:535","pc":[1796,1797]},{"teal":2095,"source":"contracts/stakingPool.algo.ts:535","pc":[1798,1799]},{"teal":2096,"source":"contracts/stakingPool.algo.ts:535","pc":[1800]},{"teal":2100,"source":"contracts/stakingPool.algo.ts:536","pc":[1801,1802]},{"teal":2101,"source":"contracts/stakingPool.algo.ts:536","pc":[1803]},{"teal":2102,"source":"contracts/stakingPool.algo.ts:536","pc":[1804]},{"teal":2103,"source":"contracts/stakingPool.algo.ts:536","pc":[1805]},{"teal":2104,"source":"contracts/stakingPool.algo.ts:536","pc":[1806,1807]},{"teal":2105,"source":"contracts/stakingPool.algo.ts:536","pc":[1808]},{"teal":2106,"source":"contracts/stakingPool.algo.ts:536","pc":[1809]},{"teal":2110,"source":"contracts/stakingPool.algo.ts:541","pc":[1810,1811]},{"teal":2111,"source":"contracts/stakingPool.algo.ts:541","pc":[1812,1813,1814]},{"teal":2112,"source":"contracts/stakingPool.algo.ts:541","pc":[1815]},{"teal":2113,"source":"contracts/stakingPool.algo.ts:541","pc":[1816]},{"teal":2114,"source":"contracts/stakingPool.algo.ts:541","pc":[1817]},{"teal":2115,"source":"contracts/stakingPool.algo.ts:541","pc":[1818,1819]},{"teal":2119,"source":"contracts/stakingPool.algo.ts:542","pc":[1820,1821,1822]},{"teal":2120,"source":"contracts/stakingPool.algo.ts:542","pc":[1823,1824]},{"teal":2124,"source":"contracts/stakingPool.algo.ts:543","pc":[1825,1826]},{"teal":2125,"source":"contracts/stakingPool.algo.ts:543","pc":[1827,1828]},{"teal":2130,"source":"contracts/stakingPool.algo.ts:548","pc":[1829,1830]},{"teal":2131,"source":"contracts/stakingPool.algo.ts:548","pc":[1831,1832,1833]},{"teal":2137,"source":"contracts/stakingPool.algo.ts:549","pc":[1834,1835]},{"teal":2138,"source":"contracts/stakingPool.algo.ts:549","pc":[1836]},{"teal":2139,"source":"contracts/stakingPool.algo.ts:549","pc":[1837]},{"teal":2140,"source":"contracts/stakingPool.algo.ts:549","pc":[1838]},{"teal":2141,"source":"contracts/stakingPool.algo.ts:549","pc":[1839,1840,1841]},{"teal":2149,"source":"contracts/stakingPool.algo.ts:551","pc":[1842]},{"teal":2150,"source":"contracts/stakingPool.algo.ts:551","pc":[1843]},{"teal":2151,"source":"contracts/stakingPool.algo.ts:551","pc":[1844,1845]},{"teal":2152,"source":"contracts/stakingPool.algo.ts:551","pc":[1846,1847]},{"teal":2153,"source":"contracts/stakingPool.algo.ts:551","pc":[1848,1849]},{"teal":2157,"source":"contracts/stakingPool.algo.ts:552","pc":[1850]},{"teal":2158,"source":"contracts/stakingPool.algo.ts:552","pc":[1851]},{"teal":2159,"source":"contracts/stakingPool.algo.ts:552","pc":[1852,1853]},{"teal":2163,"source":"contracts/stakingPool.algo.ts:553","pc":[1854]},{"teal":2164,"source":"contracts/stakingPool.algo.ts:553","pc":[1855]},{"teal":2165,"source":"contracts/stakingPool.algo.ts:553","pc":[1856]},{"teal":2166,"source":"contracts/stakingPool.algo.ts:553","pc":[1857,1858]},{"teal":2167,"source":"contracts/stakingPool.algo.ts:553","pc":[1859,1860,1861,1862,1863,1864,1865,1866,1867,1868]},{"teal":2168,"source":"contracts/stakingPool.algo.ts:553","pc":[1869,1870]},{"teal":2171,"source":"contracts/stakingPool.algo.ts:551","pc":[1871]},{"teal":2172,"source":"contracts/stakingPool.algo.ts:551","pc":[1872,1873]},{"teal":2175,"source":"contracts/stakingPool.algo.ts:551","pc":[1874]},{"teal":2176,"source":"contracts/stakingPool.algo.ts:551","pc":[1875,1876]},{"teal":2177,"source":"contracts/stakingPool.algo.ts:551","pc":[1877]},{"teal":2178,"source":"contracts/stakingPool.algo.ts:551","pc":[1878]},{"teal":2179,"source":"contracts/stakingPool.algo.ts:551","pc":[1879,1880]},{"teal":2180,"source":"contracts/stakingPool.algo.ts:551","pc":[1881,1882,1883]},{"teal":2181,"source":"contracts/stakingPool.algo.ts:551","pc":[1884]},{"teal":2182,"source":"contracts/stakingPool.algo.ts:551","pc":[1885,1886]},{"teal":2186,"source":"contracts/stakingPool.algo.ts:555","pc":[1887,1888]},{"teal":2187,"source":"contracts/stakingPool.algo.ts:555","pc":[1889,1890]},{"teal":2188,"source":"contracts/stakingPool.algo.ts:555","pc":[1891]},{"teal":2189,"source":"contracts/stakingPool.algo.ts:555","pc":[1892,1893]},{"teal":2195,"source":"contracts/stakingPool.algo.ts:560","pc":[1894,1895]},{"teal":2196,"source":"contracts/stakingPool.algo.ts:560","pc":[1896]},{"teal":2197,"source":"contracts/stakingPool.algo.ts:560","pc":[1897]},{"teal":2198,"source":"contracts/stakingPool.algo.ts:560","pc":[1898]},{"teal":2199,"source":"contracts/stakingPool.algo.ts:560","pc":[1899,1900,1901]},{"teal":2207,"source":"contracts/stakingPool.algo.ts:561","pc":[1902]},{"teal":2208,"source":"contracts/stakingPool.algo.ts:561","pc":[1903]},{"teal":2209,"source":"contracts/stakingPool.algo.ts:561","pc":[1904,1905]},{"teal":2210,"source":"contracts/stakingPool.algo.ts:561","pc":[1906,1907]},{"teal":2211,"source":"contracts/stakingPool.algo.ts:561","pc":[1908,1909]},{"teal":2215,"source":"contracts/stakingPool.algo.ts:562","pc":[1910]},{"teal":2216,"source":"contracts/stakingPool.algo.ts:562","pc":[1911]},{"teal":2217,"source":"contracts/stakingPool.algo.ts:562","pc":[1912,1913]},{"teal":2221,"source":"contracts/stakingPool.algo.ts:563","pc":[1914]},{"teal":2222,"source":"contracts/stakingPool.algo.ts:563","pc":[1915]},{"teal":2223,"source":"contracts/stakingPool.algo.ts:563","pc":[1916]},{"teal":2224,"source":"contracts/stakingPool.algo.ts:563","pc":[1917,1918]},{"teal":2227,"source":"contracts/stakingPool.algo.ts:561","pc":[1919]},{"teal":2228,"source":"contracts/stakingPool.algo.ts:561","pc":[1920,1921]},{"teal":2231,"source":"contracts/stakingPool.algo.ts:561","pc":[1922]},{"teal":2232,"source":"contracts/stakingPool.algo.ts:561","pc":[1923,1924]},{"teal":2233,"source":"contracts/stakingPool.algo.ts:561","pc":[1925]},{"teal":2234,"source":"contracts/stakingPool.algo.ts:561","pc":[1926]},{"teal":2235,"source":"contracts/stakingPool.algo.ts:561","pc":[1927,1928]},{"teal":2236,"source":"contracts/stakingPool.algo.ts:561","pc":[1929,1930,1931]},{"teal":2237,"source":"contracts/stakingPool.algo.ts:561","pc":[1932,1933]},{"teal":2238,"source":"contracts/stakingPool.algo.ts:560","pc":[1934,1935,1936]},{"teal":2246,"source":"contracts/stakingPool.algo.ts:567","pc":[1937]},{"teal":2247,"source":"contracts/stakingPool.algo.ts:567","pc":[1938]},{"teal":2248,"source":"contracts/stakingPool.algo.ts:567","pc":[1939,1940]},{"teal":2249,"source":"contracts/stakingPool.algo.ts:567","pc":[1941,1942]},{"teal":2250,"source":"contracts/stakingPool.algo.ts:567","pc":[1943,1944]},{"teal":2254,"source":"contracts/stakingPool.algo.ts:568","pc":[1945,1946]},{"teal":2255,"source":"contracts/stakingPool.algo.ts:568","pc":[1947,1948]},{"teal":2259,"source":"contracts/stakingPool.algo.ts:569","pc":[1949]},{"teal":2260,"source":"contracts/stakingPool.algo.ts:569","pc":[1950]},{"teal":2261,"source":"contracts/stakingPool.algo.ts:569","pc":[1951]},{"teal":2262,"source":"contracts/stakingPool.algo.ts:569","pc":[1952,1953]},{"teal":2263,"source":"contracts/stakingPool.algo.ts:569","pc":[1954]},{"teal":2264,"source":"contracts/stakingPool.algo.ts:569","pc":[1955]},{"teal":2265,"source":"contracts/stakingPool.algo.ts:569","pc":[1956]},{"teal":2266,"source":"contracts/stakingPool.algo.ts:569","pc":[1957,1958,1959]},{"teal":2267,"source":"contracts/stakingPool.algo.ts:569","pc":[1960]},{"teal":2268,"source":"contracts/stakingPool.algo.ts:569","pc":[1961]},{"teal":2269,"source":"contracts/stakingPool.algo.ts:569","pc":[1962,1963]},{"teal":2272,"source":"contracts/stakingPool.algo.ts:567","pc":[1964]},{"teal":2273,"source":"contracts/stakingPool.algo.ts:567","pc":[1965,1966]},{"teal":2276,"source":"contracts/stakingPool.algo.ts:567","pc":[1967]},{"teal":2277,"source":"contracts/stakingPool.algo.ts:567","pc":[1968,1969]},{"teal":2278,"source":"contracts/stakingPool.algo.ts:567","pc":[1970]},{"teal":2279,"source":"contracts/stakingPool.algo.ts:567","pc":[1971]},{"teal":2280,"source":"contracts/stakingPool.algo.ts:567","pc":[1972,1973]},{"teal":2281,"source":"contracts/stakingPool.algo.ts:567","pc":[1974,1975,1976]},{"teal":2282,"source":"contracts/stakingPool.algo.ts:567","pc":[1977,1978]},{"teal":2292,"source":"contracts/stakingPool.algo.ts:576","pc":[1979]},{"teal":2293,"source":"contracts/stakingPool.algo.ts:576","pc":[1980]},{"teal":2294,"source":"contracts/stakingPool.algo.ts:576","pc":[1981,1982]},{"teal":2295,"source":"contracts/stakingPool.algo.ts:576","pc":[1983,1984,1985,1986,1987,1988]},{"teal":2296,"source":"contracts/stakingPool.algo.ts:576","pc":[1989,1990]},{"teal":2300,"source":"contracts/stakingPool.algo.ts:577","pc":[1991]},{"teal":2301,"source":"contracts/stakingPool.algo.ts:577","pc":[1992]},{"teal":2302,"source":"contracts/stakingPool.algo.ts:577","pc":[1993,1994]},{"teal":2306,"source":"contracts/stakingPool.algo.ts:578","pc":[1995]},{"teal":2307,"source":"contracts/stakingPool.algo.ts:578","pc":[1996]},{"teal":2308,"source":"contracts/stakingPool.algo.ts:578","pc":[1997]},{"teal":2309,"source":"contracts/stakingPool.algo.ts:578","pc":[1998,1999]},{"teal":2312,"source":"contracts/stakingPool.algo.ts:576","pc":[2000]},{"teal":2313,"source":"contracts/stakingPool.algo.ts:576","pc":[2001,2002]},{"teal":2316,"source":"contracts/stakingPool.algo.ts:576","pc":[2003]},{"teal":2317,"source":"contracts/stakingPool.algo.ts:576","pc":[2004,2005]},{"teal":2318,"source":"contracts/stakingPool.algo.ts:576","pc":[2006]},{"teal":2319,"source":"contracts/stakingPool.algo.ts:576","pc":[2007]},{"teal":2320,"source":"contracts/stakingPool.algo.ts:576","pc":[2008,2009]},{"teal":2321,"source":"contracts/stakingPool.algo.ts:576","pc":[2010,2011,2012]},{"teal":2322,"source":"contracts/stakingPool.algo.ts:576","pc":[2013,2014]},{"teal":2326,"source":"contracts/stakingPool.algo.ts:580","pc":[2015,2016]},{"teal":2327,"source":"contracts/stakingPool.algo.ts:580","pc":[2017,2018,2019]},{"teal":2328,"source":"contracts/stakingPool.algo.ts:580","pc":[2020]},{"teal":2329,"source":"contracts/stakingPool.algo.ts:580","pc":[2021,2022]},{"teal":2333,"source":"contracts/stakingPool.algo.ts:586","pc":[2023,2024]},{"teal":2334,"source":"contracts/stakingPool.algo.ts:586","pc":[2025,2026]},{"teal":2335,"source":"contracts/stakingPool.algo.ts:586","pc":[2027]},{"teal":2336,"source":"contracts/stakingPool.algo.ts:586","pc":[2028,2029]},{"teal":2337,"source":"contracts/stakingPool.algo.ts:586","pc":[2030]},{"teal":2338,"source":"contracts/stakingPool.algo.ts:586","pc":[2031]},{"teal":2339,"source":"contracts/stakingPool.algo.ts:586","pc":[2032,2033]},{"teal":2340,"source":"contracts/stakingPool.algo.ts:586","pc":[2034,2035]},{"teal":2341,"source":"contracts/stakingPool.algo.ts:586","pc":[2036]},{"teal":2342,"source":"contracts/stakingPool.algo.ts:586","pc":[2037]},{"teal":2343,"source":"contracts/stakingPool.algo.ts:586","pc":[2038,2039]},{"teal":2347,"source":"contracts/stakingPool.algo.ts:587","pc":[2040]},{"teal":2348,"source":"contracts/stakingPool.algo.ts:587","pc":[2041,2042]},{"teal":2352,"source":"contracts/stakingPool.algo.ts:588","pc":[2043,2044,2045]},{"teal":2353,"source":"contracts/stakingPool.algo.ts:588","pc":[2046,2047]},{"teal":2358,"source":"contracts/stakingPool.algo.ts:596","pc":[2048,2049]},{"teal":2359,"source":"contracts/stakingPool.algo.ts:596","pc":[2050,2051,2052]},{"teal":2360,"source":"contracts/stakingPool.algo.ts:596","pc":[2053]},{"teal":2361,"source":"contracts/stakingPool.algo.ts:596","pc":[2054,2055]},{"teal":2362,"source":"contracts/stakingPool.algo.ts:596","pc":[2056]},{"teal":2363,"source":"contracts/stakingPool.algo.ts:596","pc":[2057,2058,2059]},{"teal":2368,"source":"contracts/stakingPool.algo.ts:597","pc":[2060]},{"teal":2369,"source":"contracts/stakingPool.algo.ts:597","pc":[2061,2062]},{"teal":2374,"source":"contracts/stakingPool.algo.ts:603","pc":[2063]},{"teal":2375,"source":"contracts/stakingPool.algo.ts:603","pc":[2064,2065]},{"teal":2379,"source":"contracts/stakingPool.algo.ts:604","pc":[2066]},{"teal":2380,"source":"contracts/stakingPool.algo.ts:604","pc":[2067,2068]},{"teal":2384,"source":"contracts/stakingPool.algo.ts:605","pc":[2069]},{"teal":2385,"source":"contracts/stakingPool.algo.ts:605","pc":[2070,2071]},{"teal":2389,"source":"contracts/stakingPool.algo.ts:606","pc":[2072]},{"teal":2390,"source":"contracts/stakingPool.algo.ts:606","pc":[2073,2074]},{"teal":2395,"source":"contracts/stakingPool.algo.ts:607","pc":[2075,2076]},{"teal":2396,"source":"contracts/stakingPool.algo.ts:607","pc":[2077,2078,2079]},{"teal":2402,"source":"contracts/stakingPool.algo.ts:609","pc":[2080,2081]},{"teal":2403,"source":"contracts/stakingPool.algo.ts:609","pc":[2082,2083]},{"teal":2404,"source":"contracts/stakingPool.algo.ts:609","pc":[2084,2085,2086]},{"teal":2405,"source":"contracts/stakingPool.algo.ts:609","pc":[2087]},{"teal":2406,"source":"contracts/stakingPool.algo.ts:609","pc":[2088,2089]},{"teal":2407,"source":"contracts/stakingPool.algo.ts:609","pc":[2090]},{"teal":2408,"source":"contracts/stakingPool.algo.ts:609","pc":[2091,2092]},{"teal":2409,"source":"contracts/stakingPool.algo.ts:609","pc":[2093]},{"teal":2410,"source":"contracts/stakingPool.algo.ts:608","pc":[2094,2095]},{"teal":2415,"source":"contracts/stakingPool.algo.ts:613","pc":[2096,2097]},{"teal":2416,"source":"contracts/stakingPool.algo.ts:613","pc":[2098,2099]},{"teal":2417,"source":"contracts/stakingPool.algo.ts:613","pc":[2100,2101,2102]},{"teal":2418,"source":"contracts/stakingPool.algo.ts:613","pc":[2103]},{"teal":2419,"source":"contracts/stakingPool.algo.ts:613","pc":[2104]},{"teal":2420,"source":"contracts/stakingPool.algo.ts:613","pc":[2105,2106,2107]},{"teal":2425,"source":"contracts/stakingPool.algo.ts:619","pc":[2108,2109]},{"teal":2426,"source":"contracts/stakingPool.algo.ts:619","pc":[2110]},{"teal":2427,"source":"contracts/stakingPool.algo.ts:619","pc":[2111,2112]},{"teal":2428,"source":"contracts/stakingPool.algo.ts:619","pc":[2113]},{"teal":2429,"source":"contracts/stakingPool.algo.ts:619","pc":[2114]},{"teal":2430,"source":"contracts/stakingPool.algo.ts:619","pc":[2115]},{"teal":2431,"source":"contracts/stakingPool.algo.ts:619","pc":[2116,2117]},{"teal":2432,"source":"contracts/stakingPool.algo.ts:619","pc":[2118]},{"teal":2433,"source":"contracts/stakingPool.algo.ts:619","pc":[2119]},{"teal":2434,"source":"contracts/stakingPool.algo.ts:619","pc":[2120,2121]},{"teal":2435,"source":"contracts/stakingPool.algo.ts:619","pc":[2122]},{"teal":2436,"source":"contracts/stakingPool.algo.ts:619","pc":[2123]},{"teal":2437,"source":"contracts/stakingPool.algo.ts:619","pc":[2124,2125]},{"teal":2441,"source":"contracts/stakingPool.algo.ts:622","pc":[2126,2127]},{"teal":2442,"source":"contracts/stakingPool.algo.ts:622","pc":[2128,2129,2130]},{"teal":2443,"source":"contracts/stakingPool.algo.ts:622","pc":[2131]},{"teal":2444,"source":"contracts/stakingPool.algo.ts:622","pc":[2132,2133]},{"teal":2445,"source":"contracts/stakingPool.algo.ts:622","pc":[2134]},{"teal":2446,"source":"contracts/stakingPool.algo.ts:622","pc":[2135]},{"teal":2447,"source":"contracts/stakingPool.algo.ts:622","pc":[2136,2137]},{"teal":2448,"source":"contracts/stakingPool.algo.ts:622","pc":[2138]},{"teal":2449,"source":"contracts/stakingPool.algo.ts:622","pc":[2139]},{"teal":2450,"source":"contracts/stakingPool.algo.ts:622","pc":[2140]},{"teal":2451,"source":"contracts/stakingPool.algo.ts:622","pc":[2141]},{"teal":2452,"source":"contracts/stakingPool.algo.ts:622","pc":[2142]},{"teal":2455,"source":"contracts/stakingPool.algo.ts:622","errorMessage":"wideRatio failed","pc":[2143]},{"teal":2456,"source":"contracts/stakingPool.algo.ts:622","pc":[2144,2145]},{"teal":2464,"source":"contracts/stakingPool.algo.ts:625","pc":[2146,2147]},{"teal":2465,"source":"contracts/stakingPool.algo.ts:625","pc":[2148]},{"teal":2466,"source":"contracts/stakingPool.algo.ts:625","pc":[2149]},{"teal":2467,"source":"contracts/stakingPool.algo.ts:625","pc":[2150,2151,2152]},{"teal":2473,"source":"contracts/stakingPool.algo.ts:630","pc":[2153,2154]},{"teal":2474,"source":"contracts/stakingPool.algo.ts:630","pc":[2155,2156]},{"teal":2475,"source":"contracts/stakingPool.algo.ts:630","pc":[2157]},{"teal":2476,"source":"contracts/stakingPool.algo.ts:630","pc":[2158,2159,2160]},{"teal":2481,"source":"contracts/stakingPool.algo.ts:631","pc":[2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184]},{"teal":2482,"source":"contracts/stakingPool.algo.ts:631","pc":[2185]},{"teal":2486,"source":"contracts/stakingPool.algo.ts:632","pc":[2186]},{"teal":2494,"source":"contracts/stakingPool.algo.ts:636","pc":[2187,2188]},{"teal":2495,"source":"contracts/stakingPool.algo.ts:636","pc":[2189,2190,2191]},{"teal":2503,"source":"contracts/stakingPool.algo.ts:643","pc":[2192,2193]},{"teal":2504,"source":"contracts/stakingPool.algo.ts:643","pc":[2194,2195]},{"teal":2505,"source":"contracts/stakingPool.algo.ts:643","pc":[2196,2197,2198]},{"teal":2506,"source":"contracts/stakingPool.algo.ts:643","pc":[2199]},{"teal":2507,"source":"contracts/stakingPool.algo.ts:642","pc":[2200]},{"teal":2508,"source":"contracts/stakingPool.algo.ts:642","pc":[2201]},{"teal":2509,"source":"contracts/stakingPool.algo.ts:644","pc":[2202,2203]},{"teal":2510,"source":"contracts/stakingPool.algo.ts:642","pc":[2204]},{"teal":2511,"source":"contracts/stakingPool.algo.ts:642","pc":[2205]},{"teal":2512,"source":"contracts/stakingPool.algo.ts:642","pc":[2206]},{"teal":2513,"source":"contracts/stakingPool.algo.ts:642","pc":[2207]},{"teal":2514,"source":"contracts/stakingPool.algo.ts:642","pc":[2208]},{"teal":2517,"source":"contracts/stakingPool.algo.ts:642","errorMessage":"wideRatio failed","pc":[2209]},{"teal":2518,"source":"contracts/stakingPool.algo.ts:642","pc":[2210,2211]},{"teal":2522,"source":"contracts/stakingPool.algo.ts:647","pc":[2212,2213]},{"teal":2523,"source":"contracts/stakingPool.algo.ts:647","pc":[2214,2215]},{"teal":2524,"source":"contracts/stakingPool.algo.ts:647","pc":[2216]},{"teal":2525,"source":"contracts/stakingPool.algo.ts:647","pc":[2217]},{"teal":2526,"source":"contracts/stakingPool.algo.ts:647","pc":[2218,2219]},{"teal":2527,"source":"contracts/stakingPool.algo.ts:647","pc":[2220,2221,2222]},{"teal":2528,"source":"contracts/stakingPool.algo.ts:647","pc":[2223]},{"teal":2529,"source":"contracts/stakingPool.algo.ts:647","pc":[2224]},{"teal":2530,"source":"contracts/stakingPool.algo.ts:647","pc":[2225]},{"teal":2531,"source":"contracts/stakingPool.algo.ts:647","pc":[2226]},{"teal":2532,"source":"contracts/stakingPool.algo.ts:647","pc":[2227]},{"teal":2533,"source":"contracts/stakingPool.algo.ts:647","pc":[2228]},{"teal":2536,"source":"contracts/stakingPool.algo.ts:647","errorMessage":"wideRatio failed","pc":[2229]},{"teal":2537,"source":"contracts/stakingPool.algo.ts:647","pc":[2230,2231]},{"teal":2542,"source":"contracts/stakingPool.algo.ts:649","pc":[2232,2233]},{"teal":2543,"source":"contracts/stakingPool.algo.ts:649","pc":[2234,2235]},{"teal":2544,"source":"contracts/stakingPool.algo.ts:649","pc":[2236,2237]},{"teal":2545,"source":"contracts/stakingPool.algo.ts:649","pc":[2238]},{"teal":2546,"source":"contracts/stakingPool.algo.ts:649","pc":[2239]},{"teal":2547,"source":"contracts/stakingPool.algo.ts:649","pc":[2240,2241,2242]},{"teal":2552,"source":"contracts/stakingPool.algo.ts:650","pc":[2243,2244]},{"teal":2553,"source":"contracts/stakingPool.algo.ts:650","pc":[2245,2246]},{"teal":2554,"source":"contracts/stakingPool.algo.ts:650","pc":[2247]},{"teal":2555,"source":"contracts/stakingPool.algo.ts:650","pc":[2248,2249]},{"teal":2560,"source":"contracts/stakingPool.algo.ts:653","pc":[2250,2251]},{"teal":2561,"source":"contracts/stakingPool.algo.ts:653","pc":[2252,2253]},{"teal":2562,"source":"contracts/stakingPool.algo.ts:653","pc":[2254]},{"teal":2563,"source":"contracts/stakingPool.algo.ts:653","pc":[2255,2256]},{"teal":2571,"source":"contracts/stakingPool.algo.ts:654","pc":[2257]},{"teal":2572,"source":"contracts/stakingPool.algo.ts:654","pc":[2258]},{"teal":2573,"source":"contracts/stakingPool.algo.ts:654","pc":[2259,2260]},{"teal":2577,"source":"contracts/stakingPool.algo.ts:655","pc":[2261,2262]},{"teal":2578,"source":"contracts/stakingPool.algo.ts:655","pc":[2263,2264]},{"teal":2582,"source":"contracts/stakingPool.algo.ts:656","pc":[2265,2266]},{"teal":2583,"source":"contracts/stakingPool.algo.ts:656","pc":[2267]},{"teal":2584,"source":"contracts/stakingPool.algo.ts:656","pc":[2268]},{"teal":2585,"source":"contracts/stakingPool.algo.ts:656","pc":[2269,2270]},{"teal":2586,"source":"contracts/stakingPool.algo.ts:656","pc":[2271,2272]},{"teal":2590,"source":"contracts/stakingPool.algo.ts:657","pc":[2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308]},{"teal":2591,"source":"contracts/stakingPool.algo.ts:657","pc":[2309,2310]},{"teal":2594,"source":"contracts/stakingPool.algo.ts:654","pc":[2311]},{"teal":2595,"source":"contracts/stakingPool.algo.ts:654","pc":[2312,2313]},{"teal":2598,"source":"contracts/stakingPool.algo.ts:654","pc":[2314]},{"teal":2602,"source":"contracts/stakingPool.algo.ts:660","pc":[2315,2316]},{"teal":2603,"source":"contracts/stakingPool.algo.ts:660","pc":[2317,2318]},{"teal":2604,"source":"contracts/stakingPool.algo.ts:636","pc":[2319,2320,2321]},{"teal":2609,"source":"contracts/stakingPool.algo.ts:661","pc":[2322,2323]},{"teal":2610,"source":"contracts/stakingPool.algo.ts:661","pc":[2324,2325,2326]},{"teal":2611,"source":"contracts/stakingPool.algo.ts:661","pc":[2327]},{"teal":2612,"source":"contracts/stakingPool.algo.ts:661","pc":[2328]},{"teal":2613,"source":"contracts/stakingPool.algo.ts:661","pc":[2329]},{"teal":2614,"source":"contracts/stakingPool.algo.ts:661","pc":[2330,2331,2332]},{"teal":2622,"source":"contracts/stakingPool.algo.ts:665","pc":[2333,2334]},{"teal":2623,"source":"contracts/stakingPool.algo.ts:665","pc":[2335,2336]},{"teal":2624,"source":"contracts/stakingPool.algo.ts:665","pc":[2337,2338,2339]},{"teal":2625,"source":"contracts/stakingPool.algo.ts:665","pc":[2340]},{"teal":2626,"source":"contracts/stakingPool.algo.ts:664","pc":[2341]},{"teal":2627,"source":"contracts/stakingPool.algo.ts:664","pc":[2342]},{"teal":2628,"source":"contracts/stakingPool.algo.ts:666","pc":[2343,2344]},{"teal":2629,"source":"contracts/stakingPool.algo.ts:664","pc":[2345]},{"teal":2630,"source":"contracts/stakingPool.algo.ts:664","pc":[2346]},{"teal":2631,"source":"contracts/stakingPool.algo.ts:664","pc":[2347]},{"teal":2632,"source":"contracts/stakingPool.algo.ts:664","pc":[2348]},{"teal":2633,"source":"contracts/stakingPool.algo.ts:664","pc":[2349]},{"teal":2636,"source":"contracts/stakingPool.algo.ts:664","errorMessage":"wideRatio failed","pc":[2350]},{"teal":2637,"source":"contracts/stakingPool.algo.ts:664","pc":[2351,2352]},{"teal":2641,"source":"contracts/stakingPool.algo.ts:670","pc":[2353,2354]},{"teal":2642,"source":"contracts/stakingPool.algo.ts:670","pc":[2355,2356]},{"teal":2643,"source":"contracts/stakingPool.algo.ts:670","pc":[2357]},{"teal":2644,"source":"contracts/stakingPool.algo.ts:670","pc":[2358,2359]},{"teal":2649,"source":"contracts/stakingPool.algo.ts:677","pc":[2360,2361]},{"teal":2650,"source":"contracts/stakingPool.algo.ts:677","pc":[2362]},{"teal":2651,"source":"contracts/stakingPool.algo.ts:677","pc":[2363]},{"teal":2652,"source":"contracts/stakingPool.algo.ts:677","pc":[2364,2365,2366]},{"teal":2657,"source":"contracts/stakingPool.algo.ts:680","pc":[2367]},{"teal":2658,"source":"contracts/stakingPool.algo.ts:680","pc":[2368,2369]},{"teal":2664,"source":"contracts/stakingPool.algo.ts:682","pc":[2370,2371]},{"teal":2665,"source":"contracts/stakingPool.algo.ts:682","pc":[2372,2373,2374]},{"teal":2666,"source":"contracts/stakingPool.algo.ts:682","pc":[2375,2376]},{"teal":2667,"source":"contracts/stakingPool.algo.ts:682","pc":[2377,2378,2379]},{"teal":2668,"source":"contracts/stakingPool.algo.ts:682","pc":[2380]},{"teal":2669,"source":"contracts/stakingPool.algo.ts:682","pc":[2381]},{"teal":2670,"source":"contracts/stakingPool.algo.ts:682","pc":[2382,2383,2384]},{"teal":2671,"source":"contracts/stakingPool.algo.ts:683","pc":[2385,2386]},{"teal":2672,"source":"contracts/stakingPool.algo.ts:683","pc":[2387,2388,2389]},{"teal":2673,"source":"contracts/stakingPool.algo.ts:683","pc":[2390,2391]},{"teal":2674,"source":"contracts/stakingPool.algo.ts:683","pc":[2392]},{"teal":2675,"source":"contracts/stakingPool.algo.ts:683","pc":[2393,2394]},{"teal":2676,"source":"contracts/stakingPool.algo.ts:683","pc":[2395,2396,2397]},{"teal":2677,"source":"contracts/stakingPool.algo.ts:683","pc":[2398,2399]},{"teal":2678,"source":"contracts/stakingPool.algo.ts:683","pc":[2400]},{"teal":2679,"source":"contracts/stakingPool.algo.ts:683","pc":[2401]},{"teal":2680,"source":"contracts/stakingPool.algo.ts:683","pc":[2402,2403]},{"teal":2681,"source":"contracts/stakingPool.algo.ts:683","pc":[2404]},{"teal":2682,"source":"contracts/stakingPool.algo.ts:682","pc":[2405]},{"teal":2685,"source":"contracts/stakingPool.algo.ts:681","pc":[2406,2407,2408]},{"teal":2690,"source":"contracts/stakingPool.algo.ts:685","pc":[2409,2410]},{"teal":2691,"source":"contracts/stakingPool.algo.ts:685","pc":[2411,2412]},{"teal":2692,"source":"contracts/stakingPool.algo.ts:685","pc":[2413]},{"teal":2693,"source":"contracts/stakingPool.algo.ts:685","pc":[2414,2415,2416]},{"teal":2694,"source":"contracts/stakingPool.algo.ts:685","pc":[2417,2418]},{"teal":2695,"source":"contracts/stakingPool.algo.ts:685","pc":[2419,2420,2421]},{"teal":2698,"source":"contracts/stakingPool.algo.ts:685","pc":[2422,2423]},{"teal":2701,"source":"contracts/stakingPool.algo.ts:685","pc":[2424,2425]},{"teal":2709,"source":"contracts/stakingPool.algo.ts:686","pc":[2426]},{"teal":2710,"source":"contracts/stakingPool.algo.ts:686","pc":[2427]},{"teal":2711,"source":"contracts/stakingPool.algo.ts:686","pc":[2428,2429]},{"teal":2715,"source":"contracts/stakingPool.algo.ts:687","pc":[2430,2431]},{"teal":2716,"source":"contracts/stakingPool.algo.ts:687","pc":[2432,2433]},{"teal":2720,"source":"contracts/stakingPool.algo.ts:688","pc":[2434,2435]},{"teal":2721,"source":"contracts/stakingPool.algo.ts:688","pc":[2436,2437,2438]},{"teal":2722,"source":"contracts/stakingPool.algo.ts:688","pc":[2439,2440]},{"teal":2726,"source":"contracts/stakingPool.algo.ts:689","pc":[2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495]},{"teal":2727,"source":"contracts/stakingPool.algo.ts:689","pc":[2496,2497]},{"teal":2730,"source":"contracts/stakingPool.algo.ts:686","pc":[2498]},{"teal":2731,"source":"contracts/stakingPool.algo.ts:686","pc":[2499,2500]},{"teal":2734,"source":"contracts/stakingPool.algo.ts:686","pc":[2501]},{"teal":2740,"source":"contracts/stakingPool.algo.ts:692","pc":[2502,2503]},{"teal":2741,"source":"contracts/stakingPool.algo.ts:692","pc":[2504,2505]},{"teal":2742,"source":"contracts/stakingPool.algo.ts:692","pc":[2506]},{"teal":2743,"source":"contracts/stakingPool.algo.ts:692","pc":[2507]},{"teal":2744,"source":"contracts/stakingPool.algo.ts:692","pc":[2508]},{"teal":2745,"source":"contracts/stakingPool.algo.ts:692","pc":[2509,2510,2511]},{"teal":2754,"source":"contracts/stakingPool.algo.ts:693","pc":[2512]},{"teal":2755,"source":"contracts/stakingPool.algo.ts:693","pc":[2513]},{"teal":2756,"source":"contracts/stakingPool.algo.ts:693","pc":[2514,2515]},{"teal":2760,"source":"contracts/stakingPool.algo.ts:694","pc":[2516,2517]},{"teal":2761,"source":"contracts/stakingPool.algo.ts:694","pc":[2518,2519]},{"teal":2762,"source":"contracts/stakingPool.algo.ts:694","pc":[2520]},{"teal":2763,"source":"contracts/stakingPool.algo.ts:694","pc":[2521,2522]},{"teal":2767,"source":"contracts/stakingPool.algo.ts:695","pc":[2523,2524]},{"teal":2768,"source":"contracts/stakingPool.algo.ts:695","pc":[2525,2526,2527]},{"teal":2769,"source":"contracts/stakingPool.algo.ts:695","pc":[2528,2529]},{"teal":2773,"source":"contracts/stakingPool.algo.ts:696","pc":[2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547]},{"teal":2774,"source":"contracts/stakingPool.algo.ts:696","pc":[2548,2549]},{"teal":2777,"source":"contracts/stakingPool.algo.ts:693","pc":[2550]},{"teal":2778,"source":"contracts/stakingPool.algo.ts:693","pc":[2551,2552]},{"teal":2781,"source":"contracts/stakingPool.algo.ts:693","pc":[2553]},{"teal":2790,"source":"contracts/stakingPool.algo.ts:708","pc":[2554]},{"teal":2791,"source":"contracts/stakingPool.algo.ts:708","pc":[2555,2556]},{"teal":2796,"source":"contracts/stakingPool.algo.ts:732","pc":[2557,2558]},{"teal":2797,"source":"contracts/stakingPool.algo.ts:732","pc":[2559]},{"teal":2798,"source":"contracts/stakingPool.algo.ts:732","pc":[2560]},{"teal":2799,"source":"contracts/stakingPool.algo.ts:732","pc":[2561]},{"teal":2800,"source":"contracts/stakingPool.algo.ts:732","pc":[2562,2563,2564]},{"teal":2801,"source":"contracts/stakingPool.algo.ts:732","pc":[2565,2566]},{"teal":2802,"source":"contracts/stakingPool.algo.ts:732","pc":[2567]},{"teal":2803,"source":"contracts/stakingPool.algo.ts:732","pc":[2568]},{"teal":2804,"source":"contracts/stakingPool.algo.ts:732","pc":[2569]},{"teal":2807,"source":"contracts/stakingPool.algo.ts:732","pc":[2570,2571,2572]},{"teal":2812,"source":"contracts/stakingPool.algo.ts:733","pc":[2573]},{"teal":2813,"source":"contracts/stakingPool.algo.ts:733","pc":[2574,2575]},{"teal":2817,"source":"contracts/stakingPool.algo.ts:734","pc":[2576,2577]},{"teal":2818,"source":"contracts/stakingPool.algo.ts:734","pc":[2578,2579]},{"teal":2822,"source":"contracts/stakingPool.algo.ts:736","pc":[2580,2581]},{"teal":2823,"source":"contracts/stakingPool.algo.ts:736","pc":[2582,2583]},{"teal":2827,"source":"contracts/stakingPool.algo.ts:737","pc":[2584]},{"teal":2828,"source":"contracts/stakingPool.algo.ts:737","pc":[2585,2586]},{"teal":2833,"source":"contracts/stakingPool.algo.ts:737","pc":[2587,2588]},{"teal":2834,"source":"contracts/stakingPool.algo.ts:737","pc":[2589,2590]},{"teal":2835,"source":"contracts/stakingPool.algo.ts:737","pc":[2591]},{"teal":2836,"source":"contracts/stakingPool.algo.ts:737","pc":[2592,2593,2594]},{"teal":2841,"source":"contracts/stakingPool.algo.ts:738","pc":[2595,2596]},{"teal":2842,"source":"contracts/stakingPool.algo.ts:738","pc":[2597,2598]},{"teal":2843,"source":"contracts/stakingPool.algo.ts:738","pc":[2599]},{"teal":2844,"source":"contracts/stakingPool.algo.ts:738","pc":[2600,2601,2602]},{"teal":2849,"source":"contracts/stakingPool.algo.ts:739","pc":[2603]},{"teal":2850,"source":"contracts/stakingPool.algo.ts:739","pc":[2604]},{"teal":2851,"source":"contracts/stakingPool.algo.ts:739","pc":[2605,2606]},{"teal":2852,"source":"contracts/stakingPool.algo.ts:739","pc":[2607]},{"teal":2853,"source":"contracts/stakingPool.algo.ts:739","pc":[2608,2609]},{"teal":2854,"source":"contracts/stakingPool.algo.ts:739","pc":[2610,2611]},{"teal":2855,"source":"contracts/stakingPool.algo.ts:739","pc":[2612]},{"teal":2856,"source":"contracts/stakingPool.algo.ts:739","pc":[2613,2614]},{"teal":2857,"source":"contracts/stakingPool.algo.ts:739","pc":[2615,2616]},{"teal":2858,"source":"contracts/stakingPool.algo.ts:739","pc":[2617,2618]},{"teal":2859,"source":"contracts/stakingPool.algo.ts:739","pc":[2619,2620]},{"teal":2860,"source":"contracts/stakingPool.algo.ts:739","pc":[2621]},{"teal":2865,"source":"contracts/stakingPool.algo.ts:741","pc":[2622,2623]},{"teal":2866,"source":"contracts/stakingPool.algo.ts:741","pc":[2624]},{"teal":2867,"source":"contracts/stakingPool.algo.ts:741","pc":[2625]},{"teal":2868,"source":"contracts/stakingPool.algo.ts:741","pc":[2626]},{"teal":2869,"source":"contracts/stakingPool.algo.ts:741","pc":[2627]},{"teal":2870,"source":"contracts/stakingPool.algo.ts:741","pc":[2628,2629]},{"teal":2871,"source":"contracts/stakingPool.algo.ts:741","pc":[2630]},{"teal":2872,"source":"contracts/stakingPool.algo.ts:741","pc":[2631,2632]},{"teal":2877,"source":"contracts/stakingPool.algo.ts:742","pc":[2633,2634]},{"teal":2878,"source":"contracts/stakingPool.algo.ts:742","pc":[2635,2636,2637]},{"teal":2879,"source":"contracts/stakingPool.algo.ts:742","pc":[2638,2639]},{"teal":2880,"source":"contracts/stakingPool.algo.ts:742","pc":[2640]},{"teal":2881,"source":"contracts/stakingPool.algo.ts:742","pc":[2641,2642,2643]},{"teal":2887,"source":"contracts/stakingPool.algo.ts:743","pc":[2644,2645]},{"teal":2888,"source":"contracts/stakingPool.algo.ts:743","pc":[2646,2647,2648]},{"teal":2889,"source":"contracts/stakingPool.algo.ts:743","pc":[2649]},{"teal":2890,"source":"contracts/stakingPool.algo.ts:743","pc":[2650,2651]},{"teal":2891,"source":"contracts/stakingPool.algo.ts:743","pc":[2652]},{"teal":2892,"source":"contracts/stakingPool.algo.ts:743","pc":[2653,2654,2655]},{"teal":2897,"source":"contracts/stakingPool.algo.ts:746","pc":[2656,2657]},{"teal":2898,"source":"contracts/stakingPool.algo.ts:746","pc":[2658,2659]},{"teal":2899,"source":"contracts/stakingPool.algo.ts:746","pc":[2660,2661,2662]},{"teal":2900,"source":"contracts/stakingPool.algo.ts:746","pc":[2663]},{"teal":2901,"source":"contracts/stakingPool.algo.ts:746","pc":[2664]},{"teal":2902,"source":"contracts/stakingPool.algo.ts:746","pc":[2665,2666]},{"teal":2903,"source":"contracts/stakingPool.algo.ts:743","pc":[2667,2668,2669]},{"teal":2908,"source":"contracts/stakingPool.algo.ts:750","pc":[2670,2671]},{"teal":2909,"source":"contracts/stakingPool.algo.ts:750","pc":[2672,2673]},{"teal":2910,"source":"contracts/stakingPool.algo.ts:750","pc":[2674,2675,2676]},{"teal":2911,"source":"contracts/stakingPool.algo.ts:750","pc":[2677]},{"teal":2912,"source":"contracts/stakingPool.algo.ts:750","pc":[2678]},{"teal":2913,"source":"contracts/stakingPool.algo.ts:750","pc":[2679,2680]},{"teal":2918,"source":"contracts/stakingPool.algo.ts:754","pc":[2681,2682]},{"teal":2919,"source":"contracts/stakingPool.algo.ts:754","pc":[2683,2684]},{"teal":2920,"source":"contracts/stakingPool.algo.ts:754","pc":[2685]},{"teal":2921,"source":"contracts/stakingPool.algo.ts:754","pc":[2686,2687,2688]},{"teal":2926,"source":"contracts/stakingPool.algo.ts:755","pc":[2689,2690]},{"teal":2927,"source":"contracts/stakingPool.algo.ts:755","pc":[2691,2692]},{"teal":2928,"source":"contracts/stakingPool.algo.ts:755","pc":[2693,2694,2695]},{"teal":2929,"source":"contracts/stakingPool.algo.ts:755","pc":[2696]},{"teal":2930,"source":"contracts/stakingPool.algo.ts:755","pc":[2697]},{"teal":2931,"source":"contracts/stakingPool.algo.ts:755","pc":[2698,2699]},{"teal":2935,"source":"contracts/stakingPool.algo.ts:756","pc":[2700,2701]},{"teal":2936,"source":"contracts/stakingPool.algo.ts:756","pc":[2702,2703]},{"teal":2937,"source":"contracts/stakingPool.algo.ts:756","pc":[2704]},{"teal":2938,"source":"contracts/stakingPool.algo.ts:756","pc":[2705,2706]},{"teal":2939,"source":"contracts/stakingPool.algo.ts:756","pc":[2707]},{"teal":2940,"source":"contracts/stakingPool.algo.ts:756","pc":[2708,2709]},{"teal":2945,"source":"contracts/stakingPool.algo.ts:758","pc":[2710,2711]},{"teal":2946,"source":"contracts/stakingPool.algo.ts:758","pc":[2712]},{"teal":2947,"source":"contracts/stakingPool.algo.ts:758","pc":[2713]},{"teal":2948,"source":"contracts/stakingPool.algo.ts:758","pc":[2714,2715,2716]},{"teal":2956,"source":"contracts/stakingPool.algo.ts:761","pc":[2717,2718]},{"teal":2957,"source":"contracts/stakingPool.algo.ts:761","pc":[2719,2720,2721]},{"teal":2958,"source":"contracts/stakingPool.algo.ts:761","pc":[2722]},{"teal":2959,"source":"contracts/stakingPool.algo.ts:761","pc":[2723,2724]},{"teal":2960,"source":"contracts/stakingPool.algo.ts:760","pc":[2725]},{"teal":2961,"source":"contracts/stakingPool.algo.ts:761","pc":[2726,2727]},{"teal":2962,"source":"contracts/stakingPool.algo.ts:760","pc":[2728,2729]},{"teal":2963,"source":"contracts/stakingPool.algo.ts:760","pc":[2730,2731]},{"teal":2964,"source":"contracts/stakingPool.algo.ts:760","pc":[2732]},{"teal":2965,"source":"contracts/stakingPool.algo.ts:760","pc":[2733,2734]},{"teal":2966,"source":"contracts/stakingPool.algo.ts:760","pc":[2735]},{"teal":2967,"source":"contracts/stakingPool.algo.ts:760","pc":[2736,2737]},{"teal":2968,"source":"contracts/stakingPool.algo.ts:760","pc":[2738]},{"teal":2969,"source":"contracts/stakingPool.algo.ts:760","pc":[2739]},{"teal":2970,"source":"contracts/stakingPool.algo.ts:762","pc":[2740,2741]},{"teal":2971,"source":"contracts/stakingPool.algo.ts:762","pc":[2742]},{"teal":2972,"source":"contracts/stakingPool.algo.ts:762","pc":[2743,2744]},{"teal":2973,"source":"contracts/stakingPool.algo.ts:760","pc":[2745]},{"teal":2974,"source":"contracts/stakingPool.algo.ts:760","pc":[2746]},{"teal":2975,"source":"contracts/stakingPool.algo.ts:760","pc":[2747]},{"teal":2976,"source":"contracts/stakingPool.algo.ts:760","pc":[2748]},{"teal":2977,"source":"contracts/stakingPool.algo.ts:760","pc":[2749]},{"teal":2978,"source":"contracts/stakingPool.algo.ts:760","pc":[2750]},{"teal":2981,"source":"contracts/stakingPool.algo.ts:760","errorMessage":"wideRatio failed","pc":[2751]},{"teal":2982,"source":"contracts/stakingPool.algo.ts:760","pc":[2752,2753]},{"teal":2986,"source":"contracts/stakingPool.algo.ts:767","pc":[2754,2755]},{"teal":2987,"source":"contracts/stakingPool.algo.ts:767","pc":[2756,2757]},{"teal":2988,"source":"contracts/stakingPool.algo.ts:767","pc":[2758]},{"teal":2989,"source":"contracts/stakingPool.algo.ts:767","pc":[2759,2760]},{"teal":2993,"source":"contracts/stakingPool.algo.ts:768","pc":[2761,2762]},{"teal":2994,"source":"contracts/stakingPool.algo.ts:768","pc":[2763,2764]},{"teal":2995,"source":"contracts/stakingPool.algo.ts:768","pc":[2765,2766]},{"teal":2996,"source":"contracts/stakingPool.algo.ts:768","pc":[2767,2768,2769]},{"teal":2997,"source":"contracts/stakingPool.algo.ts:768","pc":[2770]},{"teal":2998,"source":"contracts/stakingPool.algo.ts:768","pc":[2771,2772]},{"teal":2999,"source":"contracts/stakingPool.algo.ts:768","pc":[2773]},{"teal":3000,"source":"contracts/stakingPool.algo.ts:768","pc":[2774]},{"teal":3001,"source":"contracts/stakingPool.algo.ts:768","pc":[2775]},{"teal":3002,"source":"contracts/stakingPool.algo.ts:768","pc":[2776,2777]},{"teal":3006,"source":"contracts/stakingPool.algo.ts:769","pc":[2778,2779]},{"teal":3007,"source":"contracts/stakingPool.algo.ts:769","pc":[2780,2781]},{"teal":3008,"source":"contracts/stakingPool.algo.ts:769","pc":[2782]},{"teal":3009,"source":"contracts/stakingPool.algo.ts:769","pc":[2783,2784]},{"teal":3017,"source":"contracts/stakingPool.algo.ts:773","pc":[2785,2786]},{"teal":3018,"source":"contracts/stakingPool.algo.ts:773","pc":[2787,2788,2789]},{"teal":3019,"source":"contracts/stakingPool.algo.ts:773","pc":[2790]},{"teal":3020,"source":"contracts/stakingPool.algo.ts:773","pc":[2791,2792]},{"teal":3021,"source":"contracts/stakingPool.algo.ts:772","pc":[2793]},{"teal":3022,"source":"contracts/stakingPool.algo.ts:773","pc":[2794,2795]},{"teal":3023,"source":"contracts/stakingPool.algo.ts:772","pc":[2796,2797]},{"teal":3024,"source":"contracts/stakingPool.algo.ts:772","pc":[2798,2799]},{"teal":3025,"source":"contracts/stakingPool.algo.ts:772","pc":[2800]},{"teal":3026,"source":"contracts/stakingPool.algo.ts:772","pc":[2801,2802]},{"teal":3027,"source":"contracts/stakingPool.algo.ts:772","pc":[2803]},{"teal":3028,"source":"contracts/stakingPool.algo.ts:772","pc":[2804,2805]},{"teal":3029,"source":"contracts/stakingPool.algo.ts:772","pc":[2806]},{"teal":3030,"source":"contracts/stakingPool.algo.ts:772","pc":[2807]},{"teal":3031,"source":"contracts/stakingPool.algo.ts:774","pc":[2808,2809]},{"teal":3032,"source":"contracts/stakingPool.algo.ts:774","pc":[2810]},{"teal":3033,"source":"contracts/stakingPool.algo.ts:774","pc":[2811,2812]},{"teal":3034,"source":"contracts/stakingPool.algo.ts:772","pc":[2813]},{"teal":3035,"source":"contracts/stakingPool.algo.ts:772","pc":[2814]},{"teal":3036,"source":"contracts/stakingPool.algo.ts:772","pc":[2815]},{"teal":3037,"source":"contracts/stakingPool.algo.ts:772","pc":[2816]},{"teal":3038,"source":"contracts/stakingPool.algo.ts:772","pc":[2817]},{"teal":3039,"source":"contracts/stakingPool.algo.ts:772","pc":[2818]},{"teal":3042,"source":"contracts/stakingPool.algo.ts:772","errorMessage":"wideRatio failed","pc":[2819]},{"teal":3043,"source":"contracts/stakingPool.algo.ts:772","pc":[2820,2821]},{"teal":3047,"source":"contracts/stakingPool.algo.ts:778","pc":[2822,2823]},{"teal":3048,"source":"contracts/stakingPool.algo.ts:778","pc":[2824,2825]},{"teal":3049,"source":"contracts/stakingPool.algo.ts:778","pc":[2826]},{"teal":3050,"source":"contracts/stakingPool.algo.ts:778","pc":[2827,2828]},{"teal":3054,"source":"contracts/stakingPool.algo.ts:781","pc":[2829,2830]},{"teal":3055,"source":"contracts/stakingPool.algo.ts:781","pc":[2831,2832]},{"teal":3056,"source":"contracts/stakingPool.algo.ts:781","pc":[2833,2834]},{"teal":3057,"source":"contracts/stakingPool.algo.ts:781","pc":[2835,2836,2837]},{"teal":3058,"source":"contracts/stakingPool.algo.ts:781","pc":[2838]},{"teal":3059,"source":"contracts/stakingPool.algo.ts:781","pc":[2839,2840]},{"teal":3060,"source":"contracts/stakingPool.algo.ts:781","pc":[2841]},{"teal":3061,"source":"contracts/stakingPool.algo.ts:781","pc":[2842]},{"teal":3062,"source":"contracts/stakingPool.algo.ts:781","pc":[2843]},{"teal":3063,"source":"contracts/stakingPool.algo.ts:781","pc":[2844,2845]},{"teal":3067,"source":"contracts/stakingPool.algo.ts:782","pc":[2846,2847]},{"teal":3068,"source":"contracts/stakingPool.algo.ts:782","pc":[2848,2849]},{"teal":3069,"source":"contracts/stakingPool.algo.ts:782","pc":[2850,2851]},{"teal":3070,"source":"contracts/stakingPool.algo.ts:782","pc":[2852,2853,2854]},{"teal":3071,"source":"contracts/stakingPool.algo.ts:782","pc":[2855]},{"teal":3072,"source":"contracts/stakingPool.algo.ts:782","pc":[2856,2857]},{"teal":3073,"source":"contracts/stakingPool.algo.ts:782","pc":[2858]},{"teal":3074,"source":"contracts/stakingPool.algo.ts:782","pc":[2859]},{"teal":3075,"source":"contracts/stakingPool.algo.ts:782","pc":[2860]},{"teal":3076,"source":"contracts/stakingPool.algo.ts:782","pc":[2861,2862]},{"teal":3080,"source":"contracts/stakingPool.algo.ts:783","pc":[2863,2864]},{"teal":3081,"source":"contracts/stakingPool.algo.ts:783","pc":[2865,2866]},{"teal":3082,"source":"contracts/stakingPool.algo.ts:783","pc":[2867]},{"teal":3083,"source":"contracts/stakingPool.algo.ts:783","pc":[2868,2869]},{"teal":3087,"source":"contracts/stakingPool.algo.ts:785","pc":[2870,2871]},{"teal":3088,"source":"contracts/stakingPool.algo.ts:785","pc":[2872]},{"teal":3089,"source":"contracts/stakingPool.algo.ts:785","pc":[2873]},{"teal":3090,"source":"contracts/stakingPool.algo.ts:785","pc":[2874,2875]},{"teal":3091,"source":"contracts/stakingPool.algo.ts:785","pc":[2876]},{"teal":3092,"source":"contracts/stakingPool.algo.ts:785","pc":[2877,2878]},{"teal":3093,"source":"contracts/stakingPool.algo.ts:785","pc":[2879]},{"teal":3104,"source":"contracts/stakingPool.algo.ts:737","pc":[2880,2881]},{"teal":3105,"source":"contracts/stakingPool.algo.ts:737","pc":[2882]},{"teal":3106,"source":"contracts/stakingPool.algo.ts:737","pc":[2883]},{"teal":3107,"source":"contracts/stakingPool.algo.ts:737","pc":[2884,2885]},{"teal":3108,"source":"contracts/stakingPool.algo.ts:737","pc":[2886,2887,2888]},{"teal":3113,"source":"contracts/stakingPool.algo.ts:793","pc":[2889,2890]},{"teal":3114,"source":"contracts/stakingPool.algo.ts:793","pc":[2891]},{"teal":3115,"source":"contracts/stakingPool.algo.ts:793","pc":[2892,2893]},{"teal":3116,"source":"contracts/stakingPool.algo.ts:793","pc":[2894]},{"teal":3117,"source":"contracts/stakingPool.algo.ts:793","pc":[2895,2896]},{"teal":3122,"source":"contracts/stakingPool.algo.ts:797","pc":[2897,2898]},{"teal":3123,"source":"contracts/stakingPool.algo.ts:797","pc":[2899]},{"teal":3124,"source":"contracts/stakingPool.algo.ts:797","pc":[2900]},{"teal":3125,"source":"contracts/stakingPool.algo.ts:797","pc":[2901,2902,2903]},{"teal":3130,"source":"contracts/stakingPool.algo.ts:799","pc":[2904]},{"teal":3131,"source":"contracts/stakingPool.algo.ts:799","pc":[2905,2906]},{"teal":3136,"source":"contracts/stakingPool.algo.ts:799","pc":[2907,2908]},{"teal":3137,"source":"contracts/stakingPool.algo.ts:799","pc":[2909,2910]},{"teal":3138,"source":"contracts/stakingPool.algo.ts:799","pc":[2911]},{"teal":3139,"source":"contracts/stakingPool.algo.ts:799","pc":[2912,2913,2914]},{"teal":3144,"source":"contracts/stakingPool.algo.ts:800","pc":[2915,2916]},{"teal":3145,"source":"contracts/stakingPool.algo.ts:800","pc":[2917,2918]},{"teal":3146,"source":"contracts/stakingPool.algo.ts:800","pc":[2919]},{"teal":3147,"source":"contracts/stakingPool.algo.ts:800","pc":[2920,2921,2922]},{"teal":3152,"source":"contracts/stakingPool.algo.ts:801","pc":[2923]},{"teal":3153,"source":"contracts/stakingPool.algo.ts:801","pc":[2924]},{"teal":3154,"source":"contracts/stakingPool.algo.ts:801","pc":[2925,2926]},{"teal":3155,"source":"contracts/stakingPool.algo.ts:801","pc":[2927]},{"teal":3156,"source":"contracts/stakingPool.algo.ts:801","pc":[2928,2929]},{"teal":3157,"source":"contracts/stakingPool.algo.ts:801","pc":[2930,2931]},{"teal":3158,"source":"contracts/stakingPool.algo.ts:801","pc":[2932]},{"teal":3159,"source":"contracts/stakingPool.algo.ts:801","pc":[2933,2934]},{"teal":3160,"source":"contracts/stakingPool.algo.ts:801","pc":[2935,2936]},{"teal":3161,"source":"contracts/stakingPool.algo.ts:801","pc":[2937,2938]},{"teal":3162,"source":"contracts/stakingPool.algo.ts:801","pc":[2939,2940]},{"teal":3163,"source":"contracts/stakingPool.algo.ts:801","pc":[2941]},{"teal":3168,"source":"contracts/stakingPool.algo.ts:803","pc":[2942,2943]},{"teal":3169,"source":"contracts/stakingPool.algo.ts:803","pc":[2944]},{"teal":3170,"source":"contracts/stakingPool.algo.ts:803","pc":[2945]},{"teal":3171,"source":"contracts/stakingPool.algo.ts:803","pc":[2946]},{"teal":3172,"source":"contracts/stakingPool.algo.ts:803","pc":[2947]},{"teal":3173,"source":"contracts/stakingPool.algo.ts:803","pc":[2948,2949]},{"teal":3174,"source":"contracts/stakingPool.algo.ts:803","pc":[2950]},{"teal":3175,"source":"contracts/stakingPool.algo.ts:803","pc":[2951,2952]},{"teal":3180,"source":"contracts/stakingPool.algo.ts:804","pc":[2953,2954]},{"teal":3181,"source":"contracts/stakingPool.algo.ts:804","pc":[2955,2956,2957]},{"teal":3182,"source":"contracts/stakingPool.algo.ts:804","pc":[2958,2959]},{"teal":3183,"source":"contracts/stakingPool.algo.ts:804","pc":[2960]},{"teal":3184,"source":"contracts/stakingPool.algo.ts:804","pc":[2961]},{"teal":3185,"source":"contracts/stakingPool.algo.ts:804","pc":[2962,2963,2964]},{"teal":3186,"source":"contracts/stakingPool.algo.ts:804","pc":[2965,2966]},{"teal":3187,"source":"contracts/stakingPool.algo.ts:804","pc":[2967,2968,2969]},{"teal":3188,"source":"contracts/stakingPool.algo.ts:804","pc":[2970]},{"teal":3189,"source":"contracts/stakingPool.algo.ts:804","pc":[2971,2972]},{"teal":3190,"source":"contracts/stakingPool.algo.ts:804","pc":[2973]},{"teal":3191,"source":"contracts/stakingPool.algo.ts:804","pc":[2974]},{"teal":3194,"source":"contracts/stakingPool.algo.ts:804","pc":[2975,2976,2977]},{"teal":3199,"source":"contracts/stakingPool.algo.ts:805","pc":[2978,2979]},{"teal":3200,"source":"contracts/stakingPool.algo.ts:805","pc":[2980,2981]},{"teal":3201,"source":"contracts/stakingPool.algo.ts:805","pc":[2982,2983,2984]},{"teal":3202,"source":"contracts/stakingPool.algo.ts:805","pc":[2985]},{"teal":3203,"source":"contracts/stakingPool.algo.ts:805","pc":[2986]},{"teal":3204,"source":"contracts/stakingPool.algo.ts:805","pc":[2987,2988]},{"teal":3209,"source":"contracts/stakingPool.algo.ts:807","pc":[2989,2990]},{"teal":3210,"source":"contracts/stakingPool.algo.ts:807","pc":[2991,2992]},{"teal":3211,"source":"contracts/stakingPool.algo.ts:807","pc":[2993]},{"teal":3212,"source":"contracts/stakingPool.algo.ts:807","pc":[2994,2995,2996]},{"teal":3218,"source":"contracts/stakingPool.algo.ts:812","pc":[2997,2998]},{"teal":3219,"source":"contracts/stakingPool.algo.ts:812","pc":[2999]},{"teal":3220,"source":"contracts/stakingPool.algo.ts:812","pc":[3000]},{"teal":3221,"source":"contracts/stakingPool.algo.ts:812","pc":[3001,3002,3003]},{"teal":3229,"source":"contracts/stakingPool.algo.ts:814","pc":[3004,3005]},{"teal":3230,"source":"contracts/stakingPool.algo.ts:814","pc":[3006,3007,3008]},{"teal":3231,"source":"contracts/stakingPool.algo.ts:814","pc":[3009]},{"teal":3232,"source":"contracts/stakingPool.algo.ts:814","pc":[3010,3011]},{"teal":3233,"source":"contracts/stakingPool.algo.ts:813","pc":[3012]},{"teal":3234,"source":"contracts/stakingPool.algo.ts:813","pc":[3013]},{"teal":3235,"source":"contracts/stakingPool.algo.ts:815","pc":[3014,3015]},{"teal":3236,"source":"contracts/stakingPool.algo.ts:813","pc":[3016]},{"teal":3237,"source":"contracts/stakingPool.algo.ts:813","pc":[3017]},{"teal":3238,"source":"contracts/stakingPool.algo.ts:813","pc":[3018]},{"teal":3239,"source":"contracts/stakingPool.algo.ts:813","pc":[3019]},{"teal":3240,"source":"contracts/stakingPool.algo.ts:813","pc":[3020]},{"teal":3243,"source":"contracts/stakingPool.algo.ts:813","errorMessage":"wideRatio failed","pc":[3021]},{"teal":3244,"source":"contracts/stakingPool.algo.ts:813","pc":[3022,3023]},{"teal":3248,"source":"contracts/stakingPool.algo.ts:818","pc":[3024,3025]},{"teal":3249,"source":"contracts/stakingPool.algo.ts:818","pc":[3026,3027]},{"teal":3250,"source":"contracts/stakingPool.algo.ts:818","pc":[3028,3029]},{"teal":3251,"source":"contracts/stakingPool.algo.ts:818","pc":[3030,3031,3032]},{"teal":3252,"source":"contracts/stakingPool.algo.ts:818","pc":[3033]},{"teal":3253,"source":"contracts/stakingPool.algo.ts:818","pc":[3034,3035]},{"teal":3254,"source":"contracts/stakingPool.algo.ts:818","pc":[3036]},{"teal":3255,"source":"contracts/stakingPool.algo.ts:818","pc":[3037]},{"teal":3256,"source":"contracts/stakingPool.algo.ts:818","pc":[3038]},{"teal":3257,"source":"contracts/stakingPool.algo.ts:818","pc":[3039,3040]},{"teal":3261,"source":"contracts/stakingPool.algo.ts:819","pc":[3041,3042]},{"teal":3262,"source":"contracts/stakingPool.algo.ts:819","pc":[3043,3044]},{"teal":3263,"source":"contracts/stakingPool.algo.ts:819","pc":[3045]},{"teal":3264,"source":"contracts/stakingPool.algo.ts:819","pc":[3046,3047]},{"teal":3270,"source":"contracts/stakingPool.algo.ts:821","pc":[3048,3049]},{"teal":3271,"source":"contracts/stakingPool.algo.ts:821","pc":[3050]},{"teal":3272,"source":"contracts/stakingPool.algo.ts:821","pc":[3051]},{"teal":3273,"source":"contracts/stakingPool.algo.ts:821","pc":[3052,3053,3054]},{"teal":3281,"source":"contracts/stakingPool.algo.ts:823","pc":[3055,3056]},{"teal":3282,"source":"contracts/stakingPool.algo.ts:823","pc":[3057,3058,3059]},{"teal":3283,"source":"contracts/stakingPool.algo.ts:823","pc":[3060]},{"teal":3284,"source":"contracts/stakingPool.algo.ts:823","pc":[3061,3062]},{"teal":3285,"source":"contracts/stakingPool.algo.ts:822","pc":[3063]},{"teal":3286,"source":"contracts/stakingPool.algo.ts:822","pc":[3064]},{"teal":3287,"source":"contracts/stakingPool.algo.ts:824","pc":[3065,3066]},{"teal":3288,"source":"contracts/stakingPool.algo.ts:822","pc":[3067]},{"teal":3289,"source":"contracts/stakingPool.algo.ts:822","pc":[3068]},{"teal":3290,"source":"contracts/stakingPool.algo.ts:822","pc":[3069]},{"teal":3291,"source":"contracts/stakingPool.algo.ts:822","pc":[3070]},{"teal":3292,"source":"contracts/stakingPool.algo.ts:822","pc":[3071]},{"teal":3295,"source":"contracts/stakingPool.algo.ts:822","errorMessage":"wideRatio failed","pc":[3072]},{"teal":3296,"source":"contracts/stakingPool.algo.ts:822","pc":[3073,3074]},{"teal":3300,"source":"contracts/stakingPool.algo.ts:828","pc":[3075,3076]},{"teal":3301,"source":"contracts/stakingPool.algo.ts:828","pc":[3077,3078]},{"teal":3302,"source":"contracts/stakingPool.algo.ts:828","pc":[3079,3080]},{"teal":3303,"source":"contracts/stakingPool.algo.ts:828","pc":[3081,3082,3083]},{"teal":3304,"source":"contracts/stakingPool.algo.ts:828","pc":[3084]},{"teal":3305,"source":"contracts/stakingPool.algo.ts:828","pc":[3085,3086]},{"teal":3306,"source":"contracts/stakingPool.algo.ts:828","pc":[3087]},{"teal":3307,"source":"contracts/stakingPool.algo.ts:828","pc":[3088]},{"teal":3308,"source":"contracts/stakingPool.algo.ts:828","pc":[3089]},{"teal":3309,"source":"contracts/stakingPool.algo.ts:828","pc":[3090,3091]},{"teal":3313,"source":"contracts/stakingPool.algo.ts:829","pc":[3092,3093]},{"teal":3314,"source":"contracts/stakingPool.algo.ts:829","pc":[3094,3095]},{"teal":3315,"source":"contracts/stakingPool.algo.ts:829","pc":[3096,3097]},{"teal":3316,"source":"contracts/stakingPool.algo.ts:829","pc":[3098,3099,3100]},{"teal":3317,"source":"contracts/stakingPool.algo.ts:829","pc":[3101]},{"teal":3318,"source":"contracts/stakingPool.algo.ts:829","pc":[3102,3103]},{"teal":3319,"source":"contracts/stakingPool.algo.ts:829","pc":[3104]},{"teal":3320,"source":"contracts/stakingPool.algo.ts:829","pc":[3105]},{"teal":3321,"source":"contracts/stakingPool.algo.ts:829","pc":[3106]},{"teal":3322,"source":"contracts/stakingPool.algo.ts:829","pc":[3107,3108]},{"teal":3326,"source":"contracts/stakingPool.algo.ts:830","pc":[3109,3110]},{"teal":3327,"source":"contracts/stakingPool.algo.ts:830","pc":[3111,3112]},{"teal":3328,"source":"contracts/stakingPool.algo.ts:830","pc":[3113]},{"teal":3329,"source":"contracts/stakingPool.algo.ts:830","pc":[3114,3115]},{"teal":3334,"source":"contracts/stakingPool.algo.ts:834","pc":[3116,3117]},{"teal":3335,"source":"contracts/stakingPool.algo.ts:834","pc":[3118]},{"teal":3336,"source":"contracts/stakingPool.algo.ts:834","pc":[3119]},{"teal":3337,"source":"contracts/stakingPool.algo.ts:834","pc":[3120,3121]},{"teal":3338,"source":"contracts/stakingPool.algo.ts:834","pc":[3122]},{"teal":3339,"source":"contracts/stakingPool.algo.ts:834","pc":[3123,3124]},{"teal":3340,"source":"contracts/stakingPool.algo.ts:834","pc":[3125]},{"teal":3349,"source":"contracts/stakingPool.algo.ts:799","pc":[3126,3127]},{"teal":3350,"source":"contracts/stakingPool.algo.ts:799","pc":[3128]},{"teal":3351,"source":"contracts/stakingPool.algo.ts:799","pc":[3129]},{"teal":3352,"source":"contracts/stakingPool.algo.ts:799","pc":[3130,3131]},{"teal":3353,"source":"contracts/stakingPool.algo.ts:799","pc":[3132,3133,3134]},{"teal":3362,"source":"contracts/stakingPool.algo.ts:844","pc":[3135,3136]},{"teal":3363,"source":"contracts/stakingPool.algo.ts:844","pc":[3137]},{"teal":3364,"source":"contracts/stakingPool.algo.ts:844","pc":[3138,3139]},{"teal":3365,"source":"contracts/stakingPool.algo.ts:844","pc":[3140]},{"teal":3366,"source":"contracts/stakingPool.algo.ts:844","pc":[3141]},{"teal":3367,"source":"contracts/stakingPool.algo.ts:844","pc":[3142,3143]},{"teal":3368,"source":"contracts/stakingPool.algo.ts:844","pc":[3144]},{"teal":3369,"source":"contracts/stakingPool.algo.ts:844","pc":[3145,3146]},{"teal":3373,"source":"contracts/stakingPool.algo.ts:845","pc":[3147,3148]},{"teal":3374,"source":"contracts/stakingPool.algo.ts:845","pc":[3149]},{"teal":3375,"source":"contracts/stakingPool.algo.ts:845","pc":[3150,3151]},{"teal":3376,"source":"contracts/stakingPool.algo.ts:845","pc":[3152]},{"teal":3377,"source":"contracts/stakingPool.algo.ts:845","pc":[3153,3154]},{"teal":3378,"source":"contracts/stakingPool.algo.ts:845","pc":[3155]},{"teal":3379,"source":"contracts/stakingPool.algo.ts:845","pc":[3156]},{"teal":3384,"source":"contracts/stakingPool.algo.ts:846","pc":[3157,3158]},{"teal":3385,"source":"contracts/stakingPool.algo.ts:846","pc":[3159]},{"teal":3386,"source":"contracts/stakingPool.algo.ts:847","pc":[3160]},{"teal":3387,"source":"contracts/stakingPool.algo.ts:847","pc":[3161,3162]},{"teal":3388,"source":"contracts/stakingPool.algo.ts:847","pc":[3163]},{"teal":3389,"source":"contracts/stakingPool.algo.ts:847","pc":[3164,3165]},{"teal":3390,"source":"contracts/stakingPool.algo.ts:847","pc":[3166]},{"teal":3391,"source":"contracts/stakingPool.algo.ts:847","pc":[3167]},{"teal":3392,"source":"contracts/stakingPool.algo.ts:847","pc":[3168]},{"teal":3393,"source":"contracts/stakingPool.algo.ts:847","pc":[3169]},{"teal":3394,"source":"contracts/stakingPool.algo.ts:847","pc":[3170]},{"teal":3395,"source":"contracts/stakingPool.algo.ts:847","pc":[3171,3172]},{"teal":3396,"source":"contracts/stakingPool.algo.ts:847","pc":[3173]},{"teal":3399,"source":"contracts/stakingPool.algo.ts:847","errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3174]},{"teal":3400,"source":"contracts/stakingPool.algo.ts:847","pc":[3175,3176]},{"teal":3401,"source":"contracts/stakingPool.algo.ts:847","pc":[3177]},{"teal":3402,"source":"contracts/stakingPool.algo.ts:847","pc":[3178]},{"teal":3403,"source":"contracts/stakingPool.algo.ts:847","pc":[3179]},{"teal":3404,"source":"contracts/stakingPool.algo.ts:847","pc":[3180]},{"teal":3405,"source":"contracts/stakingPool.algo.ts:847","pc":[3181,3182]},{"teal":3406,"source":"contracts/stakingPool.algo.ts:847","pc":[3183]},{"teal":3407,"source":"contracts/stakingPool.algo.ts:847","pc":[3184]},{"teal":3408,"source":"contracts/stakingPool.algo.ts:847","pc":[3185]},{"teal":3409,"source":"contracts/stakingPool.algo.ts:846","pc":[3186]},{"teal":3413,"source":"contracts/stakingPool.algo.ts:848","pc":[3187,3188]},{"teal":3414,"source":"contracts/stakingPool.algo.ts:848","pc":[3189]},{"teal":3415,"source":"contracts/stakingPool.algo.ts:848","pc":[3190]},{"teal":3416,"source":"contracts/stakingPool.algo.ts:848","pc":[3191,3192]},{"teal":3417,"source":"contracts/stakingPool.algo.ts:848","pc":[3193]},{"teal":3418,"source":"contracts/stakingPool.algo.ts:848","pc":[3194]},{"teal":3431,"source":"contracts/stakingPool.algo.ts:854","pc":[3195]},{"teal":3432,"source":"contracts/stakingPool.algo.ts:854","pc":[3196]},{"teal":3433,"source":"contracts/stakingPool.algo.ts:854","pc":[3197,3198]},{"teal":3434,"source":"contracts/stakingPool.algo.ts:854","pc":[3199,3200,3201,3202,3203,3204]},{"teal":3435,"source":"contracts/stakingPool.algo.ts:854","pc":[3205,3206]},{"teal":3439,"source":"contracts/stakingPool.algo.ts:855","pc":[3207]},{"teal":3440,"source":"contracts/stakingPool.algo.ts:855","pc":[3208]},{"teal":3441,"source":"contracts/stakingPool.algo.ts:855","pc":[3209,3210]},{"teal":3451,"source":"contracts/stakingPool.algo.ts:857","pc":[3211]},{"teal":3452,"source":"contracts/stakingPool.algo.ts:857","pc":[3212]},{"teal":3453,"source":"contracts/stakingPool.algo.ts:857","pc":[3213]},{"teal":3454,"source":"contracts/stakingPool.algo.ts:857","pc":[3214,3215]},{"teal":3455,"source":"contracts/stakingPool.algo.ts:857","pc":[3216]},{"teal":3456,"source":"contracts/stakingPool.algo.ts:857","pc":[3217]},{"teal":3457,"source":"contracts/stakingPool.algo.ts:857","pc":[3218]},{"teal":3458,"source":"contracts/stakingPool.algo.ts:857","pc":[3219,3220,3221]},{"teal":3459,"source":"contracts/stakingPool.algo.ts:857","pc":[3222]},{"teal":3460,"source":"contracts/stakingPool.algo.ts:857","pc":[3223]},{"teal":3461,"source":"contracts/stakingPool.algo.ts:857","pc":[3224,3225]},{"teal":3462,"source":"contracts/stakingPool.algo.ts:858","pc":[3226,3227]},{"teal":3463,"source":"contracts/stakingPool.algo.ts:858","pc":[3228]},{"teal":3464,"source":"contracts/stakingPool.algo.ts:858","pc":[3229,3230]},{"teal":3465,"source":"contracts/stakingPool.algo.ts:859","pc":[3231,3232]},{"teal":3466,"source":"contracts/stakingPool.algo.ts:859","pc":[3233]},{"teal":3467,"source":"contracts/stakingPool.algo.ts:859","pc":[3234,3235]},{"teal":3468,"source":"contracts/stakingPool.algo.ts:860","pc":[3236,3237]},{"teal":3469,"source":"contracts/stakingPool.algo.ts:860","pc":[3238]},{"teal":3470,"source":"contracts/stakingPool.algo.ts:860","pc":[3239,3240]},{"teal":3471,"source":"contracts/stakingPool.algo.ts:861","pc":[3241,3242]},{"teal":3472,"source":"contracts/stakingPool.algo.ts:861","pc":[3243]},{"teal":3473,"source":"contracts/stakingPool.algo.ts:861","pc":[3244,3245]},{"teal":3476,"source":"contracts/stakingPool.algo.ts:854","pc":[3246]},{"teal":3477,"source":"contracts/stakingPool.algo.ts:854","pc":[3247,3248]},{"teal":3480,"source":"contracts/stakingPool.algo.ts:854","pc":[3249]},{"teal":3481,"source":"contracts/stakingPool.algo.ts:512","pc":[3250]},{"teal":3486,"source":"contracts/stakingPool.algo.ts:886","pc":[3251,3252,3253]},{"teal":3487,"source":"contracts/stakingPool.algo.ts:886","pc":[3254]},{"teal":3490,"source":"contracts/stakingPool.algo.ts:885","pc":[3255,3256,3257]},{"teal":3491,"source":"contracts/stakingPool.algo.ts:885","pc":[3258]},{"teal":3494,"source":"contracts/stakingPool.algo.ts:884","pc":[3259,3260,3261]},{"teal":3495,"source":"contracts/stakingPool.algo.ts:884","pc":[3262]},{"teal":3498,"source":"contracts/stakingPool.algo.ts:883","pc":[3263,3264,3265]},{"teal":3499,"source":"contracts/stakingPool.algo.ts:883","pc":[3266,3267,3268]},{"teal":3502,"source":"contracts/stakingPool.algo.ts:882","pc":[3269,3270,3271]},{"teal":3503,"source":"contracts/stakingPool.algo.ts:882","pc":[3272,3273,3274]},{"teal":3506,"source":"contracts/stakingPool.algo.ts:881","pc":[3275,3276,3277]},{"teal":3507,"source":"contracts/stakingPool.algo.ts:881","pc":[3278,3279,3280]},{"teal":3510,"source":"contracts/stakingPool.algo.ts:880","pc":[3281,3282]},{"teal":3511,"source":"contracts/stakingPool.algo.ts:880","pc":[3283]},{"teal":3512,"source":"contracts/stakingPool.algo.ts:880","pc":[3284]},{"teal":3513,"source":"contracts/stakingPool.algo.ts:880","pc":[3285]},{"teal":3514,"source":"contracts/stakingPool.algo.ts:880","pc":[3286,3287]},{"teal":3515,"source":"contracts/stakingPool.algo.ts:880","pc":[3288]},{"teal":3516,"source":"contracts/stakingPool.algo.ts:880","pc":[3289]},{"teal":3519,"source":"contracts/stakingPool.algo.ts:880","errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3290]},{"teal":3522,"source":"contracts/stakingPool.algo.ts:879","pc":[3291,3292,3293]},{"teal":3523,"source":"contracts/stakingPool.algo.ts:879","pc":[3294]},{"teal":3524,"source":"contracts/stakingPool.algo.ts:879","pc":[3295]},{"teal":3540,"source":"contracts/stakingPool.algo.ts:879","pc":[3296,3297,3298]},{"teal":3543,"source":"contracts/stakingPool.algo.ts:879","pc":[3299]},{"teal":3547,"source":"contracts/stakingPool.algo.ts:888","pc":[3300,3301,3302]},{"teal":3550,"source":"contracts/stakingPool.algo.ts:888","errorMessage":"can only be called by owner or manager of validator","pc":[3303]},{"teal":3554,"source":"contracts/stakingPool.algo.ts:889","pc":[3304,3305,3306]},{"teal":3555,"source":"contracts/stakingPool.algo.ts:889","pc":[3307,3308]},{"teal":3560,"source":"contracts/stakingPool.algo.ts:890","pc":[3309,3310]},{"teal":3561,"source":"contracts/stakingPool.algo.ts:890","pc":[3311,3312]},{"teal":3562,"source":"contracts/stakingPool.algo.ts:890","pc":[3313,3314]},{"teal":3563,"source":"contracts/stakingPool.algo.ts:890","pc":[3315]},{"teal":3566,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3316]},{"teal":3569,"source":"contracts/stakingPool.algo.ts:890","pc":[3317,3318]},{"teal":3570,"source":"contracts/stakingPool.algo.ts:890","pc":[3319,3320]},{"teal":3571,"source":"contracts/stakingPool.algo.ts:890","pc":[3321,3322]},{"teal":3572,"source":"contracts/stakingPool.algo.ts:890","pc":[3323]},{"teal":3575,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3324]},{"teal":3587,"source":"contracts/stakingPool.algo.ts:891","pc":[3325]},{"teal":3588,"source":"contracts/stakingPool.algo.ts:891","pc":[3326,3327]},{"teal":3589,"source":"contracts/stakingPool.algo.ts:891","pc":[3328,3329]},{"teal":3593,"source":"contracts/stakingPool.algo.ts:892","pc":[3330,3331]},{"teal":3594,"source":"contracts/stakingPool.algo.ts:892","pc":[3332,3333]},{"teal":3598,"source":"contracts/stakingPool.algo.ts:893","pc":[3334,3335]},{"teal":3599,"source":"contracts/stakingPool.algo.ts:893","pc":[3336,3337]},{"teal":3603,"source":"contracts/stakingPool.algo.ts:894","pc":[3338,3339]},{"teal":3604,"source":"contracts/stakingPool.algo.ts:894","pc":[3340,3341]},{"teal":3608,"source":"contracts/stakingPool.algo.ts:895","pc":[3342,3343]},{"teal":3609,"source":"contracts/stakingPool.algo.ts:895","pc":[3344,3345]},{"teal":3613,"source":"contracts/stakingPool.algo.ts:896","pc":[3346,3347]},{"teal":3614,"source":"contracts/stakingPool.algo.ts:896","pc":[3348,3349]},{"teal":3618,"source":"contracts/stakingPool.algo.ts:897","pc":[3350,3351]},{"teal":3619,"source":"contracts/stakingPool.algo.ts:897","pc":[3352,3353]},{"teal":3623,"source":"contracts/stakingPool.algo.ts:898","pc":[3354,3355]},{"teal":3624,"source":"contracts/stakingPool.algo.ts:898","pc":[3356,3357]},{"teal":3627,"source":"contracts/stakingPool.algo.ts:891","pc":[3358]},{"teal":3628,"source":"contracts/stakingPool.algo.ts:879","pc":[3359]},{"teal":3633,"source":"contracts/stakingPool.algo.ts:907","pc":[3360,3361,3362]},{"teal":3634,"source":"contracts/stakingPool.algo.ts:907","pc":[3363]},{"teal":3635,"source":"contracts/stakingPool.algo.ts:907","pc":[3364]},{"teal":3642,"source":"contracts/stakingPool.algo.ts:907","pc":[3365,3366,3367]},{"teal":3647,"source":"contracts/stakingPool.algo.ts:910","pc":[3368,3369]},{"teal":3648,"source":"contracts/stakingPool.algo.ts:910","pc":[3370]},{"teal":3649,"source":"contracts/stakingPool.algo.ts:910","pc":[3371]},{"teal":3650,"source":"contracts/stakingPool.algo.ts:910","pc":[3372,3373]},{"teal":3651,"source":"contracts/stakingPool.algo.ts:910","pc":[3374]},{"teal":3652,"source":"contracts/stakingPool.algo.ts:910","pc":[3375]},{"teal":3653,"source":"contracts/stakingPool.algo.ts:910","pc":[3376,3377,3378]},{"teal":3658,"source":"contracts/stakingPool.algo.ts:911","pc":[3379,3380,3381]},{"teal":3661,"source":"contracts/stakingPool.algo.ts:911","errorMessage":"can only be called by owner or manager of validator","pc":[3382]},{"teal":3666,"source":"contracts/stakingPool.algo.ts:914","pc":[3383]},{"teal":3667,"source":"contracts/stakingPool.algo.ts:914","pc":[3384,3385]},{"teal":3668,"source":"contracts/stakingPool.algo.ts:914","pc":[3386,3387]},{"teal":3671,"source":"contracts/stakingPool.algo.ts:914","pc":[3388]},{"teal":3672,"source":"contracts/stakingPool.algo.ts:914","pc":[3389,3390]},{"teal":3675,"source":"contracts/stakingPool.algo.ts:914","pc":[3391]},{"teal":3676,"source":"contracts/stakingPool.algo.ts:907","pc":[3392]},{"teal":3681,"source":"contracts/stakingPool.algo.ts:920","pc":[3393,3394,3395]},{"teal":3682,"source":"contracts/stakingPool.algo.ts:920","pc":[3396,3397,3398]},{"teal":3685,"source":"contracts/stakingPool.algo.ts:920","pc":[3399,3400,3401]},{"teal":3686,"source":"contracts/stakingPool.algo.ts:920","pc":[3402]},{"teal":3689,"source":"contracts/stakingPool.algo.ts:920","pc":[3403,3404,3405]},{"teal":3690,"source":"contracts/stakingPool.algo.ts:920","pc":[3406]},{"teal":3691,"source":"contracts/stakingPool.algo.ts:920","pc":[3407]},{"teal":3695,"source":"contracts/stakingPool.algo.ts:920","pc":[3408,3409,3410]},{"teal":3699,"source":"contracts/stakingPool.algo.ts:921","pc":[3411,3412,3413]},{"teal":3702,"source":"contracts/stakingPool.algo.ts:921","errorMessage":"can only be called by owner or manager of validator","pc":[3414]},{"teal":3710,"source":"contracts/stakingPool.algo.ts:923","pc":[3415]},{"teal":3711,"source":"contracts/stakingPool.algo.ts:923","pc":[3416]},{"teal":3712,"source":"contracts/stakingPool.algo.ts:923","pc":[3417,3418]},{"teal":3716,"source":"contracts/stakingPool.algo.ts:924","pc":[3419,3420]},{"teal":3717,"source":"contracts/stakingPool.algo.ts:924","pc":[3421,3422]},{"teal":3721,"source":"contracts/stakingPool.algo.ts:925","pc":[3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439]},{"teal":3722,"source":"contracts/stakingPool.algo.ts:925","pc":[3440,3441]},{"teal":3723,"source":"contracts/stakingPool.algo.ts:925","pc":[3442,3443]},{"teal":3724,"source":"contracts/stakingPool.algo.ts:925","pc":[3444,3445]},{"teal":3725,"source":"contracts/stakingPool.algo.ts:925","pc":[3446,3447]},{"teal":3726,"source":"contracts/stakingPool.algo.ts:925","pc":[3448]},{"teal":3727,"source":"contracts/stakingPool.algo.ts:925","pc":[3449,3450]},{"teal":3728,"source":"contracts/stakingPool.algo.ts:925","pc":[3451,3452]},{"teal":3729,"source":"contracts/stakingPool.algo.ts:925","pc":[3453,3454]},{"teal":3733,"source":"contracts/stakingPool.algo.ts:926","pc":[3455,3456]},{"teal":3734,"source":"contracts/stakingPool.algo.ts:926","pc":[3457,3458]},{"teal":3737,"source":"contracts/stakingPool.algo.ts:923","pc":[3459]},{"teal":3738,"source":"contracts/stakingPool.algo.ts:923","pc":[3460,3461]},{"teal":3741,"source":"contracts/stakingPool.algo.ts:923","pc":[3462]},{"teal":3742,"source":"contracts/stakingPool.algo.ts:920","pc":[3463]},{"teal":3747,"source":"contracts/stakingPool.algo.ts:936","pc":[3464,3465]},{"teal":3750,"source":"contracts/stakingPool.algo.ts:936","pc":[3466,3467,3468]},{"teal":3751,"source":"contracts/stakingPool.algo.ts:936","pc":[3469]},{"teal":3752,"source":"contracts/stakingPool.algo.ts:936","pc":[3470]},{"teal":3753,"source":"contracts/stakingPool.algo.ts:936","pc":[3471,3472]},{"teal":3754,"source":"contracts/stakingPool.algo.ts:936","pc":[3473]},{"teal":3757,"source":"contracts/stakingPool.algo.ts:936","errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3474]},{"teal":3760,"source":"contracts/stakingPool.algo.ts:936","pc":[3475,3476,3477]},{"teal":3761,"source":"contracts/stakingPool.algo.ts:936","pc":[3478]},{"teal":3762,"source":"contracts/stakingPool.algo.ts:936","pc":[3479]},{"teal":3763,"source":"contracts/stakingPool.algo.ts:936","pc":[3480]},{"teal":3764,"source":"contracts/stakingPool.algo.ts:936","pc":[3481]},{"teal":3773,"source":"contracts/stakingPool.algo.ts:936","pc":[3482,3483,3484]},{"teal":3776,"source":"contracts/stakingPool.algo.ts:936","pc":[3485]},{"teal":3780,"source":"contracts/stakingPool.algo.ts:937","pc":[3486]},{"teal":3781,"source":"contracts/stakingPool.algo.ts:937","pc":[3487]},{"teal":3782,"source":"contracts/stakingPool.algo.ts:937","pc":[3488,3489]},{"teal":3783,"source":"contracts/stakingPool.algo.ts:937","pc":[3490,3491,3492]},{"teal":3784,"source":"contracts/stakingPool.algo.ts:937","pc":[3493]},{"teal":3785,"source":"contracts/stakingPool.algo.ts:937","pc":[3494]},{"teal":3788,"source":"contracts/stakingPool.algo.ts:937","errorMessage":"caller must be part of same validator set!","pc":[3495]},{"teal":3792,"source":"contracts/stakingPool.algo.ts:938","pc":[3496,3497]},{"teal":3793,"source":"contracts/stakingPool.algo.ts:938","pc":[3498]},{"teal":3794,"source":"contracts/stakingPool.algo.ts:938","pc":[3499]},{"teal":3795,"source":"contracts/stakingPool.algo.ts:938","pc":[3500]},{"teal":3798,"source":"contracts/stakingPool.algo.ts:938","errorMessage":"callee must be pool 1","pc":[3501]},{"teal":3802,"source":"contracts/stakingPool.algo.ts:939","pc":[3502,3503]},{"teal":3803,"source":"contracts/stakingPool.algo.ts:939","pc":[3504,3505,3506]},{"teal":3804,"source":"contracts/stakingPool.algo.ts:939","pc":[3507]},{"teal":3805,"source":"contracts/stakingPool.algo.ts:939","pc":[3508]},{"teal":3806,"source":"contracts/stakingPool.algo.ts:939","pc":[3509]},{"teal":3809,"source":"contracts/stakingPool.algo.ts:939","errorMessage":"caller must NOT be pool 1","pc":[3510]},{"teal":3816,"source":"contracts/stakingPool.algo.ts:941","pc":[3511]},{"teal":3817,"source":"contracts/stakingPool.algo.ts:941","pc":[3512]},{"teal":3818,"source":"contracts/stakingPool.algo.ts:941","pc":[3513,3514]},{"teal":3819,"source":"contracts/stakingPool.algo.ts:941","pc":[3515,3516]},{"teal":3820,"source":"contracts/stakingPool.algo.ts:941","pc":[3517,3518]},{"teal":3824,"source":"contracts/stakingPool.algo.ts:942","pc":[3519]},{"teal":3825,"source":"contracts/stakingPool.algo.ts:942","pc":[3520]},{"teal":3826,"source":"contracts/stakingPool.algo.ts:942","pc":[3521,3522]},{"teal":3830,"source":"contracts/stakingPool.algo.ts:943","pc":[3523,3524]},{"teal":3831,"source":"contracts/stakingPool.algo.ts:943","pc":[3525,3526,3527]},{"teal":3832,"source":"contracts/stakingPool.algo.ts:943","pc":[3528]},{"teal":3833,"source":"contracts/stakingPool.algo.ts:943","pc":[3529]},{"teal":3834,"source":"contracts/stakingPool.algo.ts:943","pc":[3530,3531]},{"teal":3835,"source":"contracts/stakingPool.algo.ts:943","pc":[3532,3533]},{"teal":3836,"source":"contracts/stakingPool.algo.ts:943","pc":[3534,3535,3536]},{"teal":3837,"source":"contracts/stakingPool.algo.ts:943","pc":[3537]},{"teal":3838,"source":"contracts/stakingPool.algo.ts:943","pc":[3538]},{"teal":3839,"source":"contracts/stakingPool.algo.ts:943","pc":[3539,3540]},{"teal":3842,"source":"contracts/stakingPool.algo.ts:941","pc":[3541]},{"teal":3843,"source":"contracts/stakingPool.algo.ts:941","pc":[3542,3543]},{"teal":3846,"source":"contracts/stakingPool.algo.ts:941","pc":[3544]},{"teal":3847,"source":"contracts/stakingPool.algo.ts:941","pc":[3545,3546]},{"teal":3848,"source":"contracts/stakingPool.algo.ts:941","pc":[3547]},{"teal":3849,"source":"contracts/stakingPool.algo.ts:941","pc":[3548]},{"teal":3850,"source":"contracts/stakingPool.algo.ts:941","pc":[3549,3550]},{"teal":3851,"source":"contracts/stakingPool.algo.ts:941","pc":[3551,3552,3553]},{"teal":3852,"source":"contracts/stakingPool.algo.ts:941","pc":[3554]},{"teal":3853,"source":"contracts/stakingPool.algo.ts:941","pc":[3555,3556]},{"teal":3857,"source":"contracts/stakingPool.algo.ts:945","pc":[3557,3558]},{"teal":3858,"source":"contracts/stakingPool.algo.ts:945","pc":[3559,3560]},{"teal":3859,"source":"contracts/stakingPool.algo.ts:945","pc":[3561,3562,3563]},{"teal":3860,"source":"contracts/stakingPool.algo.ts:945","pc":[3564]},{"teal":3861,"source":"contracts/stakingPool.algo.ts:945","pc":[3565]},{"teal":3862,"source":"contracts/stakingPool.algo.ts:945","pc":[3566]},{"teal":3866,"source":"contracts/stakingPool.algo.ts:946","pc":[3567,3568]},{"teal":3867,"source":"contracts/stakingPool.algo.ts:946","pc":[3569,3570]},{"teal":3868,"source":"contracts/stakingPool.algo.ts:946","pc":[3571,3572,3573]},{"teal":3869,"source":"contracts/stakingPool.algo.ts:946","pc":[3574]},{"teal":3870,"source":"contracts/stakingPool.algo.ts:946","pc":[3575,3576]},{"teal":3871,"source":"contracts/stakingPool.algo.ts:946","pc":[3577]},{"teal":3872,"source":"contracts/stakingPool.algo.ts:946","pc":[3578]},{"teal":3873,"source":"contracts/stakingPool.algo.ts:946","pc":[3579]},{"teal":3880,"source":"contracts/stakingPool.algo.ts:948","pc":[3580]},{"teal":3881,"source":"contracts/stakingPool.algo.ts:948","pc":[3581]},{"teal":3882,"source":"contracts/stakingPool.algo.ts:948","pc":[3582,3583]},{"teal":3883,"source":"contracts/stakingPool.algo.ts:948","pc":[3584,3585]},{"teal":3884,"source":"contracts/stakingPool.algo.ts:948","pc":[3586,3587]},{"teal":3888,"source":"contracts/stakingPool.algo.ts:949","pc":[3588]},{"teal":3889,"source":"contracts/stakingPool.algo.ts:949","pc":[3589]},{"teal":3890,"source":"contracts/stakingPool.algo.ts:949","pc":[3590,3591]},{"teal":3894,"source":"contracts/stakingPool.algo.ts:950","pc":[3592]},{"teal":3895,"source":"contracts/stakingPool.algo.ts:950","pc":[3593]},{"teal":3896,"source":"contracts/stakingPool.algo.ts:950","pc":[3594]},{"teal":3897,"source":"contracts/stakingPool.algo.ts:950","pc":[3595,3596]},{"teal":3900,"source":"contracts/stakingPool.algo.ts:948","pc":[3597]},{"teal":3901,"source":"contracts/stakingPool.algo.ts:948","pc":[3598,3599]},{"teal":3904,"source":"contracts/stakingPool.algo.ts:948","pc":[3600]},{"teal":3905,"source":"contracts/stakingPool.algo.ts:948","pc":[3601,3602]},{"teal":3906,"source":"contracts/stakingPool.algo.ts:948","pc":[3603]},{"teal":3907,"source":"contracts/stakingPool.algo.ts:948","pc":[3604]},{"teal":3908,"source":"contracts/stakingPool.algo.ts:948","pc":[3605,3606]},{"teal":3909,"source":"contracts/stakingPool.algo.ts:948","pc":[3607,3608,3609]},{"teal":3912,"source":"contracts/stakingPool.algo.ts:936","pc":[3610,3611]},{"teal":3913,"source":"contracts/stakingPool.algo.ts:936","pc":[3612]},{"teal":3917,"source":"contracts/stakingPool.algo.ts:954","pc":[3613,3614,3615]},{"teal":3920,"source":"contracts/stakingPool.algo.ts:954","pc":[3616]},{"teal":3927,"source":"contracts/stakingPool.algo.ts:955","pc":[3617]},{"teal":3928,"source":"contracts/stakingPool.algo.ts:955","pc":[3618]},{"teal":3929,"source":"contracts/stakingPool.algo.ts:955","pc":[3619,3620]},{"teal":3930,"source":"contracts/stakingPool.algo.ts:955","pc":[3621,3622,3623,3624,3625,3626]},{"teal":3931,"source":"contracts/stakingPool.algo.ts:955","pc":[3627,3628]},{"teal":3935,"source":"contracts/stakingPool.algo.ts:956","pc":[3629]},{"teal":3936,"source":"contracts/stakingPool.algo.ts:956","pc":[3630]},{"teal":3937,"source":"contracts/stakingPool.algo.ts:956","pc":[3631,3632]},{"teal":3941,"source":"contracts/stakingPool.algo.ts:957","pc":[3633]},{"teal":3942,"source":"contracts/stakingPool.algo.ts:957","pc":[3634]},{"teal":3943,"source":"contracts/stakingPool.algo.ts:957","pc":[3635]},{"teal":3944,"source":"contracts/stakingPool.algo.ts:957","pc":[3636,3637]},{"teal":3947,"source":"contracts/stakingPool.algo.ts:955","pc":[3638]},{"teal":3948,"source":"contracts/stakingPool.algo.ts:955","pc":[3639,3640]},{"teal":3951,"source":"contracts/stakingPool.algo.ts:955","pc":[3641]},{"teal":3952,"source":"contracts/stakingPool.algo.ts:955","pc":[3642,3643]},{"teal":3953,"source":"contracts/stakingPool.algo.ts:955","pc":[3644]},{"teal":3954,"source":"contracts/stakingPool.algo.ts:955","pc":[3645]},{"teal":3955,"source":"contracts/stakingPool.algo.ts:955","pc":[3646,3647]},{"teal":3956,"source":"contracts/stakingPool.algo.ts:955","pc":[3648,3649,3650]},{"teal":3957,"source":"contracts/stakingPool.algo.ts:955","pc":[3651,3652]},{"teal":3961,"source":"contracts/stakingPool.algo.ts:959","pc":[3653,3654]},{"teal":3962,"source":"contracts/stakingPool.algo.ts:959","pc":[3655,3656]},{"teal":3963,"source":"contracts/stakingPool.algo.ts:959","pc":[3657,3658,3659]},{"teal":3964,"source":"contracts/stakingPool.algo.ts:959","pc":[3660]},{"teal":3965,"source":"contracts/stakingPool.algo.ts:959","pc":[3661]},{"teal":3966,"source":"contracts/stakingPool.algo.ts:959","pc":[3662,3663,3664]},{"teal":3967,"source":"contracts/stakingPool.algo.ts:959","pc":[3665,3666]},{"teal":3968,"source":"contracts/stakingPool.algo.ts:959","pc":[3667,3668]},{"teal":3969,"source":"contracts/stakingPool.algo.ts:959","pc":[3669,3670,3671]},{"teal":3970,"source":"contracts/stakingPool.algo.ts:959","pc":[3672]},{"teal":3971,"source":"contracts/stakingPool.algo.ts:959","pc":[3673]},{"teal":3975,"source":"contracts/stakingPool.algo.ts:954","pc":[3674,3675]},{"teal":3976,"source":"contracts/stakingPool.algo.ts:954","pc":[3676]},{"teal":3983,"source":"contracts/stakingPool.algo.ts:966","pc":[3677,3678,3679]},{"teal":3986,"source":"contracts/stakingPool.algo.ts:966","pc":[3680]},{"teal":3990,"source":"contracts/stakingPool.algo.ts:967","pc":[3681,3682,3683]},{"teal":3991,"source":"contracts/stakingPool.algo.ts:967","pc":[3684,3685]},{"teal":3995,"source":"contracts/stakingPool.algo.ts:969","pc":[3686,3687]},{"teal":3996,"source":"contracts/stakingPool.algo.ts:969","pc":[3688,3689]},{"teal":3997,"source":"contracts/stakingPool.algo.ts:969","pc":[3690]},{"teal":3998,"source":"contracts/stakingPool.algo.ts:969","pc":[3691]},{"teal":3999,"source":"contracts/stakingPool.algo.ts:969","pc":[3692,3693]},{"teal":4000,"source":"contracts/stakingPool.algo.ts:969","pc":[3694]},{"teal":4001,"source":"contracts/stakingPool.algo.ts:969","pc":[3695]},{"teal":4002,"source":"contracts/stakingPool.algo.ts:969","pc":[3696]},{"teal":4003,"source":"contracts/stakingPool.algo.ts:969","pc":[3697]},{"teal":4004,"source":"contracts/stakingPool.algo.ts:969","pc":[3698]},{"teal":4007,"source":"contracts/stakingPool.algo.ts:969","errorMessage":"wideRatio failed","pc":[3699]},{"teal":4010,"source":"contracts/stakingPool.algo.ts:966","pc":[3700,3701]},{"teal":4011,"source":"contracts/stakingPool.algo.ts:966","pc":[3702]},{"teal":4015,"source":"contracts/stakingPool.algo.ts:972","pc":[3703,3704,3705]},{"teal":4020,"source":"contracts/stakingPool.algo.ts:974","pc":[3706,3707]},{"teal":4021,"source":"contracts/stakingPool.algo.ts:974","pc":[3708,3709]},{"teal":4022,"source":"contracts/stakingPool.algo.ts:974","pc":[3710]},{"teal":4023,"source":"contracts/stakingPool.algo.ts:974","pc":[3711]},{"teal":4024,"source":"contracts/stakingPool.algo.ts:974","pc":[3712,3713,3714]},{"teal":4029,"source":"contracts/stakingPool.algo.ts:975","pc":[3715,3716]},{"teal":4030,"source":"contracts/stakingPool.algo.ts:975","pc":[3717]},{"teal":4035,"source":"contracts/stakingPool.algo.ts:977","pc":[3718]},{"teal":4036,"source":"contracts/stakingPool.algo.ts:972","pc":[3719]},{"teal":4040,"source":"contracts/stakingPool.algo.ts:980","pc":[3720,3721,3722]},{"teal":4044,"source":"contracts/stakingPool.algo.ts:981","pc":[3723]},{"teal":4045,"source":"contracts/stakingPool.algo.ts:980","pc":[3724]},{"teal":4051,"source":"contracts/stakingPool.algo.ts:987","pc":[3725,3726,3727]},{"teal":4054,"source":"contracts/stakingPool.algo.ts:987","pc":[3728]},{"teal":4055,"source":"contracts/stakingPool.algo.ts:987","pc":[3729,3730]},{"teal":4059,"source":"contracts/stakingPool.algo.ts:988","pc":[3731,3732]},{"teal":4060,"source":"contracts/stakingPool.algo.ts:988","pc":[3733]},{"teal":4061,"source":"contracts/stakingPool.algo.ts:988","pc":[3734]},{"teal":4062,"source":"contracts/stakingPool.algo.ts:988","pc":[3735,3736]},{"teal":4067,"source":"contracts/stakingPool.algo.ts:989","pc":[3737,3738]},{"teal":4068,"source":"contracts/stakingPool.algo.ts:989","pc":[3739,3740]},{"teal":4069,"source":"contracts/stakingPool.algo.ts:989","pc":[3741]},{"teal":4070,"source":"contracts/stakingPool.algo.ts:989","pc":[3742,3743]},{"teal":4071,"source":"contracts/stakingPool.algo.ts:989","pc":[3744]},{"teal":4072,"source":"contracts/stakingPool.algo.ts:989","pc":[3745]},{"teal":4073,"source":"contracts/stakingPool.algo.ts:989","pc":[3746]},{"teal":4074,"source":"contracts/stakingPool.algo.ts:989","pc":[3747]},{"teal":4077,"source":"contracts/stakingPool.algo.ts:989","errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[3748]},{"teal":4078,"source":"contracts/stakingPool.algo.ts:989","pc":[3749,3750,3751,3752,3753,3754,3755,3756,3757,3758]},{"teal":4079,"source":"contracts/stakingPool.algo.ts:989","pc":[3759]},{"teal":4080,"source":"contracts/stakingPool.algo.ts:989","pc":[3760]},{"teal":4081,"source":"contracts/stakingPool.algo.ts:989","pc":[3761]},{"teal":4082,"source":"contracts/stakingPool.algo.ts:989","pc":[3762]},{"teal":4083,"source":"contracts/stakingPool.algo.ts:989","pc":[3763,3764]},{"teal":4084,"source":"contracts/stakingPool.algo.ts:989","pc":[3765]},{"teal":4085,"source":"contracts/stakingPool.algo.ts:989","pc":[3766]},{"teal":4086,"source":"contracts/stakingPool.algo.ts:989","pc":[3767]},{"teal":4087,"source":"contracts/stakingPool.algo.ts:989","pc":[3768]},{"teal":4088,"source":"contracts/stakingPool.algo.ts:989","pc":[3769]},{"teal":4089,"source":"contracts/stakingPool.algo.ts:989","pc":[3770]},{"teal":4090,"source":"contracts/stakingPool.algo.ts:989","pc":[3771,3772,3773]},{"teal":4096,"source":"contracts/stakingPool.algo.ts:990","pc":[3774,3775]},{"teal":4097,"source":"contracts/stakingPool.algo.ts:990","pc":[3776,3777]},{"teal":4098,"source":"contracts/stakingPool.algo.ts:990","pc":[3778]},{"teal":4099,"source":"contracts/stakingPool.algo.ts:990","pc":[3779,3780,3781]},{"teal":4104,"source":"contracts/stakingPool.algo.ts:991","pc":[3782]},{"teal":4105,"source":"contracts/stakingPool.algo.ts:991","pc":[3783]},{"teal":4106,"source":"contracts/stakingPool.algo.ts:991","pc":[3784,3785]},{"teal":4107,"source":"contracts/stakingPool.algo.ts:991","pc":[3786]},{"teal":4108,"source":"contracts/stakingPool.algo.ts:991","pc":[3787,3788]},{"teal":4109,"source":"contracts/stakingPool.algo.ts:991","pc":[3789,3790]},{"teal":4110,"source":"contracts/stakingPool.algo.ts:991","pc":[3791]},{"teal":4111,"source":"contracts/stakingPool.algo.ts:991","pc":[3792,3793]},{"teal":4112,"source":"contracts/stakingPool.algo.ts:991","pc":[3794,3795]},{"teal":4113,"source":"contracts/stakingPool.algo.ts:991","pc":[3796,3797]},{"teal":4114,"source":"contracts/stakingPool.algo.ts:991","pc":[3798,3799]},{"teal":4115,"source":"contracts/stakingPool.algo.ts:991","pc":[3800]},{"teal":4120,"source":"contracts/stakingPool.algo.ts:993","pc":[3801,3802]},{"teal":4121,"source":"contracts/stakingPool.algo.ts:993","pc":[3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820]},{"teal":4122,"source":"contracts/stakingPool.algo.ts:993","pc":[3821]},{"teal":4123,"source":"contracts/stakingPool.algo.ts:993","pc":[3822]},{"teal":4124,"source":"contracts/stakingPool.algo.ts:993","pc":[3823]},{"teal":4125,"source":"contracts/stakingPool.algo.ts:993","pc":[3824,3825]},{"teal":4126,"source":"contracts/stakingPool.algo.ts:993","pc":[3826]},{"teal":4129,"source":"contracts/stakingPool.algo.ts:993","errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[3827]},{"teal":4130,"source":"contracts/stakingPool.algo.ts:993","pc":[3828,3829]},{"teal":4131,"source":"contracts/stakingPool.algo.ts:993","pc":[3830]},{"teal":4132,"source":"contracts/stakingPool.algo.ts:993","pc":[3831]},{"teal":4133,"source":"contracts/stakingPool.algo.ts:993","pc":[3832]},{"teal":4134,"source":"contracts/stakingPool.algo.ts:993","pc":[3833]},{"teal":4135,"source":"contracts/stakingPool.algo.ts:993","pc":[3834,3835]},{"teal":4136,"source":"contracts/stakingPool.algo.ts:993","pc":[3836]},{"teal":4137,"source":"contracts/stakingPool.algo.ts:993","pc":[3837]},{"teal":4138,"source":"contracts/stakingPool.algo.ts:993","pc":[3838]},{"teal":4139,"source":"contracts/stakingPool.algo.ts:993","pc":[3839,3840]},{"teal":4143,"source":"contracts/stakingPool.algo.ts:994","pc":[3841,3842]},{"teal":4144,"source":"contracts/stakingPool.algo.ts:994","pc":[3843]},{"teal":4145,"source":"contracts/stakingPool.algo.ts:994","pc":[3844,3845]},{"teal":4146,"source":"contracts/stakingPool.algo.ts:994","pc":[3846]},{"teal":4147,"source":"contracts/stakingPool.algo.ts:994","pc":[3847]},{"teal":4148,"source":"contracts/stakingPool.algo.ts:994","pc":[3848]},{"teal":4149,"source":"contracts/stakingPool.algo.ts:994","pc":[3849,3850]},{"teal":4150,"source":"contracts/stakingPool.algo.ts:994","pc":[3851]},{"teal":4153,"source":"contracts/stakingPool.algo.ts:994","errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[3852]},{"teal":4154,"source":"contracts/stakingPool.algo.ts:994","pc":[3853,3854]},{"teal":4155,"source":"contracts/stakingPool.algo.ts:994","pc":[3855]},{"teal":4156,"source":"contracts/stakingPool.algo.ts:994","pc":[3856]},{"teal":4157,"source":"contracts/stakingPool.algo.ts:994","pc":[3857]},{"teal":4158,"source":"contracts/stakingPool.algo.ts:994","pc":[3858]},{"teal":4159,"source":"contracts/stakingPool.algo.ts:994","pc":[3859,3860]},{"teal":4160,"source":"contracts/stakingPool.algo.ts:994","pc":[3861]},{"teal":4161,"source":"contracts/stakingPool.algo.ts:994","pc":[3862]},{"teal":4162,"source":"contracts/stakingPool.algo.ts:994","pc":[3863]},{"teal":4163,"source":"contracts/stakingPool.algo.ts:994","pc":[3864,3865]},{"teal":4168,"source":"contracts/stakingPool.algo.ts:995","pc":[3866,3867]},{"teal":4169,"source":"contracts/stakingPool.algo.ts:995","pc":[3868,3869]},{"teal":4170,"source":"contracts/stakingPool.algo.ts:995","pc":[3870]},{"teal":4171,"source":"contracts/stakingPool.algo.ts:995","pc":[3871,3872,3873]},{"teal":4178,"source":"contracts/stakingPool.algo.ts:1000","pc":[3874,3875]},{"teal":4179,"source":"contracts/stakingPool.algo.ts:1000","pc":[3876]},{"teal":4180,"source":"contracts/stakingPool.algo.ts:1000","pc":[3877]},{"teal":4181,"source":"contracts/stakingPool.algo.ts:1000","pc":[3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895]},{"teal":4182,"source":"contracts/stakingPool.algo.ts:1000","pc":[3896]},{"teal":4183,"source":"contracts/stakingPool.algo.ts:1000","pc":[3897,3898]},{"teal":4184,"source":"contracts/stakingPool.algo.ts:1000","pc":[3899]},{"teal":4185,"source":"contracts/stakingPool.algo.ts:1001","pc":[3900,3901]},{"teal":4186,"source":"contracts/stakingPool.algo.ts:1001","pc":[3902,3903]},{"teal":4187,"source":"contracts/stakingPool.algo.ts:1001","pc":[3904]},{"teal":4188,"source":"contracts/stakingPool.algo.ts:1000","pc":[3905]},{"teal":4189,"source":"contracts/stakingPool.algo.ts:1000","pc":[3906]},{"teal":4190,"source":"contracts/stakingPool.algo.ts:1000","pc":[3907]},{"teal":4191,"source":"contracts/stakingPool.algo.ts:1000","pc":[3908,3909]},{"teal":4192,"source":"contracts/stakingPool.algo.ts:1000","pc":[3910]},{"teal":4195,"source":"contracts/stakingPool.algo.ts:1000","errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[3911]},{"teal":4196,"source":"contracts/stakingPool.algo.ts:1000","pc":[3912,3913]},{"teal":4197,"source":"contracts/stakingPool.algo.ts:1000","pc":[3914]},{"teal":4198,"source":"contracts/stakingPool.algo.ts:1000","pc":[3915]},{"teal":4199,"source":"contracts/stakingPool.algo.ts:1000","pc":[3916]},{"teal":4200,"source":"contracts/stakingPool.algo.ts:1000","pc":[3917]},{"teal":4201,"source":"contracts/stakingPool.algo.ts:1000","pc":[3918,3919]},{"teal":4202,"source":"contracts/stakingPool.algo.ts:1000","pc":[3920]},{"teal":4203,"source":"contracts/stakingPool.algo.ts:1000","pc":[3921]},{"teal":4204,"source":"contracts/stakingPool.algo.ts:1000","pc":[3922]},{"teal":4205,"source":"contracts/stakingPool.algo.ts:999","pc":[3923,3924]},{"teal":4209,"source":"contracts/stakingPool.algo.ts:1003","pc":[3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942]},{"teal":4210,"source":"contracts/stakingPool.algo.ts:1003","pc":[3943,3944]},{"teal":4215,"source":"contracts/stakingPool.algo.ts:1005","pc":[3945,3946]},{"teal":4216,"source":"contracts/stakingPool.algo.ts:1005","pc":[3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964]},{"teal":4217,"source":"contracts/stakingPool.algo.ts:1005","pc":[3965]},{"teal":4218,"source":"contracts/stakingPool.algo.ts:1005","pc":[3966,3967,3968]},{"teal":4223,"source":"contracts/stakingPool.algo.ts:1006","pc":[3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986]},{"teal":4224,"source":"contracts/stakingPool.algo.ts:1006","pc":[3987,3988]},{"teal":4231,"source":"contracts/stakingPool.algo.ts:1008","pc":[3989,3990]},{"teal":4232,"source":"contracts/stakingPool.algo.ts:1008","pc":[3991]},{"teal":4233,"source":"contracts/stakingPool.algo.ts:1009","pc":[3992]},{"teal":4234,"source":"contracts/stakingPool.algo.ts:1009","pc":[3993,3994]},{"teal":4235,"source":"contracts/stakingPool.algo.ts:1009","pc":[3995,3996]},{"teal":4236,"source":"contracts/stakingPool.algo.ts:1009","pc":[3997]},{"teal":4237,"source":"contracts/stakingPool.algo.ts:1009","pc":[3998]},{"teal":4238,"source":"contracts/stakingPool.algo.ts:1009","pc":[3999,4000]},{"teal":4239,"source":"contracts/stakingPool.algo.ts:1009","pc":[4001]},{"teal":4240,"source":"contracts/stakingPool.algo.ts:1010","pc":[4002,4003]},{"teal":4241,"source":"contracts/stakingPool.algo.ts:1010","pc":[4004,4005]},{"teal":4242,"source":"contracts/stakingPool.algo.ts:1010","pc":[4006]},{"teal":4243,"source":"contracts/stakingPool.algo.ts:1010","pc":[4007,4008]},{"teal":4244,"source":"contracts/stakingPool.algo.ts:1010","pc":[4009]},{"teal":4245,"source":"contracts/stakingPool.algo.ts:1009","pc":[4010]},{"teal":4246,"source":"contracts/stakingPool.algo.ts:1009","pc":[4011]},{"teal":4247,"source":"contracts/stakingPool.algo.ts:1009","pc":[4012]},{"teal":4248,"source":"contracts/stakingPool.algo.ts:1009","pc":[4013,4014]},{"teal":4249,"source":"contracts/stakingPool.algo.ts:1009","pc":[4015]},{"teal":4252,"source":"contracts/stakingPool.algo.ts:1009","errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4016]},{"teal":4253,"source":"contracts/stakingPool.algo.ts:1009","pc":[4017,4018]},{"teal":4254,"source":"contracts/stakingPool.algo.ts:1009","pc":[4019]},{"teal":4255,"source":"contracts/stakingPool.algo.ts:1009","pc":[4020]},{"teal":4256,"source":"contracts/stakingPool.algo.ts:1009","pc":[4021]},{"teal":4257,"source":"contracts/stakingPool.algo.ts:1009","pc":[4022]},{"teal":4258,"source":"contracts/stakingPool.algo.ts:1009","pc":[4023,4024]},{"teal":4259,"source":"contracts/stakingPool.algo.ts:1009","pc":[4025]},{"teal":4260,"source":"contracts/stakingPool.algo.ts:1009","pc":[4026]},{"teal":4261,"source":"contracts/stakingPool.algo.ts:1009","pc":[4027]},{"teal":4262,"source":"contracts/stakingPool.algo.ts:1008","pc":[4028]},{"teal":4267,"source":"contracts/stakingPool.algo.ts:1014","pc":[4029,4030,4031]},{"teal":4271,"source":"contracts/stakingPool.algo.ts:1015","pc":[4032,4033]},{"teal":4272,"source":"contracts/stakingPool.algo.ts:1015","pc":[4034,4035]},{"teal":4273,"source":"contracts/stakingPool.algo.ts:1015","pc":[4036]},{"teal":4274,"source":"contracts/stakingPool.algo.ts:1015","pc":[4037]},{"teal":4275,"source":"contracts/stakingPool.algo.ts:1015","pc":[4038,4039]},{"teal":4276,"source":"contracts/stakingPool.algo.ts:1015","pc":[4040]},{"teal":4277,"source":"contracts/stakingPool.algo.ts:1015","pc":[4041]},{"teal":4278,"source":"contracts/stakingPool.algo.ts:1015","pc":[4042]},{"teal":4279,"source":"contracts/stakingPool.algo.ts:1015","pc":[4043]},{"teal":4280,"source":"contracts/stakingPool.algo.ts:1015","pc":[4044]},{"teal":4281,"source":"contracts/stakingPool.algo.ts:1015","pc":[4045,4046]},{"teal":4282,"source":"contracts/stakingPool.algo.ts:1015","pc":[4047]},{"teal":4285,"source":"contracts/stakingPool.algo.ts:1015","errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4048]},{"teal":4286,"source":"contracts/stakingPool.algo.ts:1015","pc":[4049,4050]},{"teal":4287,"source":"contracts/stakingPool.algo.ts:1015","pc":[4051]},{"teal":4288,"source":"contracts/stakingPool.algo.ts:1015","pc":[4052]},{"teal":4289,"source":"contracts/stakingPool.algo.ts:1015","pc":[4053]},{"teal":4290,"source":"contracts/stakingPool.algo.ts:1015","pc":[4054]},{"teal":4291,"source":"contracts/stakingPool.algo.ts:1015","pc":[4055,4056]},{"teal":4292,"source":"contracts/stakingPool.algo.ts:1015","pc":[4057]},{"teal":4293,"source":"contracts/stakingPool.algo.ts:1015","pc":[4058]},{"teal":4294,"source":"contracts/stakingPool.algo.ts:1015","pc":[4059]},{"teal":4295,"source":"contracts/stakingPool.algo.ts:1015","pc":[4060]},{"teal":4299,"source":"contracts/stakingPool.algo.ts:1016","pc":[4061,4062]},{"teal":4300,"source":"contracts/stakingPool.algo.ts:1016","pc":[4063]},{"teal":4301,"source":"contracts/stakingPool.algo.ts:1016","pc":[4064]},{"teal":4305,"source":"contracts/stakingPool.algo.ts:1017","pc":[4065,4066]},{"teal":4306,"source":"contracts/stakingPool.algo.ts:1017","pc":[4067,4068]},{"teal":4307,"source":"contracts/stakingPool.algo.ts:1017","pc":[4069,4070]},{"teal":4308,"source":"contracts/stakingPool.algo.ts:1017","pc":[4071,4072]},{"teal":4309,"source":"contracts/stakingPool.algo.ts:1017","pc":[4073]},{"teal":4310,"source":"contracts/stakingPool.algo.ts:1017","pc":[4074]},{"teal":4311,"source":"contracts/stakingPool.algo.ts:1017","pc":[4075]},{"teal":4312,"source":"contracts/stakingPool.algo.ts:1017","pc":[4076]},{"teal":4315,"source":"contracts/stakingPool.algo.ts:987","pc":[4077]},{"teal":4319,"source":"contracts/stakingPool.algo.ts:1021","pc":[4078,4079,4080]},{"teal":4322,"source":"contracts/stakingPool.algo.ts:1021","pc":[4081]},{"teal":4327,"source":"contracts/stakingPool.algo.ts:1026","pc":[4082,4083]},{"teal":4328,"source":"contracts/stakingPool.algo.ts:1026","pc":[4084,4085]},{"teal":4329,"source":"contracts/stakingPool.algo.ts:1026","pc":[4086]},{"teal":4330,"source":"contracts/stakingPool.algo.ts:1026","pc":[4087,4088,4089]},{"teal":4335,"source":"contracts/stakingPool.algo.ts:1028","pc":[4090,4091]},{"teal":4336,"source":"contracts/stakingPool.algo.ts:1028","pc":[4092,4093]},{"teal":4337,"source":"contracts/stakingPool.algo.ts:1028","pc":[4094]},{"teal":4341,"source":"contracts/stakingPool.algo.ts:1029","pc":[4095]},{"teal":4347,"source":"contracts/stakingPool.algo.ts:1033","pc":[4096,4097]},{"teal":4348,"source":"contracts/stakingPool.algo.ts:1033","pc":[4098]},{"teal":4349,"source":"contracts/stakingPool.algo.ts:1033","pc":[4099]},{"teal":4350,"source":"contracts/stakingPool.algo.ts:1033","pc":[4100,4101]},{"teal":4351,"source":"contracts/stakingPool.algo.ts:1033","pc":[4102,4103]},{"teal":4352,"source":"contracts/stakingPool.algo.ts:1033","pc":[4104,4105]},{"teal":4353,"source":"contracts/stakingPool.algo.ts:1033","pc":[4106]},{"teal":4354,"source":"contracts/stakingPool.algo.ts:1033","pc":[4107,4108]},{"teal":4355,"source":"contracts/stakingPool.algo.ts:1033","pc":[4109]},{"teal":4356,"source":"contracts/stakingPool.algo.ts:1032","pc":[4110,4111]},{"teal":4361,"source":"contracts/stakingPool.algo.ts:1034","pc":[4112,4113]},{"teal":4362,"source":"contracts/stakingPool.algo.ts:1034","pc":[4114]},{"teal":4363,"source":"contracts/stakingPool.algo.ts:1034","pc":[4115]},{"teal":4364,"source":"contracts/stakingPool.algo.ts:1034","pc":[4116,4117,4118]},{"teal":4369,"source":"contracts/stakingPool.algo.ts:1036","pc":[4119,4120]},{"teal":4370,"source":"contracts/stakingPool.algo.ts:1036","pc":[4121,4122]},{"teal":4371,"source":"contracts/stakingPool.algo.ts:1036","pc":[4123]},{"teal":4375,"source":"contracts/stakingPool.algo.ts:1037","pc":[4124]},{"teal":4380,"source":"contracts/stakingPool.algo.ts:1042","pc":[4125,4126]},{"teal":4381,"source":"contracts/stakingPool.algo.ts:1042","pc":[4127,4128,4129,4130]},{"teal":4382,"source":"contracts/stakingPool.algo.ts:1042","pc":[4131,4132]},{"teal":4383,"source":"contracts/stakingPool.algo.ts:1042","pc":[4133]},{"teal":4384,"source":"contracts/stakingPool.algo.ts:1042","pc":[4134]},{"teal":4385,"source":"contracts/stakingPool.algo.ts:1021","pc":[4135]},{"teal":4388,"source":"contracts/stakingPool.algo.ts:37","pc":[4136,4137,4138,4139,4140,4141]},{"teal":4389,"source":"contracts/stakingPool.algo.ts:37","pc":[4142,4143,4144]},{"teal":4390,"source":"contracts/stakingPool.algo.ts:37","pc":[4145,4146,4147,4148]},{"teal":4393,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4149]},{"teal":4396,"source":"contracts/stakingPool.algo.ts:37","pc":[4150,4151,4152,4153,4154,4155]},{"teal":4397,"source":"contracts/stakingPool.algo.ts:37","pc":[4156,4157,4158,4159,4160,4161]},{"teal":4398,"source":"contracts/stakingPool.algo.ts:37","pc":[4162,4163,4164,4165,4166,4167]},{"teal":4399,"source":"contracts/stakingPool.algo.ts:37","pc":[4168,4169,4170,4171,4172,4173]},{"teal":4400,"source":"contracts/stakingPool.algo.ts:37","pc":[4174,4175,4176,4177,4178,4179]},{"teal":4401,"source":"contracts/stakingPool.algo.ts:37","pc":[4180,4181,4182,4183,4184,4185]},{"teal":4402,"source":"contracts/stakingPool.algo.ts:37","pc":[4186,4187,4188,4189,4190,4191]},{"teal":4403,"source":"contracts/stakingPool.algo.ts:37","pc":[4192,4193,4194,4195,4196,4197]},{"teal":4404,"source":"contracts/stakingPool.algo.ts:37","pc":[4198,4199,4200,4201,4202,4203]},{"teal":4405,"source":"contracts/stakingPool.algo.ts:37","pc":[4204,4205,4206,4207,4208,4209]},{"teal":4406,"source":"contracts/stakingPool.algo.ts:37","pc":[4210,4211,4212,4213,4214,4215]},{"teal":4407,"source":"contracts/stakingPool.algo.ts:37","pc":[4216,4217,4218,4219,4220,4221]},{"teal":4408,"source":"contracts/stakingPool.algo.ts:37","pc":[4222,4223]},{"teal":4409,"source":"contracts/stakingPool.algo.ts:37","pc":[4224,4225,4226]},{"teal":4410,"source":"contracts/stakingPool.algo.ts:37","pc":[4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254]},{"teal":4413,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4255]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDUuNQovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"StakingPool","desc":"","methods":[{"name":"createApplication","desc":"Initialize the staking pool w/ owner and manager, but can only be created by the validator contract.","args":[{"name":"creatingContractId","type":"uint64","desc":"id of contract that constructed us - the validator application (single global instance)"},{"name":"validatorId","type":"uint64","desc":"id of validator we're a staking pool of"},{"name":"poolId","type":"uint64","desc":"which pool id are we"},{"name":"minEntryStake","type":"uint64","desc":"minimum amount to be in pool, but also minimum amount balance can't go below (without removing all!)"}],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"initStorage","desc":"Called after we're created and then funded, so we can create our large stakers ledger storage\nCaller has to get MBR amounts from ValidatorRegistry to know how much to fund us to cover the box storage cost\nIf this is pool 1 AND the validator has specified a reward token, opt-in to that token\nso that the validator can seed the pool with future rewards of that token.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new staking pools' storage"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to the given account.\nCan ONLY be called by the validator contract that created us\nMust receive payment from the validator contract for amount being staked.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"prior payment coming from validator contract to us on behalf of staker."},{"name":"staker","type":"address","desc":"The account adding new stake"}],"returns":{"type":"uint64","desc":"uint64 new 'entry round' round number of stake add"},"actions":{"create":[],"call":["NoOp"]}},{"name":"removeStake","desc":"Removes stake on behalf of caller (removing own stake). If any token rewards exist, those are always sent in\nfull. Also notifies the validator contract for this pools validator of the staker / balance changes.","args":[{"name":"staker","type":"address","desc":"account to remove. normally same as sender, but the validator owner or manager can also call\nthis to remove the specified staker explicitly. The removed stake MUST only go to the staker of course. This is\nso a validator can shut down a poool and refund the stakers. It can also be used to kick out stakers who no longer\nmeet the gating requirements (determined by the node daemon)."},{"name":"amountToUnstake","type":"uint64","desc":"The amount of stake to be removed. Specify 0 to remove all stake."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"claimTokens","desc":"Claims all the available reward tokens a staker has available, sending their entire balance to the staker from\npool 1 (either directly, or via validator-pool1 to pay it out)\nAlso notifies the validator contract for this pools validator of the staker / balance changes.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakerInfo","desc":"Retrieves the staked information for a given staker.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The address of the staker."}],"returns":{"type":"(address,uint64,uint64,uint64,uint64)","desc":"StakedInfo - The staked information for the given staker.","struct":"StakedInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"payTokenReward","desc":"[Internal protocol method] Remove a specified amount of 'community token' rewards for a staker.\nThis can ONLY be called by our validator and only if we're pool 1 - with the token.\nNote: this can also be called by validator as part of OWNER wanting to send the reward tokens\nsomewhere else (ie if they're sunsetting their validator and need the reward tokens back).\nIt's up to the validator to ensure that the balance in rewardTokenHeldBack is honored.","args":[{"name":"staker","type":"address","desc":"the staker account to send rewards to"},{"name":"rewardToken","type":"uint64","desc":"id of reward token (to avoid re-entrancy in calling validator back to get id)"},{"name":"amountToSend","type":"uint64","desc":"amount to send the staker (there is significant trust here(!) - also why only validator can call us"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"updateAlgodVer","desc":"Update the (honor system) algod version for the node associated to this pool. The node management daemon\nshould compare its current nodes version to the version stored in global state, updating when different.\nThe reti node daemon composes its own version string using format:\nmajor.minor.build branch [commit hash],\nie: 3.22.0 rel/stable [6b508975]\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"algodVer","type":"string","desc":"string representing the algorand node daemon version (reti node daemon composes its own meta version)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"epochBalanceUpdate","desc":"Updates the balance of stakers in the pool based on the received 'rewards' (current balance vs known staked balance)\nstakers outstanding balance is adjusted based on their % of stake and time in the current epoch - so that balance\ncompounds over time and staker can remove that amount at will.\nThe validator is paid their percentage each epoch payout.\n\n\nNote: ANYONE can call this.","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOnline","desc":"Registers a staking pool key online against a participation key.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[{"name":"feePayment","type":"pay","desc":"payment to cover extra fee of going online if offline - or 0 if not renewal"},{"name":"votePK","type":"byte[]","desc":"The vote public key."},{"name":"selectionPK","type":"byte[]","desc":"The selection public key."},{"name":"stateProofPK","type":"byte[]","desc":"The state proof public key."},{"name":"voteFirst","type":"uint64","desc":"The first vote index."},{"name":"voteLast","type":"uint64","desc":"The last vote index."},{"name":"voteKeyDilution","type":"uint64","desc":"The vote key dilution value."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"goOffline","desc":"Marks a staking pool key OFFLINE.\n[ ONLY OWNER OR MANAGER CAN CALL ]","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"linkToNFD","args":[{"name":"nfdAppId","type":"uint64"},{"name":"nfdName","type":"string"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"proxiedSetTokenPayoutRatio","desc":"proxiedSetTokenPayoutRatio is meant to be called by pools != 1 - calling US, pool #1\nWe need to verify that we are in fact being called by another of OUR pools (not us)\nand then we'll call the validator on their behalf to update the token payouts","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey tuple","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}}],"arcs":[4,56],"structs":{"StakedInfo":[{"name":"account","type":"address"},{"name":"balance","type":"uint64"},{"name":"totalRewarded","type":"uint64"},{"name":"rewardTokenBalance","type":"uint64"},{"name":"entryRound","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}]},"state":{"schema":{"global":{"bytes":3,"ints":11},"local":{"bytes":0,"ints":0}},"keys":{"global":{"creatingValidatorContractAppId":{"key":"Y3JlYXRvckFwcA==","keyType":"AVMBytes","valueType":"uint64"},"validatorId":{"key":"dmFsaWRhdG9ySWQ=","keyType":"AVMBytes","valueType":"uint64"},"poolId":{"key":"cG9vbElk","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"},"minEntryStake":{"key":"bWluRW50cnlTdGFrZQ==","keyType":"AVMBytes","valueType":"uint64"},"lastPayout":{"key":"bGFzdFBheW91dA==","keyType":"AVMBytes","valueType":"uint64"},"epochNumber":{"key":"ZXBvY2hOdW1iZXI=","keyType":"AVMBytes","valueType":"uint64"},"algodVer":{"key":"YWxnb2RWZXI=","keyType":"AVMBytes","valueType":"AVMBytes"},"roundsPerDay":{"key":"cm91bmRzUGVyRGF5","keyType":"AVMBytes","valueType":"uint64"},"binRoundStart":{"key":"YmluUm91bmRTdGFydA==","keyType":"AVMBytes","valueType":"uint64"},"stakeAccumulator":{"key":"c3Rha2VBY2N1bXVsYXRvcg==","keyType":"AVMBytes","valueType":"uint128"},"rewardAccumulator":{"key":"cmV3YXJkQWNjdW11bGF0b3I=","keyType":"AVMBytes","valueType":"uint64"},"weightedMovingAverage":{"key":"ZXdtYQ==","keyType":"AVMBytes","valueType":"uint128"}},"local":{},"box":{"stakers":{"key":"c3Rha2Vycw==","keyType":"AVMBytes","valueType":"(address,uint64,uint64,uint64,uint64)[200]"}}},"maps":{"global":{},"local":{},"box":{}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/stakingPool.algo.ts:37","pc":[1,2]},{"teal":16,"source":"contracts/stakingPool.algo.ts:37","pc":[3]},{"teal":17,"source":"contracts/stakingPool.algo.ts:37","pc":[4]},{"teal":18,"source":"contracts/stakingPool.algo.ts:37","pc":[5]},{"teal":19,"source":"contracts/stakingPool.algo.ts:37","pc":[6,7]},{"teal":20,"source":"contracts/stakingPool.algo.ts:37","pc":[8]},{"teal":21,"source":"contracts/stakingPool.algo.ts:37","pc":[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34]},{"teal":25,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[35]},{"teal":30,"source":"contracts/stakingPool.algo.ts:101","pc":[36,37,38]},{"teal":31,"source":"contracts/stakingPool.algo.ts:101","pc":[39]},{"teal":34,"source":"contracts/stakingPool.algo.ts:101","pc":[40,41,42]},{"teal":35,"source":"contracts/stakingPool.algo.ts:101","pc":[43]},{"teal":38,"source":"contracts/stakingPool.algo.ts:101","pc":[44,45,46]},{"teal":39,"source":"contracts/stakingPool.algo.ts:101","pc":[47]},{"teal":42,"source":"contracts/stakingPool.algo.ts:101","pc":[48,49,50]},{"teal":43,"source":"contracts/stakingPool.algo.ts:101","pc":[51]},{"teal":46,"source":"contracts/stakingPool.algo.ts:101","pc":[52,53,54]},{"teal":47,"source":"contracts/stakingPool.algo.ts:101","pc":[55]},{"teal":48,"source":"contracts/stakingPool.algo.ts:101","pc":[56]},{"teal":58,"source":"contracts/stakingPool.algo.ts:101","pc":[57,58,59]},{"teal":63,"source":"contracts/stakingPool.algo.ts:102","pc":[60,61]},{"teal":64,"source":"contracts/stakingPool.algo.ts:102","pc":[62]},{"teal":65,"source":"contracts/stakingPool.algo.ts:102","pc":[63]},{"teal":66,"source":"contracts/stakingPool.algo.ts:102","pc":[64,65,66]},{"teal":71,"source":"contracts/stakingPool.algo.ts:104","pc":[67,68]},{"teal":72,"source":"contracts/stakingPool.algo.ts:104","pc":[69]},{"teal":73,"source":"contracts/stakingPool.algo.ts:104","pc":[70]},{"teal":74,"source":"contracts/stakingPool.algo.ts:104","pc":[71]},{"teal":78,"source":"contracts/stakingPool.algo.ts:105","pc":[72,73]},{"teal":79,"source":"contracts/stakingPool.algo.ts:105","pc":[74]},{"teal":80,"source":"contracts/stakingPool.algo.ts:105","pc":[75]},{"teal":81,"source":"contracts/stakingPool.algo.ts:105","pc":[76]},{"teal":82,"source":"contracts/stakingPool.algo.ts:102","pc":[77,78,79]},{"teal":87,"source":"contracts/stakingPool.algo.ts:107","pc":[80,81]},{"teal":88,"source":"contracts/stakingPool.algo.ts:107","pc":[82]},{"teal":89,"source":"contracts/stakingPool.algo.ts:107","pc":[83]},{"teal":90,"source":"contracts/stakingPool.algo.ts:107","pc":[84]},{"teal":94,"source":"contracts/stakingPool.algo.ts:108","pc":[85,86]},{"teal":95,"source":"contracts/stakingPool.algo.ts:108","pc":[87]},{"teal":96,"source":"contracts/stakingPool.algo.ts:108","pc":[88]},{"teal":97,"source":"contracts/stakingPool.algo.ts:108","pc":[89]},{"teal":102,"source":"contracts/stakingPool.algo.ts:110","pc":[90,91]},{"teal":103,"source":"contracts/stakingPool.algo.ts:110","pc":[92,93,94,95]},{"teal":104,"source":"contracts/stakingPool.algo.ts:110","pc":[96]},{"teal":107,"source":"contracts/stakingPool.algo.ts:110","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[97]},{"teal":111,"source":"contracts/stakingPool.algo.ts:111","pc":[98]},{"teal":112,"source":"contracts/stakingPool.algo.ts:111","pc":[99,100]},{"teal":113,"source":"contracts/stakingPool.algo.ts:111","pc":[101]},{"teal":117,"source":"contracts/stakingPool.algo.ts:112","pc":[102]},{"teal":118,"source":"contracts/stakingPool.algo.ts:112","pc":[103,104]},{"teal":119,"source":"contracts/stakingPool.algo.ts:112","pc":[105]},{"teal":123,"source":"contracts/stakingPool.algo.ts:113","pc":[106,107]},{"teal":124,"source":"contracts/stakingPool.algo.ts:113","pc":[108,109]},{"teal":125,"source":"contracts/stakingPool.algo.ts:113","pc":[110]},{"teal":129,"source":"contracts/stakingPool.algo.ts:114","pc":[111,112]},{"teal":130,"source":"contracts/stakingPool.algo.ts:114","pc":[113]},{"teal":131,"source":"contracts/stakingPool.algo.ts:114","pc":[114]},{"teal":135,"source":"contracts/stakingPool.algo.ts:115","pc":[115,116]},{"teal":136,"source":"contracts/stakingPool.algo.ts:115","pc":[117]},{"teal":137,"source":"contracts/stakingPool.algo.ts:115","pc":[118]},{"teal":141,"source":"contracts/stakingPool.algo.ts:116","pc":[119,120]},{"teal":142,"source":"contracts/stakingPool.algo.ts:116","pc":[121,122]},{"teal":143,"source":"contracts/stakingPool.algo.ts:116","pc":[123]},{"teal":147,"source":"contracts/stakingPool.algo.ts:117","pc":[124,125]},{"teal":148,"source":"contracts/stakingPool.algo.ts:117","pc":[126,127]},{"teal":149,"source":"contracts/stakingPool.algo.ts:117","pc":[128]},{"teal":153,"source":"contracts/stakingPool.algo.ts:118","pc":[129,130]},{"teal":154,"source":"contracts/stakingPool.algo.ts:118","pc":[131]},{"teal":155,"source":"contracts/stakingPool.algo.ts:118","pc":[132]},{"teal":159,"source":"contracts/stakingPool.algo.ts:120","pc":[133,134,135]},{"teal":163,"source":"contracts/stakingPool.algo.ts:121","pc":[136,137]},{"teal":164,"source":"contracts/stakingPool.algo.ts:121","pc":[138,139]},{"teal":165,"source":"contracts/stakingPool.algo.ts:121","pc":[140,141]},{"teal":166,"source":"contracts/stakingPool.algo.ts:121","pc":[142,143]},{"teal":167,"source":"contracts/stakingPool.algo.ts:121","pc":[144]},{"teal":168,"source":"contracts/stakingPool.algo.ts:121","pc":[145]},{"teal":169,"source":"contracts/stakingPool.algo.ts:121","pc":[146]},{"teal":170,"source":"contracts/stakingPool.algo.ts:121","pc":[147]},{"teal":174,"source":"contracts/stakingPool.algo.ts:122","pc":[148,149]},{"teal":175,"source":"contracts/stakingPool.algo.ts:122","pc":[150,151]},{"teal":176,"source":"contracts/stakingPool.algo.ts:122","pc":[152]},{"teal":180,"source":"contracts/stakingPool.algo.ts:123","pc":[153,154]},{"teal":181,"source":"contracts/stakingPool.algo.ts:123","pc":[155]},{"teal":182,"source":"contracts/stakingPool.algo.ts:123","pc":[156]},{"teal":186,"source":"contracts/stakingPool.algo.ts:124","pc":[157,158]},{"teal":187,"source":"contracts/stakingPool.algo.ts:124","pc":[159,160]},{"teal":188,"source":"contracts/stakingPool.algo.ts:124","pc":[161]},{"teal":189,"source":"contracts/stakingPool.algo.ts:101","pc":[162]},{"teal":194,"source":"contracts/stakingPool.algo.ts:130","pc":[163,164,165]},{"teal":195,"source":"contracts/stakingPool.algo.ts:130","pc":[166]},{"teal":196,"source":"contracts/stakingPool.algo.ts:130","pc":[167]},{"teal":202,"source":"contracts/stakingPool.algo.ts:130","pc":[168,169,170]},{"teal":203,"source":"contracts/stakingPool.algo.ts:130","pc":[171]},{"teal":207,"source":"contracts/stakingPool.algo.ts:132","pc":[172,173,174]},{"teal":211,"source":"contracts/stakingPool.algo.ts:136","pc":[175,176,177]},{"teal":212,"source":"contracts/stakingPool.algo.ts:136","pc":[178,179]},{"teal":213,"source":"contracts/stakingPool.algo.ts:136","pc":[180,181]},{"teal":214,"source":"contracts/stakingPool.algo.ts:136","pc":[182]},{"teal":215,"source":"contracts/stakingPool.algo.ts:136","pc":[183]},{"teal":216,"source":"contracts/stakingPool.algo.ts:132","pc":[184]},{"teal":221,"source":"contracts/stakingPool.algo.ts:146","pc":[185,186]},{"teal":222,"source":"contracts/stakingPool.algo.ts:146","pc":[187]},{"teal":223,"source":"contracts/stakingPool.algo.ts:146","pc":[188]},{"teal":224,"source":"contracts/stakingPool.algo.ts:146","pc":[189]},{"teal":225,"source":"contracts/stakingPool.algo.ts:146","pc":[190,191]},{"teal":226,"source":"contracts/stakingPool.algo.ts:146","pc":[192]},{"teal":227,"source":"contracts/stakingPool.algo.ts:146","pc":[193]},{"teal":230,"source":"contracts/stakingPool.algo.ts:146","errorMessage":"argument 0 (mbrPayment) for initStorage must be a pay transaction","pc":[194]},{"teal":233,"source":"contracts/stakingPool.algo.ts:146","pc":[195,196,197]},{"teal":234,"source":"contracts/stakingPool.algo.ts:146","pc":[198]},{"teal":235,"source":"contracts/stakingPool.algo.ts:146","pc":[199]},{"teal":245,"source":"contracts/stakingPool.algo.ts:146","pc":[200,201,202]},{"teal":248,"source":"contracts/stakingPool.algo.ts:146","pc":[203]},{"teal":249,"source":"contracts/stakingPool.algo.ts:146","pc":[204,205]},{"teal":253,"source":"contracts/stakingPool.algo.ts:147","pc":[206]},{"teal":254,"source":"contracts/stakingPool.algo.ts:147","pc":[207]},{"teal":255,"source":"contracts/stakingPool.algo.ts:147","pc":[208]},{"teal":256,"source":"contracts/stakingPool.algo.ts:147","pc":[209]},{"teal":257,"source":"contracts/stakingPool.algo.ts:147","pc":[210]},{"teal":260,"source":"contracts/stakingPool.algo.ts:147","errorMessage":"staking pool already initialized","pc":[211]},{"teal":267,"source":"contracts/stakingPool.algo.ts:150","pc":[212]},{"teal":268,"source":"contracts/stakingPool.algo.ts:150","pc":[213]},{"teal":269,"source":"contracts/stakingPool.algo.ts:150","pc":[214,215]},{"teal":270,"source":"contracts/stakingPool.algo.ts:150","pc":[216,217]},{"teal":271,"source":"contracts/stakingPool.algo.ts:150","pc":[218,219]},{"teal":275,"source":"contracts/stakingPool.algo.ts:151","pc":[220]},{"teal":276,"source":"contracts/stakingPool.algo.ts:151","pc":[221]},{"teal":277,"source":"contracts/stakingPool.algo.ts:151","pc":[222,223]},{"teal":281,"source":"contracts/stakingPool.algo.ts:152","pc":[224]},{"teal":282,"source":"contracts/stakingPool.algo.ts:152","pc":[225]},{"teal":283,"source":"contracts/stakingPool.algo.ts:152","pc":[226]},{"teal":284,"source":"contracts/stakingPool.algo.ts:152","pc":[227,228]},{"teal":287,"source":"contracts/stakingPool.algo.ts:150","pc":[229]},{"teal":288,"source":"contracts/stakingPool.algo.ts:150","pc":[230,231]},{"teal":291,"source":"contracts/stakingPool.algo.ts:150","pc":[232]},{"teal":292,"source":"contracts/stakingPool.algo.ts:150","pc":[233,234]},{"teal":293,"source":"contracts/stakingPool.algo.ts:150","pc":[235]},{"teal":294,"source":"contracts/stakingPool.algo.ts:150","pc":[236]},{"teal":295,"source":"contracts/stakingPool.algo.ts:150","pc":[237,238]},{"teal":296,"source":"contracts/stakingPool.algo.ts:150","pc":[239,240,241]},{"teal":297,"source":"contracts/stakingPool.algo.ts:150","pc":[242,243]},{"teal":301,"source":"contracts/stakingPool.algo.ts:154","pc":[244,245]},{"teal":302,"source":"contracts/stakingPool.algo.ts:154","pc":[246,247,248]},{"teal":303,"source":"contracts/stakingPool.algo.ts:154","pc":[249]},{"teal":304,"source":"contracts/stakingPool.algo.ts:154","pc":[250]},{"teal":305,"source":"contracts/stakingPool.algo.ts:154","pc":[251]},{"teal":306,"source":"contracts/stakingPool.algo.ts:154","pc":[252,253]},{"teal":310,"source":"contracts/stakingPool.algo.ts:155","pc":[254,255]},{"teal":311,"source":"contracts/stakingPool.algo.ts:155","pc":[256]},{"teal":312,"source":"contracts/stakingPool.algo.ts:155","pc":[257,258,259]},{"teal":313,"source":"contracts/stakingPool.algo.ts:155","pc":[260,261]},{"teal":314,"source":"contracts/stakingPool.algo.ts:155","pc":[262]},{"teal":315,"source":"contracts/stakingPool.algo.ts:155","pc":[263]},{"teal":316,"source":"contracts/stakingPool.algo.ts:155","pc":[264]},{"teal":317,"source":"contracts/stakingPool.algo.ts:155","pc":[265]},{"teal":320,"source":"contracts/stakingPool.algo.ts:155","pc":[266,267,268]},{"teal":321,"source":"contracts/stakingPool.algo.ts:155","pc":[269,270]},{"teal":322,"source":"contracts/stakingPool.algo.ts:155","pc":[271,272,273]},{"teal":325,"source":"contracts/stakingPool.algo.ts:155","pc":[274]},{"teal":328,"source":"contracts/stakingPool.algo.ts:155","pc":[275,276]},{"teal":335,"source":"contracts/stakingPool.algo.ts:157","pc":[277,278]},{"teal":336,"source":"contracts/stakingPool.algo.ts:158","pc":[279,280]},{"teal":337,"source":"contracts/stakingPool.algo.ts:157","pc":[281]},{"teal":338,"source":"contracts/stakingPool.algo.ts:159","pc":[282,283,284]},{"teal":339,"source":"contracts/stakingPool.algo.ts:159","pc":[285,286,287]},{"teal":340,"source":"contracts/stakingPool.algo.ts:158","pc":[288]},{"teal":341,"source":"contracts/stakingPool.algo.ts:156","pc":[289,290]},{"teal":346,"source":"contracts/stakingPool.algo.ts:162","pc":[291,292]},{"teal":347,"source":"contracts/stakingPool.algo.ts:162","pc":[293,294]},{"teal":348,"source":"contracts/stakingPool.algo.ts:162","pc":[295,296]},{"teal":349,"source":"contracts/stakingPool.algo.ts:162","pc":[297]},{"teal":352,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[298]},{"teal":355,"source":"contracts/stakingPool.algo.ts:162","pc":[299,300]},{"teal":356,"source":"contracts/stakingPool.algo.ts:162","pc":[301,302]},{"teal":357,"source":"contracts/stakingPool.algo.ts:162","pc":[303,304]},{"teal":358,"source":"contracts/stakingPool.algo.ts:162","pc":[305]},{"teal":361,"source":"contracts/stakingPool.algo.ts:162","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"PoolInitMbr\"}","pc":[306]},{"teal":365,"source":"contracts/stakingPool.algo.ts:163","pc":[307]},{"teal":366,"source":"contracts/stakingPool.algo.ts:163","pc":[308,309,310]},{"teal":367,"source":"contracts/stakingPool.algo.ts:163","pc":[311]},{"teal":368,"source":"contracts/stakingPool.algo.ts:163","pc":[312]},{"teal":373,"source":"contracts/stakingPool.algo.ts:165","pc":[313,314]},{"teal":374,"source":"contracts/stakingPool.algo.ts:165","pc":[315]},{"teal":375,"source":"contracts/stakingPool.algo.ts:165","pc":[316,317,318]},{"teal":376,"source":"contracts/stakingPool.algo.ts:165","pc":[319,320]},{"teal":377,"source":"contracts/stakingPool.algo.ts:165","pc":[321]},{"teal":378,"source":"contracts/stakingPool.algo.ts:165","pc":[322]},{"teal":379,"source":"contracts/stakingPool.algo.ts:165","pc":[323]},{"teal":380,"source":"contracts/stakingPool.algo.ts:165","pc":[324]},{"teal":383,"source":"contracts/stakingPool.algo.ts:165","pc":[325,326,327]},{"teal":392,"source":"contracts/stakingPool.algo.ts:167","pc":[328]},{"teal":393,"source":"contracts/stakingPool.algo.ts:167","pc":[329,330]},{"teal":394,"source":"contracts/stakingPool.algo.ts:167","pc":[331,332]},{"teal":398,"source":"contracts/stakingPool.algo.ts:168","pc":[333,334]},{"teal":399,"source":"contracts/stakingPool.algo.ts:168","pc":[335,336,337]},{"teal":400,"source":"contracts/stakingPool.algo.ts:168","pc":[338]},{"teal":401,"source":"contracts/stakingPool.algo.ts:168","pc":[339,340]},{"teal":405,"source":"contracts/stakingPool.algo.ts:169","pc":[341,342]},{"teal":406,"source":"contracts/stakingPool.algo.ts:169","pc":[343,344]},{"teal":410,"source":"contracts/stakingPool.algo.ts:170","pc":[345]},{"teal":411,"source":"contracts/stakingPool.algo.ts:170","pc":[346,347]},{"teal":414,"source":"contracts/stakingPool.algo.ts:167","pc":[348]},{"teal":415,"source":"contracts/stakingPool.algo.ts:167","pc":[349,350]},{"teal":418,"source":"contracts/stakingPool.algo.ts:167","pc":[351]},{"teal":421,"source":"contracts/stakingPool.algo.ts:146","pc":[352]},{"teal":426,"source":"contracts/stakingPool.algo.ts:185","pc":[353,354]},{"teal":429,"source":"contracts/stakingPool.algo.ts:185","pc":[355,356,357]},{"teal":430,"source":"contracts/stakingPool.algo.ts:185","pc":[358]},{"teal":431,"source":"contracts/stakingPool.algo.ts:185","pc":[359]},{"teal":432,"source":"contracts/stakingPool.algo.ts:185","pc":[360,361]},{"teal":433,"source":"contracts/stakingPool.algo.ts:185","pc":[362]},{"teal":436,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 0 (staker) for addStake must be a address","pc":[363]},{"teal":439,"source":"contracts/stakingPool.algo.ts:185","pc":[364,365]},{"teal":440,"source":"contracts/stakingPool.algo.ts:185","pc":[366]},{"teal":441,"source":"contracts/stakingPool.algo.ts:185","pc":[367]},{"teal":442,"source":"contracts/stakingPool.algo.ts:185","pc":[368]},{"teal":443,"source":"contracts/stakingPool.algo.ts:185","pc":[369,370]},{"teal":444,"source":"contracts/stakingPool.algo.ts:185","pc":[371]},{"teal":445,"source":"contracts/stakingPool.algo.ts:185","pc":[372]},{"teal":448,"source":"contracts/stakingPool.algo.ts:185","errorMessage":"argument 1 (stakedAmountPayment) for addStake must be a pay transaction","pc":[373]},{"teal":451,"source":"contracts/stakingPool.algo.ts:185","pc":[374,375,376]},{"teal":452,"source":"contracts/stakingPool.algo.ts:185","pc":[377]},{"teal":453,"source":"contracts/stakingPool.algo.ts:185","pc":[378]},{"teal":454,"source":"contracts/stakingPool.algo.ts:185","pc":[379]},{"teal":455,"source":"contracts/stakingPool.algo.ts:185","pc":[380]},{"teal":456,"source":"contracts/stakingPool.algo.ts:185","pc":[381]},{"teal":469,"source":"contracts/stakingPool.algo.ts:185","pc":[382,383,384]},{"teal":472,"source":"contracts/stakingPool.algo.ts:185","pc":[385]},{"teal":473,"source":"contracts/stakingPool.algo.ts:185","pc":[386,387]},{"teal":477,"source":"contracts/stakingPool.algo.ts:186","pc":[388]},{"teal":478,"source":"contracts/stakingPool.algo.ts:186","pc":[389]},{"teal":479,"source":"contracts/stakingPool.algo.ts:186","pc":[390]},{"teal":480,"source":"contracts/stakingPool.algo.ts:186","pc":[391]},{"teal":483,"source":"contracts/stakingPool.algo.ts:186","errorMessage":"staking pool must be initialized first","pc":[392]},{"teal":490,"source":"contracts/stakingPool.algo.ts:190","pc":[393,394]},{"teal":491,"source":"contracts/stakingPool.algo.ts:190","pc":[395]},{"teal":492,"source":"contracts/stakingPool.algo.ts:190","pc":[396]},{"teal":493,"source":"contracts/stakingPool.algo.ts:190","pc":[397,398]},{"teal":494,"source":"contracts/stakingPool.algo.ts:190","pc":[399]},{"teal":495,"source":"contracts/stakingPool.algo.ts:190","pc":[400]},{"teal":498,"source":"contracts/stakingPool.algo.ts:189","errorMessage":"stake can only be added via the validator contract","pc":[401]},{"teal":502,"source":"contracts/stakingPool.algo.ts:193","pc":[402,403]},{"teal":503,"source":"contracts/stakingPool.algo.ts:193","pc":[404,405]},{"teal":504,"source":"contracts/stakingPool.algo.ts:193","pc":[406]},{"teal":505,"source":"contracts/stakingPool.algo.ts:193","pc":[407]},{"teal":509,"source":"contracts/stakingPool.algo.ts:196","pc":[408,409,410]},{"teal":518,"source":"contracts/stakingPool.algo.ts:200","pc":[411,412]},{"teal":519,"source":"contracts/stakingPool.algo.ts:201","pc":[413,414]},{"teal":520,"source":"contracts/stakingPool.algo.ts:201","pc":[415]},{"teal":521,"source":"contracts/stakingPool.algo.ts:201","pc":[416]},{"teal":522,"source":"contracts/stakingPool.algo.ts:201","pc":[417,418]},{"teal":523,"source":"contracts/stakingPool.algo.ts:201","pc":[419]},{"teal":524,"source":"contracts/stakingPool.algo.ts:201","pc":[420]},{"teal":527,"source":"contracts/stakingPool.algo.ts:201","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"this.creatingValidatorContractAppId.value.address\"}","pc":[421]},{"teal":530,"source":"contracts/stakingPool.algo.ts:200","pc":[422,423]},{"teal":531,"source":"contracts/stakingPool.algo.ts:202","pc":[424,425]},{"teal":532,"source":"contracts/stakingPool.algo.ts:202","pc":[426,427]},{"teal":533,"source":"contracts/stakingPool.algo.ts:202","pc":[428]},{"teal":536,"source":"contracts/stakingPool.algo.ts:202","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[429]},{"teal":539,"source":"contracts/stakingPool.algo.ts:200","pc":[430,431]},{"teal":540,"source":"contracts/stakingPool.algo.ts:203","pc":[432,433]},{"teal":541,"source":"contracts/stakingPool.algo.ts:203","pc":[434,435]},{"teal":542,"source":"contracts/stakingPool.algo.ts:203","pc":[436,437]},{"teal":543,"source":"contracts/stakingPool.algo.ts:203","pc":[438]},{"teal":546,"source":"contracts/stakingPool.algo.ts:203","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"amount\",\"expected\":\"stakedAmountPayment.amount\"}","pc":[439]},{"teal":550,"source":"contracts/stakingPool.algo.ts:209","pc":[440,441]},{"teal":551,"source":"contracts/stakingPool.algo.ts:209","pc":[442,443,444]},{"teal":552,"source":"contracts/stakingPool.algo.ts:209","pc":[445]},{"teal":553,"source":"contracts/stakingPool.algo.ts:209","pc":[446,447]},{"teal":557,"source":"contracts/stakingPool.algo.ts:210","pc":[448]},{"teal":558,"source":"contracts/stakingPool.algo.ts:210","pc":[449,450]},{"teal":562,"source":"contracts/stakingPool.algo.ts:212","pc":[451,452]},{"teal":563,"source":"contracts/stakingPool.algo.ts:212","pc":[453]},{"teal":564,"source":"contracts/stakingPool.algo.ts:212","pc":[454,455]},{"teal":565,"source":"contracts/stakingPool.algo.ts:212","pc":[456,457]},{"teal":566,"source":"contracts/stakingPool.algo.ts:212","pc":[458]},{"teal":567,"source":"contracts/stakingPool.algo.ts:212","pc":[459,460]},{"teal":568,"source":"contracts/stakingPool.algo.ts:212","pc":[461]},{"teal":569,"source":"contracts/stakingPool.algo.ts:212","pc":[462]},{"teal":573,"source":"contracts/stakingPool.algo.ts:214","pc":[463,464]},{"teal":574,"source":"contracts/stakingPool.algo.ts:214","pc":[465]},{"teal":575,"source":"contracts/stakingPool.algo.ts:214","pc":[466,467]},{"teal":576,"source":"contracts/stakingPool.algo.ts:214","pc":[468]},{"teal":577,"source":"contracts/stakingPool.algo.ts:214","pc":[469]},{"teal":578,"source":"contracts/stakingPool.algo.ts:214","pc":[470,471]},{"teal":579,"source":"contracts/stakingPool.algo.ts:214","pc":[472]},{"teal":580,"source":"contracts/stakingPool.algo.ts:214","pc":[473,474]},{"teal":585,"source":"contracts/stakingPool.algo.ts:215","pc":[475,476]},{"teal":586,"source":"contracts/stakingPool.algo.ts:215","pc":[477]},{"teal":587,"source":"contracts/stakingPool.algo.ts:216","pc":[478]},{"teal":588,"source":"contracts/stakingPool.algo.ts:216","pc":[479,480]},{"teal":589,"source":"contracts/stakingPool.algo.ts:216","pc":[481,482]},{"teal":590,"source":"contracts/stakingPool.algo.ts:216","pc":[483]},{"teal":591,"source":"contracts/stakingPool.algo.ts:216","pc":[484,485]},{"teal":592,"source":"contracts/stakingPool.algo.ts:216","pc":[486]},{"teal":593,"source":"contracts/stakingPool.algo.ts:216","pc":[487]},{"teal":594,"source":"contracts/stakingPool.algo.ts:216","pc":[488]},{"teal":595,"source":"contracts/stakingPool.algo.ts:216","pc":[489]},{"teal":596,"source":"contracts/stakingPool.algo.ts:216","pc":[490]},{"teal":597,"source":"contracts/stakingPool.algo.ts:216","pc":[491,492]},{"teal":598,"source":"contracts/stakingPool.algo.ts:216","pc":[493]},{"teal":601,"source":"contracts/stakingPool.algo.ts:216","errorMessage":"this.stakeAccumulator.value + (stakedAmountPayment.amount as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[494]},{"teal":602,"source":"contracts/stakingPool.algo.ts:216","pc":[495,496]},{"teal":603,"source":"contracts/stakingPool.algo.ts:216","pc":[497]},{"teal":604,"source":"contracts/stakingPool.algo.ts:216","pc":[498]},{"teal":605,"source":"contracts/stakingPool.algo.ts:216","pc":[499]},{"teal":606,"source":"contracts/stakingPool.algo.ts:216","pc":[500]},{"teal":607,"source":"contracts/stakingPool.algo.ts:216","pc":[501,502]},{"teal":608,"source":"contracts/stakingPool.algo.ts:216","pc":[503]},{"teal":609,"source":"contracts/stakingPool.algo.ts:216","pc":[504]},{"teal":610,"source":"contracts/stakingPool.algo.ts:216","pc":[505]},{"teal":611,"source":"contracts/stakingPool.algo.ts:215","pc":[506]},{"teal":615,"source":"contracts/stakingPool.algo.ts:219","pc":[507]},{"teal":616,"source":"contracts/stakingPool.algo.ts:219","pc":[508,509]},{"teal":621,"source":"contracts/stakingPool.algo.ts:219","pc":[510,511]},{"teal":622,"source":"contracts/stakingPool.algo.ts:219","pc":[512,513]},{"teal":623,"source":"contracts/stakingPool.algo.ts:219","pc":[514]},{"teal":624,"source":"contracts/stakingPool.algo.ts:219","pc":[515,516,517]},{"teal":629,"source":"contracts/stakingPool.algo.ts:220","pc":[518,519]},{"teal":630,"source":"contracts/stakingPool.algo.ts:220","pc":[520,521]},{"teal":631,"source":"contracts/stakingPool.algo.ts:220","pc":[522]},{"teal":632,"source":"contracts/stakingPool.algo.ts:220","pc":[523,524,525]},{"teal":637,"source":"contracts/stakingPool.algo.ts:221","pc":[526]},{"teal":638,"source":"contracts/stakingPool.algo.ts:221","pc":[527]},{"teal":639,"source":"contracts/stakingPool.algo.ts:221","pc":[528,529]},{"teal":640,"source":"contracts/stakingPool.algo.ts:221","pc":[530]},{"teal":641,"source":"contracts/stakingPool.algo.ts:221","pc":[531,532]},{"teal":642,"source":"contracts/stakingPool.algo.ts:221","pc":[533,534]},{"teal":643,"source":"contracts/stakingPool.algo.ts:221","pc":[535]},{"teal":644,"source":"contracts/stakingPool.algo.ts:221","pc":[536,537]},{"teal":645,"source":"contracts/stakingPool.algo.ts:221","pc":[538,539]},{"teal":646,"source":"contracts/stakingPool.algo.ts:221","pc":[540,541]},{"teal":647,"source":"contracts/stakingPool.algo.ts:221","pc":[542,543]},{"teal":648,"source":"contracts/stakingPool.algo.ts:221","pc":[544]},{"teal":653,"source":"contracts/stakingPool.algo.ts:223","pc":[545,546]},{"teal":654,"source":"contracts/stakingPool.algo.ts:223","pc":[547]},{"teal":655,"source":"contracts/stakingPool.algo.ts:223","pc":[548]},{"teal":656,"source":"contracts/stakingPool.algo.ts:223","pc":[549]},{"teal":657,"source":"contracts/stakingPool.algo.ts:223","pc":[550]},{"teal":658,"source":"contracts/stakingPool.algo.ts:223","pc":[551,552]},{"teal":659,"source":"contracts/stakingPool.algo.ts:223","pc":[553]},{"teal":660,"source":"contracts/stakingPool.algo.ts:223","pc":[554,555]},{"teal":665,"source":"contracts/stakingPool.algo.ts:224","pc":[556,557]},{"teal":666,"source":"contracts/stakingPool.algo.ts:224","pc":[558,559,560]},{"teal":667,"source":"contracts/stakingPool.algo.ts:224","pc":[561,562]},{"teal":668,"source":"contracts/stakingPool.algo.ts:224","pc":[563]},{"teal":669,"source":"contracts/stakingPool.algo.ts:224","pc":[564,565,566]},{"teal":674,"source":"contracts/stakingPool.algo.ts:226","pc":[567,568]},{"teal":675,"source":"contracts/stakingPool.algo.ts:226","pc":[569,570]},{"teal":676,"source":"contracts/stakingPool.algo.ts:226","pc":[571,572]},{"teal":677,"source":"contracts/stakingPool.algo.ts:226","pc":[573,574,575]},{"teal":678,"source":"contracts/stakingPool.algo.ts:226","pc":[576]},{"teal":679,"source":"contracts/stakingPool.algo.ts:226","pc":[577,578]},{"teal":680,"source":"contracts/stakingPool.algo.ts:226","pc":[579,580]},{"teal":681,"source":"contracts/stakingPool.algo.ts:226","pc":[581]},{"teal":682,"source":"contracts/stakingPool.algo.ts:226","pc":[582]},{"teal":683,"source":"contracts/stakingPool.algo.ts:226","pc":[583]},{"teal":684,"source":"contracts/stakingPool.algo.ts:226","pc":[584,585]},{"teal":688,"source":"contracts/stakingPool.algo.ts:227","pc":[586,587]},{"teal":689,"source":"contracts/stakingPool.algo.ts:227","pc":[588,589]},{"teal":690,"source":"contracts/stakingPool.algo.ts:227","pc":[590,591]},{"teal":691,"source":"contracts/stakingPool.algo.ts:227","pc":[592]},{"teal":692,"source":"contracts/stakingPool.algo.ts:227","pc":[593]},{"teal":693,"source":"contracts/stakingPool.algo.ts:227","pc":[594,595]},{"teal":697,"source":"contracts/stakingPool.algo.ts:230","pc":[596,597]},{"teal":698,"source":"contracts/stakingPool.algo.ts:230","pc":[598]},{"teal":699,"source":"contracts/stakingPool.algo.ts:230","pc":[599]},{"teal":700,"source":"contracts/stakingPool.algo.ts:230","pc":[600,601]},{"teal":701,"source":"contracts/stakingPool.algo.ts:230","pc":[602]},{"teal":702,"source":"contracts/stakingPool.algo.ts:230","pc":[603,604]},{"teal":703,"source":"contracts/stakingPool.algo.ts:230","pc":[605]},{"teal":707,"source":"contracts/stakingPool.algo.ts:232","pc":[606,607]},{"teal":708,"source":"contracts/stakingPool.algo.ts:232","pc":[608,609,610]},{"teal":714,"source":"contracts/stakingPool.algo.ts:234","pc":[611,612]},{"teal":715,"source":"contracts/stakingPool.algo.ts:234","pc":[613]},{"teal":716,"source":"contracts/stakingPool.algo.ts:234","pc":[614]},{"teal":717,"source":"contracts/stakingPool.algo.ts:234","pc":[615]},{"teal":718,"source":"contracts/stakingPool.algo.ts:234","pc":[616,617,618]},{"teal":719,"source":"contracts/stakingPool.algo.ts:234","pc":[619,620]},{"teal":720,"source":"contracts/stakingPool.algo.ts:234","pc":[621,622,623]},{"teal":721,"source":"contracts/stakingPool.algo.ts:234","pc":[624,625]},{"teal":722,"source":"contracts/stakingPool.algo.ts:234","pc":[626]},{"teal":723,"source":"contracts/stakingPool.algo.ts:234","pc":[627]},{"teal":726,"source":"contracts/stakingPool.algo.ts:234","pc":[628,629,630]},{"teal":731,"source":"contracts/stakingPool.algo.ts:235","pc":[631,632]},{"teal":732,"source":"contracts/stakingPool.algo.ts:235","pc":[633]},{"teal":733,"source":"contracts/stakingPool.algo.ts:235","pc":[634]},{"teal":734,"source":"contracts/stakingPool.algo.ts:235","pc":[635,636]},{"teal":741,"source":"contracts/stakingPool.algo.ts:219","pc":[637,638]},{"teal":742,"source":"contracts/stakingPool.algo.ts:219","pc":[639]},{"teal":743,"source":"contracts/stakingPool.algo.ts:219","pc":[640]},{"teal":744,"source":"contracts/stakingPool.algo.ts:219","pc":[641,642]},{"teal":745,"source":"contracts/stakingPool.algo.ts:219","pc":[643,644,645]},{"teal":751,"source":"contracts/stakingPool.algo.ts:239","pc":[646,647]},{"teal":752,"source":"contracts/stakingPool.algo.ts:239","pc":[648]},{"teal":753,"source":"contracts/stakingPool.algo.ts:239","pc":[649]},{"teal":754,"source":"contracts/stakingPool.algo.ts:239","pc":[650,651,652]},{"teal":758,"source":"contracts/stakingPool.algo.ts:241","errorMessage":"Staking pool full","pc":[653]},{"teal":763,"source":"contracts/stakingPool.algo.ts:246","pc":[654,655]},{"teal":764,"source":"contracts/stakingPool.algo.ts:246","pc":[656,657]},{"teal":765,"source":"contracts/stakingPool.algo.ts:246","pc":[658,659]},{"teal":766,"source":"contracts/stakingPool.algo.ts:246","pc":[660]},{"teal":767,"source":"contracts/stakingPool.algo.ts:246","pc":[661]},{"teal":770,"source":"contracts/stakingPool.algo.ts:246","errorMessage":"must stake at least the minimum for this pool","pc":[662]},{"teal":774,"source":"contracts/stakingPool.algo.ts:248","pc":[663,664]},{"teal":775,"source":"contracts/stakingPool.algo.ts:248","pc":[665]},{"teal":776,"source":"contracts/stakingPool.algo.ts:248","pc":[666]},{"teal":777,"source":"contracts/stakingPool.algo.ts:248","pc":[667]},{"teal":778,"source":"contracts/stakingPool.algo.ts:248","pc":[668]},{"teal":779,"source":"contracts/stakingPool.algo.ts:248","pc":[669]},{"teal":780,"source":"contracts/stakingPool.algo.ts:248","pc":[670]},{"teal":781,"source":"contracts/stakingPool.algo.ts:248","pc":[671,672]},{"teal":782,"source":"contracts/stakingPool.algo.ts:248","pc":[673]},{"teal":783,"source":"contracts/stakingPool.algo.ts:248","pc":[674,675]},{"teal":784,"source":"contracts/stakingPool.algo.ts:248","pc":[676]},{"teal":785,"source":"contracts/stakingPool.algo.ts:248","pc":[677,678]},{"teal":786,"source":"contracts/stakingPool.algo.ts:248","pc":[679]},{"teal":787,"source":"contracts/stakingPool.algo.ts:248","pc":[680]},{"teal":797,"source":"contracts/stakingPool.algo.ts:249","pc":[681,682]},{"teal":798,"source":"contracts/stakingPool.algo.ts:249","pc":[683]},{"teal":799,"source":"contracts/stakingPool.algo.ts:249","pc":[684]},{"teal":800,"source":"contracts/stakingPool.algo.ts:249","pc":[685]},{"teal":801,"source":"contracts/stakingPool.algo.ts:249","pc":[686]},{"teal":802,"source":"contracts/stakingPool.algo.ts:250","pc":[687,688]},{"teal":803,"source":"contracts/stakingPool.algo.ts:251","pc":[689,690]},{"teal":804,"source":"contracts/stakingPool.algo.ts:251","pc":[691,692]},{"teal":805,"source":"contracts/stakingPool.algo.ts:251","pc":[693]},{"teal":806,"source":"contracts/stakingPool.algo.ts:251","pc":[694]},{"teal":807,"source":"contracts/stakingPool.algo.ts:252","pc":[695,696]},{"teal":808,"source":"contracts/stakingPool.algo.ts:252","pc":[697]},{"teal":809,"source":"contracts/stakingPool.algo.ts:253","pc":[698,699]},{"teal":810,"source":"contracts/stakingPool.algo.ts:253","pc":[700]},{"teal":811,"source":"contracts/stakingPool.algo.ts:254","pc":[701,702]},{"teal":812,"source":"contracts/stakingPool.algo.ts:254","pc":[703]},{"teal":813,"source":"contracts/stakingPool.algo.ts:254","pc":[704]},{"teal":814,"source":"contracts/stakingPool.algo.ts:249","pc":[705]},{"teal":815,"source":"contracts/stakingPool.algo.ts:249","pc":[706,707]},{"teal":816,"source":"contracts/stakingPool.algo.ts:249","pc":[708]},{"teal":820,"source":"contracts/stakingPool.algo.ts:256","pc":[709,710]},{"teal":821,"source":"contracts/stakingPool.algo.ts:256","pc":[711]},{"teal":822,"source":"contracts/stakingPool.algo.ts:256","pc":[712]},{"teal":823,"source":"contracts/stakingPool.algo.ts:256","pc":[713]},{"teal":824,"source":"contracts/stakingPool.algo.ts:256","pc":[714,715]},{"teal":825,"source":"contracts/stakingPool.algo.ts:256","pc":[716]},{"teal":826,"source":"contracts/stakingPool.algo.ts:256","pc":[717]},{"teal":830,"source":"contracts/stakingPool.algo.ts:257","pc":[718,719]},{"teal":834,"source":"contracts/stakingPool.algo.ts:185","pc":[720,721]},{"teal":837,"source":"contracts/stakingPool.algo.ts:185","pc":[722,723]},{"teal":838,"source":"contracts/stakingPool.algo.ts:185","pc":[724]},{"teal":843,"source":"contracts/stakingPool.algo.ts:271","pc":[725,726,727]},{"teal":844,"source":"contracts/stakingPool.algo.ts:271","pc":[728]},{"teal":847,"source":"contracts/stakingPool.algo.ts:271","pc":[729,730,731]},{"teal":848,"source":"contracts/stakingPool.algo.ts:271","pc":[732]},{"teal":849,"source":"contracts/stakingPool.algo.ts:271","pc":[733]},{"teal":850,"source":"contracts/stakingPool.algo.ts:271","pc":[734,735]},{"teal":851,"source":"contracts/stakingPool.algo.ts:271","pc":[736]},{"teal":854,"source":"contracts/stakingPool.algo.ts:271","errorMessage":"argument 1 (staker) for removeStake must be a address","pc":[737]},{"teal":857,"source":"contracts/stakingPool.algo.ts:271","pc":[738,739,740]},{"teal":858,"source":"contracts/stakingPool.algo.ts:271","pc":[741]},{"teal":859,"source":"contracts/stakingPool.algo.ts:271","pc":[742]},{"teal":873,"source":"contracts/stakingPool.algo.ts:271","pc":[743,744,745]},{"teal":876,"source":"contracts/stakingPool.algo.ts:271","pc":[746]},{"teal":877,"source":"contracts/stakingPool.algo.ts:271","pc":[747,748]},{"teal":882,"source":"contracts/stakingPool.algo.ts:274","pc":[749,750]},{"teal":883,"source":"contracts/stakingPool.algo.ts:274","pc":[751,752]},{"teal":884,"source":"contracts/stakingPool.algo.ts:274","pc":[753]},{"teal":885,"source":"contracts/stakingPool.algo.ts:274","pc":[754,755,756]},{"teal":893,"source":"contracts/stakingPool.algo.ts:276","pc":[757,758,759]},{"teal":896,"source":"contracts/stakingPool.algo.ts:275","errorMessage":"If staker is not sender in removeStake call, then sender MUST be owner or manager of validator","pc":[760]},{"teal":901,"source":"contracts/stakingPool.algo.ts:281","pc":[761,762,763]},{"teal":905,"source":"contracts/stakingPool.algo.ts:283","pc":[764]},{"teal":906,"source":"contracts/stakingPool.algo.ts:283","pc":[765,766]},{"teal":911,"source":"contracts/stakingPool.algo.ts:283","pc":[767,768]},{"teal":912,"source":"contracts/stakingPool.algo.ts:283","pc":[769,770]},{"teal":913,"source":"contracts/stakingPool.algo.ts:283","pc":[771]},{"teal":914,"source":"contracts/stakingPool.algo.ts:283","pc":[772,773,774]},{"teal":919,"source":"contracts/stakingPool.algo.ts:284","pc":[775,776]},{"teal":920,"source":"contracts/stakingPool.algo.ts:284","pc":[777,778]},{"teal":921,"source":"contracts/stakingPool.algo.ts:284","pc":[779]},{"teal":922,"source":"contracts/stakingPool.algo.ts:284","pc":[780,781,782]},{"teal":927,"source":"contracts/stakingPool.algo.ts:285","pc":[783]},{"teal":928,"source":"contracts/stakingPool.algo.ts:285","pc":[784]},{"teal":929,"source":"contracts/stakingPool.algo.ts:285","pc":[785,786]},{"teal":930,"source":"contracts/stakingPool.algo.ts:285","pc":[787]},{"teal":931,"source":"contracts/stakingPool.algo.ts:285","pc":[788,789]},{"teal":932,"source":"contracts/stakingPool.algo.ts:285","pc":[790,791]},{"teal":933,"source":"contracts/stakingPool.algo.ts:285","pc":[792]},{"teal":934,"source":"contracts/stakingPool.algo.ts:285","pc":[793,794]},{"teal":935,"source":"contracts/stakingPool.algo.ts:285","pc":[795,796]},{"teal":936,"source":"contracts/stakingPool.algo.ts:285","pc":[797,798]},{"teal":937,"source":"contracts/stakingPool.algo.ts:285","pc":[799,800]},{"teal":938,"source":"contracts/stakingPool.algo.ts:285","pc":[801]},{"teal":943,"source":"contracts/stakingPool.algo.ts:287","pc":[802,803]},{"teal":944,"source":"contracts/stakingPool.algo.ts:287","pc":[804]},{"teal":945,"source":"contracts/stakingPool.algo.ts:287","pc":[805]},{"teal":946,"source":"contracts/stakingPool.algo.ts:287","pc":[806]},{"teal":947,"source":"contracts/stakingPool.algo.ts:287","pc":[807]},{"teal":948,"source":"contracts/stakingPool.algo.ts:287","pc":[808,809]},{"teal":949,"source":"contracts/stakingPool.algo.ts:287","pc":[810]},{"teal":950,"source":"contracts/stakingPool.algo.ts:287","pc":[811,812]},{"teal":955,"source":"contracts/stakingPool.algo.ts:288","pc":[813,814]},{"teal":956,"source":"contracts/stakingPool.algo.ts:288","pc":[815,816,817]},{"teal":957,"source":"contracts/stakingPool.algo.ts:288","pc":[818,819]},{"teal":958,"source":"contracts/stakingPool.algo.ts:288","pc":[820]},{"teal":959,"source":"contracts/stakingPool.algo.ts:288","pc":[821,822,823]},{"teal":965,"source":"contracts/stakingPool.algo.ts:289","pc":[824,825]},{"teal":966,"source":"contracts/stakingPool.algo.ts:289","pc":[826]},{"teal":967,"source":"contracts/stakingPool.algo.ts:289","pc":[827]},{"teal":968,"source":"contracts/stakingPool.algo.ts:289","pc":[828,829,830]},{"teal":973,"source":"contracts/stakingPool.algo.ts:291","pc":[831,832]},{"teal":974,"source":"contracts/stakingPool.algo.ts:291","pc":[833,834,835]},{"teal":975,"source":"contracts/stakingPool.algo.ts:291","pc":[836]},{"teal":976,"source":"contracts/stakingPool.algo.ts:291","pc":[837,838]},{"teal":982,"source":"contracts/stakingPool.algo.ts:293","pc":[839,840]},{"teal":983,"source":"contracts/stakingPool.algo.ts:293","pc":[841,842,843]},{"teal":984,"source":"contracts/stakingPool.algo.ts:293","pc":[844]},{"teal":985,"source":"contracts/stakingPool.algo.ts:293","pc":[845,846]},{"teal":986,"source":"contracts/stakingPool.algo.ts:293","pc":[847]},{"teal":987,"source":"contracts/stakingPool.algo.ts:293","pc":[848,849,850]},{"teal":991,"source":"contracts/stakingPool.algo.ts:294","errorMessage":"Insufficient balance","pc":[851]},{"teal":996,"source":"contracts/stakingPool.algo.ts:296","pc":[852,853]},{"teal":997,"source":"contracts/stakingPool.algo.ts:296","pc":[854,855]},{"teal":998,"source":"contracts/stakingPool.algo.ts:296","pc":[856,857]},{"teal":999,"source":"contracts/stakingPool.algo.ts:296","pc":[858,859,860]},{"teal":1000,"source":"contracts/stakingPool.algo.ts:296","pc":[861]},{"teal":1001,"source":"contracts/stakingPool.algo.ts:296","pc":[862,863]},{"teal":1002,"source":"contracts/stakingPool.algo.ts:296","pc":[864]},{"teal":1003,"source":"contracts/stakingPool.algo.ts:296","pc":[865]},{"teal":1004,"source":"contracts/stakingPool.algo.ts:296","pc":[866]},{"teal":1005,"source":"contracts/stakingPool.algo.ts:296","pc":[867,868]},{"teal":1009,"source":"contracts/stakingPool.algo.ts:297","pc":[869,870]},{"teal":1010,"source":"contracts/stakingPool.algo.ts:297","pc":[871]},{"teal":1011,"source":"contracts/stakingPool.algo.ts:297","pc":[872,873]},{"teal":1012,"source":"contracts/stakingPool.algo.ts:297","pc":[874]},{"teal":1013,"source":"contracts/stakingPool.algo.ts:297","pc":[875,876]},{"teal":1014,"source":"contracts/stakingPool.algo.ts:297","pc":[877]},{"teal":1015,"source":"contracts/stakingPool.algo.ts:297","pc":[878]},{"teal":1019,"source":"contracts/stakingPool.algo.ts:299","pc":[879]},{"teal":1020,"source":"contracts/stakingPool.algo.ts:299","pc":[880,881]},{"teal":1025,"source":"contracts/stakingPool.algo.ts:300","pc":[882,883]},{"teal":1026,"source":"contracts/stakingPool.algo.ts:300","pc":[884,885,886]},{"teal":1027,"source":"contracts/stakingPool.algo.ts:300","pc":[887]},{"teal":1028,"source":"contracts/stakingPool.algo.ts:300","pc":[888]},{"teal":1029,"source":"contracts/stakingPool.algo.ts:300","pc":[889]},{"teal":1030,"source":"contracts/stakingPool.algo.ts:300","pc":[890,891,892]},{"teal":1036,"source":"contracts/stakingPool.algo.ts:302","pc":[893,894]},{"teal":1037,"source":"contracts/stakingPool.algo.ts:302","pc":[895]},{"teal":1038,"source":"contracts/stakingPool.algo.ts:302","pc":[896]},{"teal":1039,"source":"contracts/stakingPool.algo.ts:302","pc":[897]},{"teal":1040,"source":"contracts/stakingPool.algo.ts:302","pc":[898,899,900]},{"teal":1048,"source":"contracts/stakingPool.algo.ts:303","pc":[901]},{"teal":1049,"source":"contracts/stakingPool.algo.ts:303","pc":[902]},{"teal":1050,"source":"contracts/stakingPool.algo.ts:303","pc":[903,904]},{"teal":1051,"source":"contracts/stakingPool.algo.ts:303","pc":[905,906]},{"teal":1052,"source":"contracts/stakingPool.algo.ts:303","pc":[907,908]},{"teal":1056,"source":"contracts/stakingPool.algo.ts:304","pc":[909]},{"teal":1057,"source":"contracts/stakingPool.algo.ts:304","pc":[910]},{"teal":1058,"source":"contracts/stakingPool.algo.ts:304","pc":[911,912]},{"teal":1062,"source":"contracts/stakingPool.algo.ts:305","pc":[913]},{"teal":1063,"source":"contracts/stakingPool.algo.ts:305","pc":[914]},{"teal":1064,"source":"contracts/stakingPool.algo.ts:305","pc":[915]},{"teal":1065,"source":"contracts/stakingPool.algo.ts:305","pc":[916,917]},{"teal":1068,"source":"contracts/stakingPool.algo.ts:303","pc":[918]},{"teal":1069,"source":"contracts/stakingPool.algo.ts:303","pc":[919,920]},{"teal":1072,"source":"contracts/stakingPool.algo.ts:303","pc":[921]},{"teal":1073,"source":"contracts/stakingPool.algo.ts:303","pc":[922,923]},{"teal":1074,"source":"contracts/stakingPool.algo.ts:303","pc":[924]},{"teal":1075,"source":"contracts/stakingPool.algo.ts:303","pc":[925]},{"teal":1076,"source":"contracts/stakingPool.algo.ts:303","pc":[926,927]},{"teal":1077,"source":"contracts/stakingPool.algo.ts:303","pc":[928,929,930]},{"teal":1078,"source":"contracts/stakingPool.algo.ts:303","pc":[931,932]},{"teal":1086,"source":"contracts/stakingPool.algo.ts:311","pc":[933]},{"teal":1087,"source":"contracts/stakingPool.algo.ts:311","pc":[934,935]},{"teal":1088,"source":"contracts/stakingPool.algo.ts:311","pc":[936,937]},{"teal":1092,"source":"contracts/stakingPool.algo.ts:312","pc":[938,939]},{"teal":1093,"source":"contracts/stakingPool.algo.ts:312","pc":[940,941,942]},{"teal":1094,"source":"contracts/stakingPool.algo.ts:312","pc":[943]},{"teal":1095,"source":"contracts/stakingPool.algo.ts:312","pc":[944,945]},{"teal":1099,"source":"contracts/stakingPool.algo.ts:313","pc":[946,947]},{"teal":1100,"source":"contracts/stakingPool.algo.ts:313","pc":[948,949]},{"teal":1104,"source":"contracts/stakingPool.algo.ts:314","pc":[950,951]},{"teal":1105,"source":"contracts/stakingPool.algo.ts:314","pc":[952,953,954]},{"teal":1106,"source":"contracts/stakingPool.algo.ts:314","pc":[955]},{"teal":1107,"source":"contracts/stakingPool.algo.ts:314","pc":[956,957]},{"teal":1110,"source":"contracts/stakingPool.algo.ts:311","pc":[958]},{"teal":1111,"source":"contracts/stakingPool.algo.ts:311","pc":[959,960]},{"teal":1114,"source":"contracts/stakingPool.algo.ts:311","pc":[961]},{"teal":1118,"source":"contracts/stakingPool.algo.ts:316","pc":[962,963]},{"teal":1119,"source":"contracts/stakingPool.algo.ts:316","pc":[964,965,966]},{"teal":1120,"source":"contracts/stakingPool.algo.ts:316","pc":[967]},{"teal":1121,"source":"contracts/stakingPool.algo.ts:316","pc":[968,969]},{"teal":1125,"source":"contracts/stakingPool.algo.ts:317","pc":[970,971]},{"teal":1126,"source":"contracts/stakingPool.algo.ts:317","pc":[972,973]},{"teal":1127,"source":"contracts/stakingPool.algo.ts:317","pc":[974,975]},{"teal":1128,"source":"contracts/stakingPool.algo.ts:317","pc":[976,977]},{"teal":1129,"source":"contracts/stakingPool.algo.ts:302","pc":[978,979,980]},{"teal":1134,"source":"contracts/stakingPool.algo.ts:322","pc":[981,982]},{"teal":1135,"source":"contracts/stakingPool.algo.ts:322","pc":[983,984,985]},{"teal":1136,"source":"contracts/stakingPool.algo.ts:322","pc":[986]},{"teal":1137,"source":"contracts/stakingPool.algo.ts:322","pc":[987,988]},{"teal":1141,"source":"contracts/stakingPool.algo.ts:323","pc":[989,990]},{"teal":1142,"source":"contracts/stakingPool.algo.ts:323","pc":[991,992]},{"teal":1143,"source":"contracts/stakingPool.algo.ts:323","pc":[993,994]},{"teal":1144,"source":"contracts/stakingPool.algo.ts:323","pc":[995,996]},{"teal":1154,"source":"contracts/stakingPool.algo.ts:329","pc":[997,998]},{"teal":1155,"source":"contracts/stakingPool.algo.ts:329","pc":[999,1000,1001]},{"teal":1156,"source":"contracts/stakingPool.algo.ts:329","pc":[1002]},{"teal":1157,"source":"contracts/stakingPool.algo.ts:329","pc":[1003]},{"teal":1158,"source":"contracts/stakingPool.algo.ts:329","pc":[1004]},{"teal":1159,"source":"contracts/stakingPool.algo.ts:329","pc":[1005]},{"teal":1160,"source":"contracts/stakingPool.algo.ts:329","pc":[1006,1007,1008]},{"teal":1161,"source":"contracts/stakingPool.algo.ts:329","pc":[1009,1010]},{"teal":1162,"source":"contracts/stakingPool.algo.ts:329","pc":[1011,1012,1013]},{"teal":1163,"source":"contracts/stakingPool.algo.ts:329","pc":[1014]},{"teal":1164,"source":"contracts/stakingPool.algo.ts:329","pc":[1015,1016]},{"teal":1165,"source":"contracts/stakingPool.algo.ts:329","pc":[1017]},{"teal":1166,"source":"contracts/stakingPool.algo.ts:329","pc":[1018]},{"teal":1167,"source":"contracts/stakingPool.algo.ts:329","pc":[1019]},{"teal":1171,"source":"contracts/stakingPool.algo.ts:328","errorMessage":"cannot reduce balance below minimum allowed stake unless all is removed","pc":[1020]},{"teal":1179,"source":"contracts/stakingPool.algo.ts:336","pc":[1021]},{"teal":1180,"source":"contracts/stakingPool.algo.ts:336","pc":[1022]},{"teal":1181,"source":"contracts/stakingPool.algo.ts:336","pc":[1023,1024]},{"teal":1185,"source":"contracts/stakingPool.algo.ts:337","pc":[1025,1026]},{"teal":1186,"source":"contracts/stakingPool.algo.ts:337","pc":[1027,1028]},{"teal":1190,"source":"contracts/stakingPool.algo.ts:338","pc":[1029,1030]},{"teal":1191,"source":"contracts/stakingPool.algo.ts:338","pc":[1031,1032]},{"teal":1195,"source":"contracts/stakingPool.algo.ts:339","pc":[1033,1034,1035,1036,1037,1038,1039,1040,1041,1042]},{"teal":1196,"source":"contracts/stakingPool.algo.ts:339","pc":[1043,1044]},{"teal":1199,"source":"contracts/stakingPool.algo.ts:336","pc":[1045]},{"teal":1200,"source":"contracts/stakingPool.algo.ts:336","pc":[1046,1047]},{"teal":1203,"source":"contracts/stakingPool.algo.ts:336","pc":[1048]},{"teal":1207,"source":"contracts/stakingPool.algo.ts:341","pc":[1049]},{"teal":1208,"source":"contracts/stakingPool.algo.ts:341","pc":[1050,1051]},{"teal":1213,"source":"contracts/stakingPool.algo.ts:342","pc":[1052,1053]},{"teal":1214,"source":"contracts/stakingPool.algo.ts:342","pc":[1054,1055,1056]},{"teal":1215,"source":"contracts/stakingPool.algo.ts:342","pc":[1057]},{"teal":1216,"source":"contracts/stakingPool.algo.ts:342","pc":[1058]},{"teal":1217,"source":"contracts/stakingPool.algo.ts:342","pc":[1059]},{"teal":1218,"source":"contracts/stakingPool.algo.ts:342","pc":[1060,1061,1062]},{"teal":1223,"source":"contracts/stakingPool.algo.ts:344","pc":[1063,1064]},{"teal":1224,"source":"contracts/stakingPool.algo.ts:344","pc":[1065]},{"teal":1225,"source":"contracts/stakingPool.algo.ts:344","pc":[1066]},{"teal":1226,"source":"contracts/stakingPool.algo.ts:344","pc":[1067]},{"teal":1227,"source":"contracts/stakingPool.algo.ts:344","pc":[1068,1069]},{"teal":1228,"source":"contracts/stakingPool.algo.ts:344","pc":[1070]},{"teal":1229,"source":"contracts/stakingPool.algo.ts:344","pc":[1071]},{"teal":1233,"source":"contracts/stakingPool.algo.ts:345","pc":[1072,1073]},{"teal":1234,"source":"contracts/stakingPool.algo.ts:345","pc":[1074]},{"teal":1235,"source":"contracts/stakingPool.algo.ts:345","pc":[1075,1076]},{"teal":1236,"source":"contracts/stakingPool.algo.ts:345","pc":[1077]},{"teal":1237,"source":"contracts/stakingPool.algo.ts:345","pc":[1078,1079]},{"teal":1241,"source":"contracts/stakingPool.algo.ts:346","pc":[1080,1081]},{"teal":1242,"source":"contracts/stakingPool.algo.ts:346","pc":[1082,1083]},{"teal":1243,"source":"contracts/stakingPool.algo.ts:346","pc":[1084,1085]},{"teal":1244,"source":"contracts/stakingPool.algo.ts:346","pc":[1086,1087]},{"teal":1248,"source":"contracts/stakingPool.algo.ts:347","pc":[1088,1089]},{"teal":1249,"source":"contracts/stakingPool.algo.ts:347","pc":[1090,1091]},{"teal":1250,"source":"contracts/stakingPool.algo.ts:347","pc":[1092,1093]},{"teal":1251,"source":"contracts/stakingPool.algo.ts:347","pc":[1094,1095]},{"teal":1255,"source":"contracts/stakingPool.algo.ts:348","pc":[1096]},{"teal":1256,"source":"contracts/stakingPool.algo.ts:348","pc":[1097,1098]},{"teal":1261,"source":"contracts/stakingPool.algo.ts:351","pc":[1099,1100]},{"teal":1262,"source":"contracts/stakingPool.algo.ts:351","pc":[1101]},{"teal":1263,"source":"contracts/stakingPool.algo.ts:351","pc":[1102]},{"teal":1264,"source":"contracts/stakingPool.algo.ts:351","pc":[1103,1104]},{"teal":1265,"source":"contracts/stakingPool.algo.ts:351","pc":[1105]},{"teal":1266,"source":"contracts/stakingPool.algo.ts:351","pc":[1106,1107]},{"teal":1267,"source":"contracts/stakingPool.algo.ts:351","pc":[1108]},{"teal":1271,"source":"contracts/stakingPool.algo.ts:353","pc":[1109,1110]},{"teal":1272,"source":"contracts/stakingPool.algo.ts:353","pc":[1111]},{"teal":1273,"source":"contracts/stakingPool.algo.ts:353","pc":[1112,1113]},{"teal":1274,"source":"contracts/stakingPool.algo.ts:353","pc":[1114]},{"teal":1275,"source":"contracts/stakingPool.algo.ts:353","pc":[1115]},{"teal":1276,"source":"contracts/stakingPool.algo.ts:353","pc":[1116,1117]},{"teal":1277,"source":"contracts/stakingPool.algo.ts:353","pc":[1118]},{"teal":1278,"source":"contracts/stakingPool.algo.ts:353","pc":[1119,1120]},{"teal":1282,"source":"contracts/stakingPool.algo.ts:354","pc":[1121,1122]},{"teal":1283,"source":"contracts/stakingPool.algo.ts:354","pc":[1123]},{"teal":1284,"source":"contracts/stakingPool.algo.ts:354","pc":[1124,1125]},{"teal":1285,"source":"contracts/stakingPool.algo.ts:354","pc":[1126]},{"teal":1286,"source":"contracts/stakingPool.algo.ts:354","pc":[1127]},{"teal":1287,"source":"contracts/stakingPool.algo.ts:354","pc":[1128]},{"teal":1288,"source":"contracts/stakingPool.algo.ts:354","pc":[1129]},{"teal":1289,"source":"contracts/stakingPool.algo.ts:354","pc":[1130,1131]},{"teal":1290,"source":"contracts/stakingPool.algo.ts:354","pc":[1132]},{"teal":1293,"source":"contracts/stakingPool.algo.ts:354","errorMessage":"(amountToUnstake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[1133]},{"teal":1294,"source":"contracts/stakingPool.algo.ts:354","pc":[1134,1135]},{"teal":1295,"source":"contracts/stakingPool.algo.ts:354","pc":[1136]},{"teal":1296,"source":"contracts/stakingPool.algo.ts:354","pc":[1137]},{"teal":1297,"source":"contracts/stakingPool.algo.ts:354","pc":[1138]},{"teal":1298,"source":"contracts/stakingPool.algo.ts:354","pc":[1139]},{"teal":1299,"source":"contracts/stakingPool.algo.ts:354","pc":[1140,1141]},{"teal":1300,"source":"contracts/stakingPool.algo.ts:354","pc":[1142]},{"teal":1301,"source":"contracts/stakingPool.algo.ts:354","pc":[1143]},{"teal":1302,"source":"contracts/stakingPool.algo.ts:354","pc":[1144]},{"teal":1303,"source":"contracts/stakingPool.algo.ts:354","pc":[1145,1146]},{"teal":1307,"source":"contracts/stakingPool.algo.ts:355","pc":[1147,1148]},{"teal":1308,"source":"contracts/stakingPool.algo.ts:355","pc":[1149]},{"teal":1309,"source":"contracts/stakingPool.algo.ts:355","pc":[1150]},{"teal":1310,"source":"contracts/stakingPool.algo.ts:355","pc":[1151,1152]},{"teal":1311,"source":"contracts/stakingPool.algo.ts:355","pc":[1153]},{"teal":1312,"source":"contracts/stakingPool.algo.ts:355","pc":[1154]},{"teal":1313,"source":"contracts/stakingPool.algo.ts:355","pc":[1155]},{"teal":1314,"source":"contracts/stakingPool.algo.ts:355","pc":[1156,1157]},{"teal":1315,"source":"contracts/stakingPool.algo.ts:355","pc":[1158]},{"teal":1318,"source":"contracts/stakingPool.algo.ts:355","errorMessage":"this.stakeAccumulator.value - subtractAmount overflowed 128 bits","pc":[1159]},{"teal":1319,"source":"contracts/stakingPool.algo.ts:355","pc":[1160,1161]},{"teal":1320,"source":"contracts/stakingPool.algo.ts:355","pc":[1162]},{"teal":1321,"source":"contracts/stakingPool.algo.ts:355","pc":[1163]},{"teal":1322,"source":"contracts/stakingPool.algo.ts:355","pc":[1164]},{"teal":1323,"source":"contracts/stakingPool.algo.ts:355","pc":[1165]},{"teal":1324,"source":"contracts/stakingPool.algo.ts:355","pc":[1166,1167]},{"teal":1325,"source":"contracts/stakingPool.algo.ts:355","pc":[1168]},{"teal":1326,"source":"contracts/stakingPool.algo.ts:355","pc":[1169]},{"teal":1327,"source":"contracts/stakingPool.algo.ts:355","pc":[1170]},{"teal":1328,"source":"contracts/stakingPool.algo.ts:355","pc":[1171]},{"teal":1341,"source":"contracts/stakingPool.algo.ts:360","pc":[1172]},{"teal":1342,"source":"contracts/stakingPool.algo.ts:360","pc":[1173]},{"teal":1343,"source":"contracts/stakingPool.algo.ts:360","pc":[1174,1175]},{"teal":1344,"source":"contracts/stakingPool.algo.ts:360","pc":[1176,1177]},{"teal":1345,"source":"contracts/stakingPool.algo.ts:360","pc":[1178,1179]},{"teal":1349,"source":"contracts/stakingPool.algo.ts:361","pc":[1180]},{"teal":1350,"source":"contracts/stakingPool.algo.ts:361","pc":[1181]},{"teal":1351,"source":"contracts/stakingPool.algo.ts:361","pc":[1182,1183]},{"teal":1361,"source":"contracts/stakingPool.algo.ts:363","pc":[1184]},{"teal":1362,"source":"contracts/stakingPool.algo.ts:363","pc":[1185]},{"teal":1363,"source":"contracts/stakingPool.algo.ts:363","pc":[1186]},{"teal":1364,"source":"contracts/stakingPool.algo.ts:363","pc":[1187,1188]},{"teal":1365,"source":"contracts/stakingPool.algo.ts:363","pc":[1189]},{"teal":1366,"source":"contracts/stakingPool.algo.ts:363","pc":[1190]},{"teal":1367,"source":"contracts/stakingPool.algo.ts:363","pc":[1191]},{"teal":1368,"source":"contracts/stakingPool.algo.ts:363","pc":[1192,1193,1194]},{"teal":1369,"source":"contracts/stakingPool.algo.ts:363","pc":[1195]},{"teal":1370,"source":"contracts/stakingPool.algo.ts:363","pc":[1196]},{"teal":1371,"source":"contracts/stakingPool.algo.ts:363","pc":[1197,1198]},{"teal":1372,"source":"contracts/stakingPool.algo.ts:364","pc":[1199,1200]},{"teal":1373,"source":"contracts/stakingPool.algo.ts:364","pc":[1201,1202]},{"teal":1374,"source":"contracts/stakingPool.algo.ts:365","pc":[1203,1204]},{"teal":1375,"source":"contracts/stakingPool.algo.ts:365","pc":[1205]},{"teal":1376,"source":"contracts/stakingPool.algo.ts:365","pc":[1206,1207]},{"teal":1377,"source":"contracts/stakingPool.algo.ts:366","pc":[1208,1209]},{"teal":1378,"source":"contracts/stakingPool.algo.ts:366","pc":[1210]},{"teal":1379,"source":"contracts/stakingPool.algo.ts:366","pc":[1211,1212]},{"teal":1380,"source":"contracts/stakingPool.algo.ts:367","pc":[1213,1214]},{"teal":1381,"source":"contracts/stakingPool.algo.ts:367","pc":[1215,1216]},{"teal":1382,"source":"contracts/stakingPool.algo.ts:367","pc":[1217]},{"teal":1383,"source":"contracts/stakingPool.algo.ts:367","pc":[1218,1219]},{"teal":1384,"source":"contracts/stakingPool.algo.ts:367","pc":[1220]},{"teal":1385,"source":"contracts/stakingPool.algo.ts:367","pc":[1221,1222]},{"teal":1388,"source":"contracts/stakingPool.algo.ts:360","pc":[1223]},{"teal":1389,"source":"contracts/stakingPool.algo.ts:360","pc":[1224,1225]},{"teal":1392,"source":"contracts/stakingPool.algo.ts:360","pc":[1226]},{"teal":1396,"source":"contracts/stakingPool.algo.ts:370","pc":[1227]},{"teal":1403,"source":"contracts/stakingPool.algo.ts:283","pc":[1228,1229]},{"teal":1404,"source":"contracts/stakingPool.algo.ts:283","pc":[1230]},{"teal":1405,"source":"contracts/stakingPool.algo.ts:283","pc":[1231]},{"teal":1406,"source":"contracts/stakingPool.algo.ts:283","pc":[1232,1233]},{"teal":1407,"source":"contracts/stakingPool.algo.ts:283","pc":[1234,1235,1236]},{"teal":1411,"source":"contracts/stakingPool.algo.ts:373","errorMessage":"account not found","pc":[1237]},{"teal":1412,"source":"contracts/stakingPool.algo.ts:271","pc":[1238]},{"teal":1417,"source":"contracts/stakingPool.algo.ts:381","pc":[1239,1240,1241]},{"teal":1418,"source":"contracts/stakingPool.algo.ts:381","pc":[1242]},{"teal":1419,"source":"contracts/stakingPool.algo.ts:381","pc":[1243]},{"teal":1427,"source":"contracts/stakingPool.algo.ts:381","pc":[1244,1245,1246]},{"teal":1430,"source":"contracts/stakingPool.algo.ts:381","pc":[1247]},{"teal":1431,"source":"contracts/stakingPool.algo.ts:381","pc":[1248,1249]},{"teal":1435,"source":"contracts/stakingPool.algo.ts:385","pc":[1250,1251]},{"teal":1436,"source":"contracts/stakingPool.algo.ts:385","pc":[1252,1253]},{"teal":1440,"source":"contracts/stakingPool.algo.ts:387","pc":[1254]},{"teal":1441,"source":"contracts/stakingPool.algo.ts:387","pc":[1255,1256]},{"teal":1446,"source":"contracts/stakingPool.algo.ts:387","pc":[1257,1258]},{"teal":1447,"source":"contracts/stakingPool.algo.ts:387","pc":[1259,1260]},{"teal":1448,"source":"contracts/stakingPool.algo.ts:387","pc":[1261]},{"teal":1449,"source":"contracts/stakingPool.algo.ts:387","pc":[1262,1263,1264]},{"teal":1454,"source":"contracts/stakingPool.algo.ts:388","pc":[1265,1266]},{"teal":1455,"source":"contracts/stakingPool.algo.ts:388","pc":[1267,1268]},{"teal":1456,"source":"contracts/stakingPool.algo.ts:388","pc":[1269]},{"teal":1457,"source":"contracts/stakingPool.algo.ts:388","pc":[1270,1271,1272]},{"teal":1462,"source":"contracts/stakingPool.algo.ts:389","pc":[1273]},{"teal":1463,"source":"contracts/stakingPool.algo.ts:389","pc":[1274]},{"teal":1464,"source":"contracts/stakingPool.algo.ts:389","pc":[1275,1276]},{"teal":1465,"source":"contracts/stakingPool.algo.ts:389","pc":[1277]},{"teal":1466,"source":"contracts/stakingPool.algo.ts:389","pc":[1278,1279]},{"teal":1467,"source":"contracts/stakingPool.algo.ts:389","pc":[1280,1281]},{"teal":1468,"source":"contracts/stakingPool.algo.ts:389","pc":[1282]},{"teal":1469,"source":"contracts/stakingPool.algo.ts:389","pc":[1283,1284]},{"teal":1470,"source":"contracts/stakingPool.algo.ts:389","pc":[1285,1286]},{"teal":1471,"source":"contracts/stakingPool.algo.ts:389","pc":[1287,1288]},{"teal":1472,"source":"contracts/stakingPool.algo.ts:389","pc":[1289,1290]},{"teal":1473,"source":"contracts/stakingPool.algo.ts:389","pc":[1291]},{"teal":1478,"source":"contracts/stakingPool.algo.ts:391","pc":[1292,1293]},{"teal":1479,"source":"contracts/stakingPool.algo.ts:391","pc":[1294]},{"teal":1480,"source":"contracts/stakingPool.algo.ts:391","pc":[1295]},{"teal":1481,"source":"contracts/stakingPool.algo.ts:391","pc":[1296]},{"teal":1482,"source":"contracts/stakingPool.algo.ts:391","pc":[1297]},{"teal":1483,"source":"contracts/stakingPool.algo.ts:391","pc":[1298,1299]},{"teal":1484,"source":"contracts/stakingPool.algo.ts:391","pc":[1300]},{"teal":1485,"source":"contracts/stakingPool.algo.ts:391","pc":[1301,1302]},{"teal":1490,"source":"contracts/stakingPool.algo.ts:392","pc":[1303,1304]},{"teal":1491,"source":"contracts/stakingPool.algo.ts:392","pc":[1305,1306,1307]},{"teal":1492,"source":"contracts/stakingPool.algo.ts:392","pc":[1308,1309]},{"teal":1493,"source":"contracts/stakingPool.algo.ts:392","pc":[1310]},{"teal":1494,"source":"contracts/stakingPool.algo.ts:392","pc":[1311,1312,1313]},{"teal":1500,"source":"contracts/stakingPool.algo.ts:393","pc":[1314,1315]},{"teal":1501,"source":"contracts/stakingPool.algo.ts:393","pc":[1316,1317,1318]},{"teal":1502,"source":"contracts/stakingPool.algo.ts:393","pc":[1319]},{"teal":1503,"source":"contracts/stakingPool.algo.ts:393","pc":[1320]},{"teal":1504,"source":"contracts/stakingPool.algo.ts:393","pc":[1321]},{"teal":1505,"source":"contracts/stakingPool.algo.ts:393","pc":[1322,1323,1324]},{"teal":1510,"source":"contracts/stakingPool.algo.ts:394","pc":[1325]},{"teal":1515,"source":"contracts/stakingPool.algo.ts:396","pc":[1326]},{"teal":1516,"source":"contracts/stakingPool.algo.ts:396","pc":[1327,1328]},{"teal":1521,"source":"contracts/stakingPool.algo.ts:398","pc":[1329,1330]},{"teal":1522,"source":"contracts/stakingPool.algo.ts:398","pc":[1331]},{"teal":1523,"source":"contracts/stakingPool.algo.ts:398","pc":[1332]},{"teal":1524,"source":"contracts/stakingPool.algo.ts:398","pc":[1333]},{"teal":1525,"source":"contracts/stakingPool.algo.ts:398","pc":[1334,1335,1336]},{"teal":1533,"source":"contracts/stakingPool.algo.ts:399","pc":[1337]},{"teal":1534,"source":"contracts/stakingPool.algo.ts:399","pc":[1338]},{"teal":1535,"source":"contracts/stakingPool.algo.ts:399","pc":[1339,1340]},{"teal":1536,"source":"contracts/stakingPool.algo.ts:399","pc":[1341,1342]},{"teal":1537,"source":"contracts/stakingPool.algo.ts:399","pc":[1343,1344]},{"teal":1541,"source":"contracts/stakingPool.algo.ts:400","pc":[1345]},{"teal":1542,"source":"contracts/stakingPool.algo.ts:400","pc":[1346]},{"teal":1543,"source":"contracts/stakingPool.algo.ts:400","pc":[1347,1348]},{"teal":1547,"source":"contracts/stakingPool.algo.ts:401","pc":[1349]},{"teal":1548,"source":"contracts/stakingPool.algo.ts:401","pc":[1350]},{"teal":1549,"source":"contracts/stakingPool.algo.ts:401","pc":[1351]},{"teal":1550,"source":"contracts/stakingPool.algo.ts:401","pc":[1352,1353]},{"teal":1553,"source":"contracts/stakingPool.algo.ts:399","pc":[1354]},{"teal":1554,"source":"contracts/stakingPool.algo.ts:399","pc":[1355,1356]},{"teal":1557,"source":"contracts/stakingPool.algo.ts:399","pc":[1357]},{"teal":1558,"source":"contracts/stakingPool.algo.ts:399","pc":[1358,1359]},{"teal":1559,"source":"contracts/stakingPool.algo.ts:399","pc":[1360]},{"teal":1560,"source":"contracts/stakingPool.algo.ts:399","pc":[1361]},{"teal":1561,"source":"contracts/stakingPool.algo.ts:399","pc":[1362,1363]},{"teal":1562,"source":"contracts/stakingPool.algo.ts:399","pc":[1364,1365,1366]},{"teal":1563,"source":"contracts/stakingPool.algo.ts:399","pc":[1367,1368]},{"teal":1571,"source":"contracts/stakingPool.algo.ts:406","pc":[1369]},{"teal":1572,"source":"contracts/stakingPool.algo.ts:406","pc":[1370,1371]},{"teal":1573,"source":"contracts/stakingPool.algo.ts:406","pc":[1372,1373]},{"teal":1577,"source":"contracts/stakingPool.algo.ts:407","pc":[1374,1375]},{"teal":1578,"source":"contracts/stakingPool.algo.ts:407","pc":[1376,1377,1378]},{"teal":1579,"source":"contracts/stakingPool.algo.ts:407","pc":[1379]},{"teal":1580,"source":"contracts/stakingPool.algo.ts:407","pc":[1380,1381]},{"teal":1584,"source":"contracts/stakingPool.algo.ts:408","pc":[1382,1383]},{"teal":1585,"source":"contracts/stakingPool.algo.ts:408","pc":[1384,1385]},{"teal":1589,"source":"contracts/stakingPool.algo.ts:409","pc":[1386,1387]},{"teal":1590,"source":"contracts/stakingPool.algo.ts:409","pc":[1388,1389,1390]},{"teal":1591,"source":"contracts/stakingPool.algo.ts:409","pc":[1391]},{"teal":1592,"source":"contracts/stakingPool.algo.ts:409","pc":[1392,1393]},{"teal":1595,"source":"contracts/stakingPool.algo.ts:406","pc":[1394]},{"teal":1596,"source":"contracts/stakingPool.algo.ts:406","pc":[1395,1396]},{"teal":1599,"source":"contracts/stakingPool.algo.ts:406","pc":[1397]},{"teal":1603,"source":"contracts/stakingPool.algo.ts:411","pc":[1398,1399]},{"teal":1604,"source":"contracts/stakingPool.algo.ts:411","pc":[1400,1401,1402]},{"teal":1605,"source":"contracts/stakingPool.algo.ts:411","pc":[1403]},{"teal":1606,"source":"contracts/stakingPool.algo.ts:411","pc":[1404,1405]},{"teal":1610,"source":"contracts/stakingPool.algo.ts:412","pc":[1406,1407]},{"teal":1611,"source":"contracts/stakingPool.algo.ts:412","pc":[1408,1409]},{"teal":1612,"source":"contracts/stakingPool.algo.ts:412","pc":[1410,1411]},{"teal":1613,"source":"contracts/stakingPool.algo.ts:412","pc":[1412,1413]},{"teal":1614,"source":"contracts/stakingPool.algo.ts:398","pc":[1414,1415,1416]},{"teal":1619,"source":"contracts/stakingPool.algo.ts:417","pc":[1417,1418]},{"teal":1620,"source":"contracts/stakingPool.algo.ts:417","pc":[1419,1420,1421]},{"teal":1621,"source":"contracts/stakingPool.algo.ts:417","pc":[1422]},{"teal":1622,"source":"contracts/stakingPool.algo.ts:417","pc":[1423,1424]},{"teal":1626,"source":"contracts/stakingPool.algo.ts:418","pc":[1425,1426]},{"teal":1627,"source":"contracts/stakingPool.algo.ts:418","pc":[1427,1428]},{"teal":1628,"source":"contracts/stakingPool.algo.ts:418","pc":[1429,1430]},{"teal":1629,"source":"contracts/stakingPool.algo.ts:418","pc":[1431,1432]},{"teal":1634,"source":"contracts/stakingPool.algo.ts:422","pc":[1433,1434]},{"teal":1635,"source":"contracts/stakingPool.algo.ts:422","pc":[1435]},{"teal":1636,"source":"contracts/stakingPool.algo.ts:422","pc":[1436]},{"teal":1637,"source":"contracts/stakingPool.algo.ts:422","pc":[1437,1438]},{"teal":1638,"source":"contracts/stakingPool.algo.ts:422","pc":[1439]},{"teal":1639,"source":"contracts/stakingPool.algo.ts:422","pc":[1440,1441]},{"teal":1640,"source":"contracts/stakingPool.algo.ts:422","pc":[1442]},{"teal":1653,"source":"contracts/stakingPool.algo.ts:427","pc":[1443]},{"teal":1654,"source":"contracts/stakingPool.algo.ts:427","pc":[1444]},{"teal":1655,"source":"contracts/stakingPool.algo.ts:427","pc":[1445,1446]},{"teal":1656,"source":"contracts/stakingPool.algo.ts:427","pc":[1447,1448]},{"teal":1657,"source":"contracts/stakingPool.algo.ts:427","pc":[1449,1450]},{"teal":1661,"source":"contracts/stakingPool.algo.ts:428","pc":[1451]},{"teal":1662,"source":"contracts/stakingPool.algo.ts:428","pc":[1452]},{"teal":1663,"source":"contracts/stakingPool.algo.ts:428","pc":[1453,1454]},{"teal":1673,"source":"contracts/stakingPool.algo.ts:430","pc":[1455]},{"teal":1674,"source":"contracts/stakingPool.algo.ts:430","pc":[1456]},{"teal":1675,"source":"contracts/stakingPool.algo.ts:430","pc":[1457]},{"teal":1676,"source":"contracts/stakingPool.algo.ts:430","pc":[1458,1459]},{"teal":1677,"source":"contracts/stakingPool.algo.ts:430","pc":[1460]},{"teal":1678,"source":"contracts/stakingPool.algo.ts:430","pc":[1461]},{"teal":1679,"source":"contracts/stakingPool.algo.ts:430","pc":[1462]},{"teal":1680,"source":"contracts/stakingPool.algo.ts:430","pc":[1463,1464,1465]},{"teal":1681,"source":"contracts/stakingPool.algo.ts:430","pc":[1466]},{"teal":1682,"source":"contracts/stakingPool.algo.ts:430","pc":[1467]},{"teal":1683,"source":"contracts/stakingPool.algo.ts:430","pc":[1468,1469]},{"teal":1684,"source":"contracts/stakingPool.algo.ts:431","pc":[1470,1471]},{"teal":1685,"source":"contracts/stakingPool.algo.ts:431","pc":[1472,1473]},{"teal":1686,"source":"contracts/stakingPool.algo.ts:432","pc":[1474,1475]},{"teal":1687,"source":"contracts/stakingPool.algo.ts:432","pc":[1476,1477]},{"teal":1688,"source":"contracts/stakingPool.algo.ts:433","pc":[1478,1479]},{"teal":1689,"source":"contracts/stakingPool.algo.ts:433","pc":[1480]},{"teal":1690,"source":"contracts/stakingPool.algo.ts:433","pc":[1481,1482]},{"teal":1691,"source":"contracts/stakingPool.algo.ts:434","pc":[1483]},{"teal":1692,"source":"contracts/stakingPool.algo.ts:434","pc":[1484,1485]},{"teal":1693,"source":"contracts/stakingPool.algo.ts:434","pc":[1486]},{"teal":1694,"source":"contracts/stakingPool.algo.ts:434","pc":[1487,1488]},{"teal":1695,"source":"contracts/stakingPool.algo.ts:434","pc":[1489]},{"teal":1696,"source":"contracts/stakingPool.algo.ts:434","pc":[1490,1491]},{"teal":1699,"source":"contracts/stakingPool.algo.ts:427","pc":[1492]},{"teal":1700,"source":"contracts/stakingPool.algo.ts:427","pc":[1493,1494]},{"teal":1703,"source":"contracts/stakingPool.algo.ts:427","pc":[1495]},{"teal":1707,"source":"contracts/stakingPool.algo.ts:437","pc":[1496]},{"teal":1714,"source":"contracts/stakingPool.algo.ts:387","pc":[1497,1498]},{"teal":1715,"source":"contracts/stakingPool.algo.ts:387","pc":[1499]},{"teal":1716,"source":"contracts/stakingPool.algo.ts:387","pc":[1500]},{"teal":1717,"source":"contracts/stakingPool.algo.ts:387","pc":[1501,1502]},{"teal":1718,"source":"contracts/stakingPool.algo.ts:387","pc":[1503,1504,1505]},{"teal":1722,"source":"contracts/stakingPool.algo.ts:440","errorMessage":"account not found","pc":[1506]},{"teal":1723,"source":"contracts/stakingPool.algo.ts:381","pc":[1507]},{"teal":1728,"source":"contracts/stakingPool.algo.ts:450","pc":[1508,1509]},{"teal":1731,"source":"contracts/stakingPool.algo.ts:451","pc":[1510,1511,1512]},{"teal":1732,"source":"contracts/stakingPool.algo.ts:451","pc":[1513]},{"teal":1733,"source":"contracts/stakingPool.algo.ts:451","pc":[1514]},{"teal":1734,"source":"contracts/stakingPool.algo.ts:451","pc":[1515,1516]},{"teal":1735,"source":"contracts/stakingPool.algo.ts:451","pc":[1517]},{"teal":1738,"source":"contracts/stakingPool.algo.ts:451","errorMessage":"argument 0 (staker) for getStakerInfo must be a address","pc":[1518]},{"teal":1741,"source":"contracts/stakingPool.algo.ts:450","pc":[1519,1520,1521]},{"teal":1742,"source":"contracts/stakingPool.algo.ts:450","pc":[1522]},{"teal":1743,"source":"contracts/stakingPool.algo.ts:450","pc":[1523]},{"teal":1744,"source":"contracts/stakingPool.algo.ts:450","pc":[1524]},{"teal":1745,"source":"contracts/stakingPool.algo.ts:450","pc":[1525]},{"teal":1755,"source":"contracts/stakingPool.algo.ts:450","pc":[1526,1527,1528]},{"teal":1758,"source":"contracts/stakingPool.algo.ts:450","pc":[1529]},{"teal":1762,"source":"contracts/stakingPool.algo.ts:452","pc":[1530]},{"teal":1763,"source":"contracts/stakingPool.algo.ts:452","pc":[1531,1532]},{"teal":1768,"source":"contracts/stakingPool.algo.ts:452","pc":[1533,1534]},{"teal":1769,"source":"contracts/stakingPool.algo.ts:452","pc":[1535,1536]},{"teal":1770,"source":"contracts/stakingPool.algo.ts:452","pc":[1537]},{"teal":1771,"source":"contracts/stakingPool.algo.ts:452","pc":[1538,1539,1540]},{"teal":1776,"source":"contracts/stakingPool.algo.ts:453","pc":[1541,1542]},{"teal":1777,"source":"contracts/stakingPool.algo.ts:453","pc":[1543,1544]},{"teal":1778,"source":"contracts/stakingPool.algo.ts:453","pc":[1545]},{"teal":1779,"source":"contracts/stakingPool.algo.ts:453","pc":[1546,1547,1548]},{"teal":1784,"source":"contracts/stakingPool.algo.ts:454","pc":[1549]},{"teal":1785,"source":"contracts/stakingPool.algo.ts:454","pc":[1550]},{"teal":1786,"source":"contracts/stakingPool.algo.ts:454","pc":[1551,1552]},{"teal":1787,"source":"contracts/stakingPool.algo.ts:454","pc":[1553]},{"teal":1788,"source":"contracts/stakingPool.algo.ts:454","pc":[1554,1555]},{"teal":1789,"source":"contracts/stakingPool.algo.ts:454","pc":[1556,1557]},{"teal":1790,"source":"contracts/stakingPool.algo.ts:454","pc":[1558]},{"teal":1791,"source":"contracts/stakingPool.algo.ts:454","pc":[1559,1560]},{"teal":1792,"source":"contracts/stakingPool.algo.ts:454","pc":[1561,1562]},{"teal":1793,"source":"contracts/stakingPool.algo.ts:454","pc":[1563,1564]},{"teal":1794,"source":"contracts/stakingPool.algo.ts:454","pc":[1565,1566]},{"teal":1795,"source":"contracts/stakingPool.algo.ts:454","pc":[1567]},{"teal":1801,"source":"contracts/stakingPool.algo.ts:456","pc":[1568,1569]},{"teal":1802,"source":"contracts/stakingPool.algo.ts:456","pc":[1570]},{"teal":1803,"source":"contracts/stakingPool.algo.ts:456","pc":[1571]},{"teal":1804,"source":"contracts/stakingPool.algo.ts:456","pc":[1572]},{"teal":1805,"source":"contracts/stakingPool.algo.ts:456","pc":[1573]},{"teal":1806,"source":"contracts/stakingPool.algo.ts:456","pc":[1574,1575]},{"teal":1807,"source":"contracts/stakingPool.algo.ts:456","pc":[1576]},{"teal":1808,"source":"contracts/stakingPool.algo.ts:456","pc":[1577,1578]},{"teal":1809,"source":"contracts/stakingPool.algo.ts:456","pc":[1579]},{"teal":1810,"source":"contracts/stakingPool.algo.ts:456","pc":[1580,1581]},{"teal":1811,"source":"contracts/stakingPool.algo.ts:456","pc":[1582]},{"teal":1812,"source":"contracts/stakingPool.algo.ts:456","pc":[1583,1584,1585]},{"teal":1817,"source":"contracts/stakingPool.algo.ts:457","pc":[1586,1587]},{"teal":1818,"source":"contracts/stakingPool.algo.ts:457","pc":[1588]},{"teal":1819,"source":"contracts/stakingPool.algo.ts:457","pc":[1589]},{"teal":1820,"source":"contracts/stakingPool.algo.ts:457","pc":[1590]},{"teal":1821,"source":"contracts/stakingPool.algo.ts:457","pc":[1591]},{"teal":1822,"source":"contracts/stakingPool.algo.ts:457","pc":[1592,1593]},{"teal":1823,"source":"contracts/stakingPool.algo.ts:457","pc":[1594]},{"teal":1824,"source":"contracts/stakingPool.algo.ts:457","pc":[1595,1596,1597]},{"teal":1831,"source":"contracts/stakingPool.algo.ts:452","pc":[1598,1599]},{"teal":1832,"source":"contracts/stakingPool.algo.ts:452","pc":[1600]},{"teal":1833,"source":"contracts/stakingPool.algo.ts:452","pc":[1601]},{"teal":1834,"source":"contracts/stakingPool.algo.ts:452","pc":[1602,1603]},{"teal":1835,"source":"contracts/stakingPool.algo.ts:452","pc":[1604,1605,1606]},{"teal":1839,"source":"contracts/stakingPool.algo.ts:460","errorMessage":"account not found","pc":[1607]},{"teal":1843,"source":"contracts/stakingPool.algo.ts:450","pc":[1608,1609]},{"teal":1844,"source":"contracts/stakingPool.algo.ts:450","pc":[1610]},{"teal":1849,"source":"contracts/stakingPool.algo.ts:473","pc":[1611,1612,1613]},{"teal":1850,"source":"contracts/stakingPool.algo.ts:473","pc":[1614]},{"teal":1853,"source":"contracts/stakingPool.algo.ts:473","pc":[1615,1616,1617]},{"teal":1854,"source":"contracts/stakingPool.algo.ts:473","pc":[1618]},{"teal":1857,"source":"contracts/stakingPool.algo.ts:473","pc":[1619,1620,1621]},{"teal":1858,"source":"contracts/stakingPool.algo.ts:473","pc":[1622]},{"teal":1859,"source":"contracts/stakingPool.algo.ts:473","pc":[1623]},{"teal":1860,"source":"contracts/stakingPool.algo.ts:473","pc":[1624,1625]},{"teal":1861,"source":"contracts/stakingPool.algo.ts:473","pc":[1626]},{"teal":1864,"source":"contracts/stakingPool.algo.ts:473","errorMessage":"argument 2 (staker) for payTokenReward must be a address","pc":[1627]},{"teal":1867,"source":"contracts/stakingPool.algo.ts:473","pc":[1628,1629,1630]},{"teal":1868,"source":"contracts/stakingPool.algo.ts:473","pc":[1631]},{"teal":1869,"source":"contracts/stakingPool.algo.ts:473","pc":[1632]},{"teal":1882,"source":"contracts/stakingPool.algo.ts:473","pc":[1633,1634,1635]},{"teal":1889,"source":"contracts/stakingPool.algo.ts:476","pc":[1636,1637]},{"teal":1890,"source":"contracts/stakingPool.algo.ts:476","pc":[1638]},{"teal":1891,"source":"contracts/stakingPool.algo.ts:476","pc":[1639]},{"teal":1892,"source":"contracts/stakingPool.algo.ts:476","pc":[1640,1641]},{"teal":1893,"source":"contracts/stakingPool.algo.ts:476","pc":[1642]},{"teal":1894,"source":"contracts/stakingPool.algo.ts:476","pc":[1643]},{"teal":1897,"source":"contracts/stakingPool.algo.ts:475","errorMessage":"this can only be called via the validator contract","pc":[1644]},{"teal":1901,"source":"contracts/stakingPool.algo.ts:479","pc":[1645,1646]},{"teal":1902,"source":"contracts/stakingPool.algo.ts:479","pc":[1647]},{"teal":1903,"source":"contracts/stakingPool.algo.ts:479","pc":[1648]},{"teal":1904,"source":"contracts/stakingPool.algo.ts:479","pc":[1649]},{"teal":1907,"source":"contracts/stakingPool.algo.ts:479","errorMessage":"must be pool 1 in order to be called to pay out token rewards","pc":[1650]},{"teal":1911,"source":"contracts/stakingPool.algo.ts:480","pc":[1651,1652]},{"teal":1912,"source":"contracts/stakingPool.algo.ts:480","pc":[1653]},{"teal":1913,"source":"contracts/stakingPool.algo.ts:480","pc":[1654]},{"teal":1916,"source":"contracts/stakingPool.algo.ts:480","errorMessage":"can only claim token rewards from validator that has them","pc":[1655]},{"teal":1924,"source":"contracts/stakingPool.algo.ts:483","pc":[1656]},{"teal":1925,"source":"contracts/stakingPool.algo.ts:483","pc":[1657,1658]},{"teal":1926,"source":"contracts/stakingPool.algo.ts:483","pc":[1659,1660]},{"teal":1930,"source":"contracts/stakingPool.algo.ts:484","pc":[1661,1662]},{"teal":1931,"source":"contracts/stakingPool.algo.ts:484","pc":[1663,1664]},{"teal":1935,"source":"contracts/stakingPool.algo.ts:485","pc":[1665,1666]},{"teal":1936,"source":"contracts/stakingPool.algo.ts:485","pc":[1667,1668]},{"teal":1940,"source":"contracts/stakingPool.algo.ts:486","pc":[1669,1670]},{"teal":1941,"source":"contracts/stakingPool.algo.ts:486","pc":[1671,1672]},{"teal":1944,"source":"contracts/stakingPool.algo.ts:483","pc":[1673]},{"teal":1945,"source":"contracts/stakingPool.algo.ts:483","pc":[1674,1675]},{"teal":1948,"source":"contracts/stakingPool.algo.ts:483","pc":[1676]},{"teal":1949,"source":"contracts/stakingPool.algo.ts:473","pc":[1677]},{"teal":1954,"source":"contracts/stakingPool.algo.ts:499","pc":[1678,1679,1680]},{"teal":1955,"source":"contracts/stakingPool.algo.ts:499","pc":[1681,1682,1683]},{"teal":1958,"source":"contracts/stakingPool.algo.ts:499","pc":[1684,1685,1686]},{"teal":1959,"source":"contracts/stakingPool.algo.ts:499","pc":[1687]},{"teal":1960,"source":"contracts/stakingPool.algo.ts:499","pc":[1688]},{"teal":1972,"source":"contracts/stakingPool.algo.ts:499","pc":[1689,1690,1691]},{"teal":1976,"source":"contracts/stakingPool.algo.ts:500","pc":[1692,1693,1694]},{"teal":1979,"source":"contracts/stakingPool.algo.ts:500","errorMessage":"can only be called by owner or manager of validator","pc":[1695]},{"teal":1983,"source":"contracts/stakingPool.algo.ts:501","pc":[1696,1697,1698,1699,1700,1701,1702,1703,1704,1705]},{"teal":1984,"source":"contracts/stakingPool.algo.ts:501","pc":[1706,1707]},{"teal":1985,"source":"contracts/stakingPool.algo.ts:501","pc":[1708]},{"teal":1986,"source":"contracts/stakingPool.algo.ts:499","pc":[1709]},{"teal":1991,"source":"contracts/stakingPool.algo.ts:512","pc":[1710,1711,1712]},{"teal":1992,"source":"contracts/stakingPool.algo.ts:512","pc":[1713]},{"teal":1993,"source":"contracts/stakingPool.algo.ts:512","pc":[1714]},{"teal":2004,"source":"contracts/stakingPool.algo.ts:512","pc":[1715,1716,1717]},{"teal":2007,"source":"contracts/stakingPool.algo.ts:512","pc":[1718]},{"teal":2008,"source":"contracts/stakingPool.algo.ts:512","pc":[1719,1720]},{"teal":2015,"source":"contracts/stakingPool.algo.ts:514","pc":[1721]},{"teal":2016,"source":"contracts/stakingPool.algo.ts:514","pc":[1722]},{"teal":2017,"source":"contracts/stakingPool.algo.ts:514","pc":[1723,1724]},{"teal":2018,"source":"contracts/stakingPool.algo.ts:514","pc":[1725,1726]},{"teal":2019,"source":"contracts/stakingPool.algo.ts:514","pc":[1727,1728]},{"teal":2023,"source":"contracts/stakingPool.algo.ts:515","pc":[1729]},{"teal":2024,"source":"contracts/stakingPool.algo.ts:515","pc":[1730]},{"teal":2025,"source":"contracts/stakingPool.algo.ts:515","pc":[1731,1732]},{"teal":2029,"source":"contracts/stakingPool.algo.ts:516","pc":[1733]},{"teal":2030,"source":"contracts/stakingPool.algo.ts:516","pc":[1734]},{"teal":2031,"source":"contracts/stakingPool.algo.ts:516","pc":[1735]},{"teal":2032,"source":"contracts/stakingPool.algo.ts:516","pc":[1736,1737]},{"teal":2035,"source":"contracts/stakingPool.algo.ts:514","pc":[1738]},{"teal":2036,"source":"contracts/stakingPool.algo.ts:514","pc":[1739,1740]},{"teal":2039,"source":"contracts/stakingPool.algo.ts:514","pc":[1741]},{"teal":2040,"source":"contracts/stakingPool.algo.ts:514","pc":[1742,1743]},{"teal":2041,"source":"contracts/stakingPool.algo.ts:514","pc":[1744]},{"teal":2042,"source":"contracts/stakingPool.algo.ts:514","pc":[1745]},{"teal":2043,"source":"contracts/stakingPool.algo.ts:514","pc":[1746,1747]},{"teal":2044,"source":"contracts/stakingPool.algo.ts:514","pc":[1748,1749,1750]},{"teal":2045,"source":"contracts/stakingPool.algo.ts:514","pc":[1751,1752]},{"teal":2049,"source":"contracts/stakingPool.algo.ts:523","pc":[1753,1754]},{"teal":2050,"source":"contracts/stakingPool.algo.ts:523","pc":[1755,1756,1757]},{"teal":2051,"source":"contracts/stakingPool.algo.ts:523","pc":[1758]},{"teal":2052,"source":"contracts/stakingPool.algo.ts:523","pc":[1759,1760]},{"teal":2056,"source":"contracts/stakingPool.algo.ts:524","pc":[1761,1762]},{"teal":2057,"source":"contracts/stakingPool.algo.ts:524","pc":[1763,1764]},{"teal":2061,"source":"contracts/stakingPool.algo.ts:525","pc":[1765,1766]},{"teal":2062,"source":"contracts/stakingPool.algo.ts:525","pc":[1767,1768]},{"teal":2063,"source":"contracts/stakingPool.algo.ts:525","pc":[1769,1770]},{"teal":2064,"source":"contracts/stakingPool.algo.ts:525","pc":[1771]},{"teal":2065,"source":"contracts/stakingPool.algo.ts:525","pc":[1772]},{"teal":2066,"source":"contracts/stakingPool.algo.ts:525","pc":[1773,1774]},{"teal":2070,"source":"contracts/stakingPool.algo.ts:528","pc":[1775,1776]},{"teal":2071,"source":"contracts/stakingPool.algo.ts:528","pc":[1777]},{"teal":2072,"source":"contracts/stakingPool.algo.ts:528","pc":[1778,1779]},{"teal":2073,"source":"contracts/stakingPool.algo.ts:528","pc":[1780]},{"teal":2074,"source":"contracts/stakingPool.algo.ts:528","pc":[1781,1782]},{"teal":2075,"source":"contracts/stakingPool.algo.ts:528","pc":[1783]},{"teal":2076,"source":"contracts/stakingPool.algo.ts:528","pc":[1784]},{"teal":2077,"source":"contracts/stakingPool.algo.ts:528","pc":[1785,1786]},{"teal":2081,"source":"contracts/stakingPool.algo.ts:530","pc":[1787,1788]},{"teal":2082,"source":"contracts/stakingPool.algo.ts:530","pc":[1789,1790]},{"teal":2083,"source":"contracts/stakingPool.algo.ts:530","pc":[1791]},{"teal":2086,"source":"contracts/stakingPool.algo.ts:530","errorMessage":"can't call epochBalanceUpdate in same epoch as prior call","pc":[1792]},{"teal":2090,"source":"contracts/stakingPool.algo.ts:532","pc":[1793,1794,1795]},{"teal":2094,"source":"contracts/stakingPool.algo.ts:535","pc":[1796,1797]},{"teal":2095,"source":"contracts/stakingPool.algo.ts:535","pc":[1798,1799]},{"teal":2096,"source":"contracts/stakingPool.algo.ts:535","pc":[1800]},{"teal":2100,"source":"contracts/stakingPool.algo.ts:536","pc":[1801,1802]},{"teal":2101,"source":"contracts/stakingPool.algo.ts:536","pc":[1803]},{"teal":2102,"source":"contracts/stakingPool.algo.ts:536","pc":[1804]},{"teal":2103,"source":"contracts/stakingPool.algo.ts:536","pc":[1805]},{"teal":2104,"source":"contracts/stakingPool.algo.ts:536","pc":[1806,1807]},{"teal":2105,"source":"contracts/stakingPool.algo.ts:536","pc":[1808]},{"teal":2106,"source":"contracts/stakingPool.algo.ts:536","pc":[1809]},{"teal":2110,"source":"contracts/stakingPool.algo.ts:541","pc":[1810,1811]},{"teal":2111,"source":"contracts/stakingPool.algo.ts:541","pc":[1812,1813,1814]},{"teal":2112,"source":"contracts/stakingPool.algo.ts:541","pc":[1815]},{"teal":2113,"source":"contracts/stakingPool.algo.ts:541","pc":[1816]},{"teal":2114,"source":"contracts/stakingPool.algo.ts:541","pc":[1817]},{"teal":2115,"source":"contracts/stakingPool.algo.ts:541","pc":[1818,1819]},{"teal":2119,"source":"contracts/stakingPool.algo.ts:542","pc":[1820,1821,1822]},{"teal":2120,"source":"contracts/stakingPool.algo.ts:542","pc":[1823,1824]},{"teal":2124,"source":"contracts/stakingPool.algo.ts:543","pc":[1825,1826]},{"teal":2125,"source":"contracts/stakingPool.algo.ts:543","pc":[1827,1828]},{"teal":2130,"source":"contracts/stakingPool.algo.ts:548","pc":[1829,1830]},{"teal":2131,"source":"contracts/stakingPool.algo.ts:548","pc":[1831,1832,1833]},{"teal":2137,"source":"contracts/stakingPool.algo.ts:549","pc":[1834,1835]},{"teal":2138,"source":"contracts/stakingPool.algo.ts:549","pc":[1836]},{"teal":2139,"source":"contracts/stakingPool.algo.ts:549","pc":[1837]},{"teal":2140,"source":"contracts/stakingPool.algo.ts:549","pc":[1838]},{"teal":2141,"source":"contracts/stakingPool.algo.ts:549","pc":[1839,1840,1841]},{"teal":2149,"source":"contracts/stakingPool.algo.ts:551","pc":[1842]},{"teal":2150,"source":"contracts/stakingPool.algo.ts:551","pc":[1843]},{"teal":2151,"source":"contracts/stakingPool.algo.ts:551","pc":[1844,1845]},{"teal":2152,"source":"contracts/stakingPool.algo.ts:551","pc":[1846,1847]},{"teal":2153,"source":"contracts/stakingPool.algo.ts:551","pc":[1848,1849]},{"teal":2157,"source":"contracts/stakingPool.algo.ts:552","pc":[1850]},{"teal":2158,"source":"contracts/stakingPool.algo.ts:552","pc":[1851]},{"teal":2159,"source":"contracts/stakingPool.algo.ts:552","pc":[1852,1853]},{"teal":2163,"source":"contracts/stakingPool.algo.ts:553","pc":[1854]},{"teal":2164,"source":"contracts/stakingPool.algo.ts:553","pc":[1855]},{"teal":2165,"source":"contracts/stakingPool.algo.ts:553","pc":[1856]},{"teal":2166,"source":"contracts/stakingPool.algo.ts:553","pc":[1857,1858]},{"teal":2167,"source":"contracts/stakingPool.algo.ts:553","pc":[1859,1860,1861,1862,1863,1864,1865,1866,1867,1868]},{"teal":2168,"source":"contracts/stakingPool.algo.ts:553","pc":[1869,1870]},{"teal":2171,"source":"contracts/stakingPool.algo.ts:551","pc":[1871]},{"teal":2172,"source":"contracts/stakingPool.algo.ts:551","pc":[1872,1873]},{"teal":2175,"source":"contracts/stakingPool.algo.ts:551","pc":[1874]},{"teal":2176,"source":"contracts/stakingPool.algo.ts:551","pc":[1875,1876]},{"teal":2177,"source":"contracts/stakingPool.algo.ts:551","pc":[1877]},{"teal":2178,"source":"contracts/stakingPool.algo.ts:551","pc":[1878]},{"teal":2179,"source":"contracts/stakingPool.algo.ts:551","pc":[1879,1880]},{"teal":2180,"source":"contracts/stakingPool.algo.ts:551","pc":[1881,1882,1883]},{"teal":2181,"source":"contracts/stakingPool.algo.ts:551","pc":[1884]},{"teal":2182,"source":"contracts/stakingPool.algo.ts:551","pc":[1885,1886]},{"teal":2186,"source":"contracts/stakingPool.algo.ts:555","pc":[1887,1888]},{"teal":2187,"source":"contracts/stakingPool.algo.ts:555","pc":[1889,1890]},{"teal":2188,"source":"contracts/stakingPool.algo.ts:555","pc":[1891]},{"teal":2189,"source":"contracts/stakingPool.algo.ts:555","pc":[1892,1893]},{"teal":2195,"source":"contracts/stakingPool.algo.ts:560","pc":[1894,1895]},{"teal":2196,"source":"contracts/stakingPool.algo.ts:560","pc":[1896]},{"teal":2197,"source":"contracts/stakingPool.algo.ts:560","pc":[1897]},{"teal":2198,"source":"contracts/stakingPool.algo.ts:560","pc":[1898]},{"teal":2199,"source":"contracts/stakingPool.algo.ts:560","pc":[1899,1900,1901]},{"teal":2207,"source":"contracts/stakingPool.algo.ts:561","pc":[1902]},{"teal":2208,"source":"contracts/stakingPool.algo.ts:561","pc":[1903]},{"teal":2209,"source":"contracts/stakingPool.algo.ts:561","pc":[1904,1905]},{"teal":2210,"source":"contracts/stakingPool.algo.ts:561","pc":[1906,1907]},{"teal":2211,"source":"contracts/stakingPool.algo.ts:561","pc":[1908,1909]},{"teal":2215,"source":"contracts/stakingPool.algo.ts:562","pc":[1910]},{"teal":2216,"source":"contracts/stakingPool.algo.ts:562","pc":[1911]},{"teal":2217,"source":"contracts/stakingPool.algo.ts:562","pc":[1912,1913]},{"teal":2221,"source":"contracts/stakingPool.algo.ts:563","pc":[1914]},{"teal":2222,"source":"contracts/stakingPool.algo.ts:563","pc":[1915]},{"teal":2223,"source":"contracts/stakingPool.algo.ts:563","pc":[1916]},{"teal":2224,"source":"contracts/stakingPool.algo.ts:563","pc":[1917,1918]},{"teal":2227,"source":"contracts/stakingPool.algo.ts:561","pc":[1919]},{"teal":2228,"source":"contracts/stakingPool.algo.ts:561","pc":[1920,1921]},{"teal":2231,"source":"contracts/stakingPool.algo.ts:561","pc":[1922]},{"teal":2232,"source":"contracts/stakingPool.algo.ts:561","pc":[1923,1924]},{"teal":2233,"source":"contracts/stakingPool.algo.ts:561","pc":[1925]},{"teal":2234,"source":"contracts/stakingPool.algo.ts:561","pc":[1926]},{"teal":2235,"source":"contracts/stakingPool.algo.ts:561","pc":[1927,1928]},{"teal":2236,"source":"contracts/stakingPool.algo.ts:561","pc":[1929,1930,1931]},{"teal":2237,"source":"contracts/stakingPool.algo.ts:561","pc":[1932,1933]},{"teal":2238,"source":"contracts/stakingPool.algo.ts:560","pc":[1934,1935,1936]},{"teal":2246,"source":"contracts/stakingPool.algo.ts:567","pc":[1937]},{"teal":2247,"source":"contracts/stakingPool.algo.ts:567","pc":[1938]},{"teal":2248,"source":"contracts/stakingPool.algo.ts:567","pc":[1939,1940]},{"teal":2249,"source":"contracts/stakingPool.algo.ts:567","pc":[1941,1942]},{"teal":2250,"source":"contracts/stakingPool.algo.ts:567","pc":[1943,1944]},{"teal":2254,"source":"contracts/stakingPool.algo.ts:568","pc":[1945,1946]},{"teal":2255,"source":"contracts/stakingPool.algo.ts:568","pc":[1947,1948]},{"teal":2259,"source":"contracts/stakingPool.algo.ts:569","pc":[1949]},{"teal":2260,"source":"contracts/stakingPool.algo.ts:569","pc":[1950]},{"teal":2261,"source":"contracts/stakingPool.algo.ts:569","pc":[1951]},{"teal":2262,"source":"contracts/stakingPool.algo.ts:569","pc":[1952,1953]},{"teal":2263,"source":"contracts/stakingPool.algo.ts:569","pc":[1954]},{"teal":2264,"source":"contracts/stakingPool.algo.ts:569","pc":[1955]},{"teal":2265,"source":"contracts/stakingPool.algo.ts:569","pc":[1956]},{"teal":2266,"source":"contracts/stakingPool.algo.ts:569","pc":[1957,1958,1959]},{"teal":2267,"source":"contracts/stakingPool.algo.ts:569","pc":[1960]},{"teal":2268,"source":"contracts/stakingPool.algo.ts:569","pc":[1961]},{"teal":2269,"source":"contracts/stakingPool.algo.ts:569","pc":[1962,1963]},{"teal":2272,"source":"contracts/stakingPool.algo.ts:567","pc":[1964]},{"teal":2273,"source":"contracts/stakingPool.algo.ts:567","pc":[1965,1966]},{"teal":2276,"source":"contracts/stakingPool.algo.ts:567","pc":[1967]},{"teal":2277,"source":"contracts/stakingPool.algo.ts:567","pc":[1968,1969]},{"teal":2278,"source":"contracts/stakingPool.algo.ts:567","pc":[1970]},{"teal":2279,"source":"contracts/stakingPool.algo.ts:567","pc":[1971]},{"teal":2280,"source":"contracts/stakingPool.algo.ts:567","pc":[1972,1973]},{"teal":2281,"source":"contracts/stakingPool.algo.ts:567","pc":[1974,1975,1976]},{"teal":2282,"source":"contracts/stakingPool.algo.ts:567","pc":[1977,1978]},{"teal":2292,"source":"contracts/stakingPool.algo.ts:576","pc":[1979]},{"teal":2293,"source":"contracts/stakingPool.algo.ts:576","pc":[1980]},{"teal":2294,"source":"contracts/stakingPool.algo.ts:576","pc":[1981,1982]},{"teal":2295,"source":"contracts/stakingPool.algo.ts:576","pc":[1983,1984,1985,1986,1987,1988]},{"teal":2296,"source":"contracts/stakingPool.algo.ts:576","pc":[1989,1990]},{"teal":2300,"source":"contracts/stakingPool.algo.ts:577","pc":[1991]},{"teal":2301,"source":"contracts/stakingPool.algo.ts:577","pc":[1992]},{"teal":2302,"source":"contracts/stakingPool.algo.ts:577","pc":[1993,1994]},{"teal":2306,"source":"contracts/stakingPool.algo.ts:578","pc":[1995]},{"teal":2307,"source":"contracts/stakingPool.algo.ts:578","pc":[1996]},{"teal":2308,"source":"contracts/stakingPool.algo.ts:578","pc":[1997]},{"teal":2309,"source":"contracts/stakingPool.algo.ts:578","pc":[1998,1999]},{"teal":2312,"source":"contracts/stakingPool.algo.ts:576","pc":[2000]},{"teal":2313,"source":"contracts/stakingPool.algo.ts:576","pc":[2001,2002]},{"teal":2316,"source":"contracts/stakingPool.algo.ts:576","pc":[2003]},{"teal":2317,"source":"contracts/stakingPool.algo.ts:576","pc":[2004,2005]},{"teal":2318,"source":"contracts/stakingPool.algo.ts:576","pc":[2006]},{"teal":2319,"source":"contracts/stakingPool.algo.ts:576","pc":[2007]},{"teal":2320,"source":"contracts/stakingPool.algo.ts:576","pc":[2008,2009]},{"teal":2321,"source":"contracts/stakingPool.algo.ts:576","pc":[2010,2011,2012]},{"teal":2322,"source":"contracts/stakingPool.algo.ts:576","pc":[2013,2014]},{"teal":2326,"source":"contracts/stakingPool.algo.ts:580","pc":[2015,2016]},{"teal":2327,"source":"contracts/stakingPool.algo.ts:580","pc":[2017,2018,2019]},{"teal":2328,"source":"contracts/stakingPool.algo.ts:580","pc":[2020]},{"teal":2329,"source":"contracts/stakingPool.algo.ts:580","pc":[2021,2022]},{"teal":2333,"source":"contracts/stakingPool.algo.ts:586","pc":[2023,2024]},{"teal":2334,"source":"contracts/stakingPool.algo.ts:586","pc":[2025,2026]},{"teal":2335,"source":"contracts/stakingPool.algo.ts:586","pc":[2027]},{"teal":2336,"source":"contracts/stakingPool.algo.ts:586","pc":[2028,2029]},{"teal":2337,"source":"contracts/stakingPool.algo.ts:586","pc":[2030]},{"teal":2338,"source":"contracts/stakingPool.algo.ts:586","pc":[2031]},{"teal":2339,"source":"contracts/stakingPool.algo.ts:586","pc":[2032,2033]},{"teal":2340,"source":"contracts/stakingPool.algo.ts:586","pc":[2034,2035]},{"teal":2341,"source":"contracts/stakingPool.algo.ts:586","pc":[2036]},{"teal":2342,"source":"contracts/stakingPool.algo.ts:586","pc":[2037]},{"teal":2343,"source":"contracts/stakingPool.algo.ts:586","pc":[2038,2039]},{"teal":2347,"source":"contracts/stakingPool.algo.ts:587","pc":[2040]},{"teal":2348,"source":"contracts/stakingPool.algo.ts:587","pc":[2041,2042]},{"teal":2352,"source":"contracts/stakingPool.algo.ts:588","pc":[2043,2044,2045]},{"teal":2353,"source":"contracts/stakingPool.algo.ts:588","pc":[2046,2047]},{"teal":2358,"source":"contracts/stakingPool.algo.ts:596","pc":[2048,2049]},{"teal":2359,"source":"contracts/stakingPool.algo.ts:596","pc":[2050,2051,2052]},{"teal":2360,"source":"contracts/stakingPool.algo.ts:596","pc":[2053]},{"teal":2361,"source":"contracts/stakingPool.algo.ts:596","pc":[2054,2055]},{"teal":2362,"source":"contracts/stakingPool.algo.ts:596","pc":[2056]},{"teal":2363,"source":"contracts/stakingPool.algo.ts:596","pc":[2057,2058,2059]},{"teal":2368,"source":"contracts/stakingPool.algo.ts:597","pc":[2060]},{"teal":2369,"source":"contracts/stakingPool.algo.ts:597","pc":[2061,2062]},{"teal":2374,"source":"contracts/stakingPool.algo.ts:603","pc":[2063]},{"teal":2375,"source":"contracts/stakingPool.algo.ts:603","pc":[2064,2065]},{"teal":2379,"source":"contracts/stakingPool.algo.ts:604","pc":[2066]},{"teal":2380,"source":"contracts/stakingPool.algo.ts:604","pc":[2067,2068]},{"teal":2384,"source":"contracts/stakingPool.algo.ts:605","pc":[2069]},{"teal":2385,"source":"contracts/stakingPool.algo.ts:605","pc":[2070,2071]},{"teal":2389,"source":"contracts/stakingPool.algo.ts:606","pc":[2072]},{"teal":2390,"source":"contracts/stakingPool.algo.ts:606","pc":[2073,2074]},{"teal":2395,"source":"contracts/stakingPool.algo.ts:607","pc":[2075,2076]},{"teal":2396,"source":"contracts/stakingPool.algo.ts:607","pc":[2077,2078,2079]},{"teal":2402,"source":"contracts/stakingPool.algo.ts:609","pc":[2080,2081]},{"teal":2403,"source":"contracts/stakingPool.algo.ts:609","pc":[2082,2083]},{"teal":2404,"source":"contracts/stakingPool.algo.ts:609","pc":[2084,2085,2086]},{"teal":2405,"source":"contracts/stakingPool.algo.ts:609","pc":[2087]},{"teal":2406,"source":"contracts/stakingPool.algo.ts:609","pc":[2088,2089]},{"teal":2407,"source":"contracts/stakingPool.algo.ts:609","pc":[2090]},{"teal":2408,"source":"contracts/stakingPool.algo.ts:609","pc":[2091,2092]},{"teal":2409,"source":"contracts/stakingPool.algo.ts:609","pc":[2093]},{"teal":2410,"source":"contracts/stakingPool.algo.ts:608","pc":[2094,2095]},{"teal":2415,"source":"contracts/stakingPool.algo.ts:613","pc":[2096,2097]},{"teal":2416,"source":"contracts/stakingPool.algo.ts:613","pc":[2098,2099]},{"teal":2417,"source":"contracts/stakingPool.algo.ts:613","pc":[2100,2101,2102]},{"teal":2418,"source":"contracts/stakingPool.algo.ts:613","pc":[2103]},{"teal":2419,"source":"contracts/stakingPool.algo.ts:613","pc":[2104]},{"teal":2420,"source":"contracts/stakingPool.algo.ts:613","pc":[2105,2106,2107]},{"teal":2425,"source":"contracts/stakingPool.algo.ts:619","pc":[2108,2109]},{"teal":2426,"source":"contracts/stakingPool.algo.ts:619","pc":[2110]},{"teal":2427,"source":"contracts/stakingPool.algo.ts:619","pc":[2111,2112]},{"teal":2428,"source":"contracts/stakingPool.algo.ts:619","pc":[2113]},{"teal":2429,"source":"contracts/stakingPool.algo.ts:619","pc":[2114]},{"teal":2430,"source":"contracts/stakingPool.algo.ts:619","pc":[2115]},{"teal":2431,"source":"contracts/stakingPool.algo.ts:619","pc":[2116,2117]},{"teal":2432,"source":"contracts/stakingPool.algo.ts:619","pc":[2118]},{"teal":2433,"source":"contracts/stakingPool.algo.ts:619","pc":[2119]},{"teal":2434,"source":"contracts/stakingPool.algo.ts:619","pc":[2120,2121]},{"teal":2435,"source":"contracts/stakingPool.algo.ts:619","pc":[2122]},{"teal":2436,"source":"contracts/stakingPool.algo.ts:619","pc":[2123]},{"teal":2437,"source":"contracts/stakingPool.algo.ts:619","pc":[2124,2125]},{"teal":2441,"source":"contracts/stakingPool.algo.ts:622","pc":[2126,2127]},{"teal":2442,"source":"contracts/stakingPool.algo.ts:622","pc":[2128,2129,2130]},{"teal":2443,"source":"contracts/stakingPool.algo.ts:622","pc":[2131]},{"teal":2444,"source":"contracts/stakingPool.algo.ts:622","pc":[2132,2133]},{"teal":2445,"source":"contracts/stakingPool.algo.ts:622","pc":[2134]},{"teal":2446,"source":"contracts/stakingPool.algo.ts:622","pc":[2135]},{"teal":2447,"source":"contracts/stakingPool.algo.ts:622","pc":[2136,2137]},{"teal":2448,"source":"contracts/stakingPool.algo.ts:622","pc":[2138]},{"teal":2449,"source":"contracts/stakingPool.algo.ts:622","pc":[2139]},{"teal":2450,"source":"contracts/stakingPool.algo.ts:622","pc":[2140]},{"teal":2451,"source":"contracts/stakingPool.algo.ts:622","pc":[2141]},{"teal":2452,"source":"contracts/stakingPool.algo.ts:622","pc":[2142]},{"teal":2455,"source":"contracts/stakingPool.algo.ts:622","errorMessage":"wideRatio failed","pc":[2143]},{"teal":2456,"source":"contracts/stakingPool.algo.ts:622","pc":[2144,2145]},{"teal":2464,"source":"contracts/stakingPool.algo.ts:625","pc":[2146,2147]},{"teal":2465,"source":"contracts/stakingPool.algo.ts:625","pc":[2148]},{"teal":2466,"source":"contracts/stakingPool.algo.ts:625","pc":[2149]},{"teal":2467,"source":"contracts/stakingPool.algo.ts:625","pc":[2150,2151,2152]},{"teal":2473,"source":"contracts/stakingPool.algo.ts:630","pc":[2153,2154]},{"teal":2474,"source":"contracts/stakingPool.algo.ts:630","pc":[2155,2156]},{"teal":2475,"source":"contracts/stakingPool.algo.ts:630","pc":[2157]},{"teal":2476,"source":"contracts/stakingPool.algo.ts:630","pc":[2158,2159,2160]},{"teal":2481,"source":"contracts/stakingPool.algo.ts:631","pc":[2161,2162,2163,2164,2165,2166,2167,2168,2169,2170,2171,2172,2173,2174,2175,2176,2177,2178,2179,2180,2181,2182,2183,2184]},{"teal":2482,"source":"contracts/stakingPool.algo.ts:631","pc":[2185]},{"teal":2486,"source":"contracts/stakingPool.algo.ts:632","pc":[2186]},{"teal":2494,"source":"contracts/stakingPool.algo.ts:636","pc":[2187,2188]},{"teal":2495,"source":"contracts/stakingPool.algo.ts:636","pc":[2189,2190,2191]},{"teal":2503,"source":"contracts/stakingPool.algo.ts:643","pc":[2192,2193]},{"teal":2504,"source":"contracts/stakingPool.algo.ts:643","pc":[2194,2195]},{"teal":2505,"source":"contracts/stakingPool.algo.ts:643","pc":[2196,2197,2198]},{"teal":2506,"source":"contracts/stakingPool.algo.ts:643","pc":[2199]},{"teal":2507,"source":"contracts/stakingPool.algo.ts:642","pc":[2200]},{"teal":2508,"source":"contracts/stakingPool.algo.ts:642","pc":[2201]},{"teal":2509,"source":"contracts/stakingPool.algo.ts:644","pc":[2202,2203]},{"teal":2510,"source":"contracts/stakingPool.algo.ts:642","pc":[2204]},{"teal":2511,"source":"contracts/stakingPool.algo.ts:642","pc":[2205]},{"teal":2512,"source":"contracts/stakingPool.algo.ts:642","pc":[2206]},{"teal":2513,"source":"contracts/stakingPool.algo.ts:642","pc":[2207]},{"teal":2514,"source":"contracts/stakingPool.algo.ts:642","pc":[2208]},{"teal":2517,"source":"contracts/stakingPool.algo.ts:642","errorMessage":"wideRatio failed","pc":[2209]},{"teal":2518,"source":"contracts/stakingPool.algo.ts:642","pc":[2210,2211]},{"teal":2522,"source":"contracts/stakingPool.algo.ts:647","pc":[2212,2213]},{"teal":2523,"source":"contracts/stakingPool.algo.ts:647","pc":[2214,2215]},{"teal":2524,"source":"contracts/stakingPool.algo.ts:647","pc":[2216]},{"teal":2525,"source":"contracts/stakingPool.algo.ts:647","pc":[2217]},{"teal":2526,"source":"contracts/stakingPool.algo.ts:647","pc":[2218,2219]},{"teal":2527,"source":"contracts/stakingPool.algo.ts:647","pc":[2220,2221,2222]},{"teal":2528,"source":"contracts/stakingPool.algo.ts:647","pc":[2223]},{"teal":2529,"source":"contracts/stakingPool.algo.ts:647","pc":[2224]},{"teal":2530,"source":"contracts/stakingPool.algo.ts:647","pc":[2225]},{"teal":2531,"source":"contracts/stakingPool.algo.ts:647","pc":[2226]},{"teal":2532,"source":"contracts/stakingPool.algo.ts:647","pc":[2227]},{"teal":2533,"source":"contracts/stakingPool.algo.ts:647","pc":[2228]},{"teal":2536,"source":"contracts/stakingPool.algo.ts:647","errorMessage":"wideRatio failed","pc":[2229]},{"teal":2537,"source":"contracts/stakingPool.algo.ts:647","pc":[2230,2231]},{"teal":2542,"source":"contracts/stakingPool.algo.ts:649","pc":[2232,2233]},{"teal":2543,"source":"contracts/stakingPool.algo.ts:649","pc":[2234,2235]},{"teal":2544,"source":"contracts/stakingPool.algo.ts:649","pc":[2236,2237]},{"teal":2545,"source":"contracts/stakingPool.algo.ts:649","pc":[2238]},{"teal":2546,"source":"contracts/stakingPool.algo.ts:649","pc":[2239]},{"teal":2547,"source":"contracts/stakingPool.algo.ts:649","pc":[2240,2241,2242]},{"teal":2552,"source":"contracts/stakingPool.algo.ts:650","pc":[2243,2244]},{"teal":2553,"source":"contracts/stakingPool.algo.ts:650","pc":[2245,2246]},{"teal":2554,"source":"contracts/stakingPool.algo.ts:650","pc":[2247]},{"teal":2555,"source":"contracts/stakingPool.algo.ts:650","pc":[2248,2249]},{"teal":2560,"source":"contracts/stakingPool.algo.ts:653","pc":[2250,2251]},{"teal":2561,"source":"contracts/stakingPool.algo.ts:653","pc":[2252,2253]},{"teal":2562,"source":"contracts/stakingPool.algo.ts:653","pc":[2254]},{"teal":2563,"source":"contracts/stakingPool.algo.ts:653","pc":[2255,2256]},{"teal":2571,"source":"contracts/stakingPool.algo.ts:654","pc":[2257]},{"teal":2572,"source":"contracts/stakingPool.algo.ts:654","pc":[2258]},{"teal":2573,"source":"contracts/stakingPool.algo.ts:654","pc":[2259,2260]},{"teal":2577,"source":"contracts/stakingPool.algo.ts:655","pc":[2261,2262]},{"teal":2578,"source":"contracts/stakingPool.algo.ts:655","pc":[2263,2264]},{"teal":2582,"source":"contracts/stakingPool.algo.ts:656","pc":[2265,2266]},{"teal":2583,"source":"contracts/stakingPool.algo.ts:656","pc":[2267]},{"teal":2584,"source":"contracts/stakingPool.algo.ts:656","pc":[2268]},{"teal":2585,"source":"contracts/stakingPool.algo.ts:656","pc":[2269,2270]},{"teal":2586,"source":"contracts/stakingPool.algo.ts:656","pc":[2271,2272]},{"teal":2590,"source":"contracts/stakingPool.algo.ts:657","pc":[2273,2274,2275,2276,2277,2278,2279,2280,2281,2282,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308]},{"teal":2591,"source":"contracts/stakingPool.algo.ts:657","pc":[2309,2310]},{"teal":2594,"source":"contracts/stakingPool.algo.ts:654","pc":[2311]},{"teal":2595,"source":"contracts/stakingPool.algo.ts:654","pc":[2312,2313]},{"teal":2598,"source":"contracts/stakingPool.algo.ts:654","pc":[2314]},{"teal":2602,"source":"contracts/stakingPool.algo.ts:660","pc":[2315,2316]},{"teal":2603,"source":"contracts/stakingPool.algo.ts:660","pc":[2317,2318]},{"teal":2604,"source":"contracts/stakingPool.algo.ts:636","pc":[2319,2320,2321]},{"teal":2609,"source":"contracts/stakingPool.algo.ts:661","pc":[2322,2323]},{"teal":2610,"source":"contracts/stakingPool.algo.ts:661","pc":[2324,2325,2326]},{"teal":2611,"source":"contracts/stakingPool.algo.ts:661","pc":[2327]},{"teal":2612,"source":"contracts/stakingPool.algo.ts:661","pc":[2328]},{"teal":2613,"source":"contracts/stakingPool.algo.ts:661","pc":[2329]},{"teal":2614,"source":"contracts/stakingPool.algo.ts:661","pc":[2330,2331,2332]},{"teal":2622,"source":"contracts/stakingPool.algo.ts:665","pc":[2333,2334]},{"teal":2623,"source":"contracts/stakingPool.algo.ts:665","pc":[2335,2336]},{"teal":2624,"source":"contracts/stakingPool.algo.ts:665","pc":[2337,2338,2339]},{"teal":2625,"source":"contracts/stakingPool.algo.ts:665","pc":[2340]},{"teal":2626,"source":"contracts/stakingPool.algo.ts:664","pc":[2341]},{"teal":2627,"source":"contracts/stakingPool.algo.ts:664","pc":[2342]},{"teal":2628,"source":"contracts/stakingPool.algo.ts:666","pc":[2343,2344]},{"teal":2629,"source":"contracts/stakingPool.algo.ts:664","pc":[2345]},{"teal":2630,"source":"contracts/stakingPool.algo.ts:664","pc":[2346]},{"teal":2631,"source":"contracts/stakingPool.algo.ts:664","pc":[2347]},{"teal":2632,"source":"contracts/stakingPool.algo.ts:664","pc":[2348]},{"teal":2633,"source":"contracts/stakingPool.algo.ts:664","pc":[2349]},{"teal":2636,"source":"contracts/stakingPool.algo.ts:664","errorMessage":"wideRatio failed","pc":[2350]},{"teal":2637,"source":"contracts/stakingPool.algo.ts:664","pc":[2351,2352]},{"teal":2641,"source":"contracts/stakingPool.algo.ts:670","pc":[2353,2354]},{"teal":2642,"source":"contracts/stakingPool.algo.ts:670","pc":[2355,2356]},{"teal":2643,"source":"contracts/stakingPool.algo.ts:670","pc":[2357]},{"teal":2644,"source":"contracts/stakingPool.algo.ts:670","pc":[2358,2359]},{"teal":2649,"source":"contracts/stakingPool.algo.ts:677","pc":[2360,2361]},{"teal":2650,"source":"contracts/stakingPool.algo.ts:677","pc":[2362]},{"teal":2651,"source":"contracts/stakingPool.algo.ts:677","pc":[2363]},{"teal":2652,"source":"contracts/stakingPool.algo.ts:677","pc":[2364,2365,2366]},{"teal":2657,"source":"contracts/stakingPool.algo.ts:680","pc":[2367]},{"teal":2658,"source":"contracts/stakingPool.algo.ts:680","pc":[2368,2369]},{"teal":2664,"source":"contracts/stakingPool.algo.ts:682","pc":[2370,2371]},{"teal":2665,"source":"contracts/stakingPool.algo.ts:682","pc":[2372,2373,2374]},{"teal":2666,"source":"contracts/stakingPool.algo.ts:682","pc":[2375,2376]},{"teal":2667,"source":"contracts/stakingPool.algo.ts:682","pc":[2377,2378,2379]},{"teal":2668,"source":"contracts/stakingPool.algo.ts:682","pc":[2380]},{"teal":2669,"source":"contracts/stakingPool.algo.ts:682","pc":[2381]},{"teal":2670,"source":"contracts/stakingPool.algo.ts:682","pc":[2382,2383,2384]},{"teal":2671,"source":"contracts/stakingPool.algo.ts:683","pc":[2385,2386]},{"teal":2672,"source":"contracts/stakingPool.algo.ts:683","pc":[2387,2388,2389]},{"teal":2673,"source":"contracts/stakingPool.algo.ts:683","pc":[2390,2391]},{"teal":2674,"source":"contracts/stakingPool.algo.ts:683","pc":[2392]},{"teal":2675,"source":"contracts/stakingPool.algo.ts:683","pc":[2393,2394]},{"teal":2676,"source":"contracts/stakingPool.algo.ts:683","pc":[2395,2396,2397]},{"teal":2677,"source":"contracts/stakingPool.algo.ts:683","pc":[2398,2399]},{"teal":2678,"source":"contracts/stakingPool.algo.ts:683","pc":[2400]},{"teal":2679,"source":"contracts/stakingPool.algo.ts:683","pc":[2401]},{"teal":2680,"source":"contracts/stakingPool.algo.ts:683","pc":[2402,2403]},{"teal":2681,"source":"contracts/stakingPool.algo.ts:683","pc":[2404]},{"teal":2682,"source":"contracts/stakingPool.algo.ts:682","pc":[2405]},{"teal":2685,"source":"contracts/stakingPool.algo.ts:681","pc":[2406,2407,2408]},{"teal":2690,"source":"contracts/stakingPool.algo.ts:685","pc":[2409,2410]},{"teal":2691,"source":"contracts/stakingPool.algo.ts:685","pc":[2411,2412]},{"teal":2692,"source":"contracts/stakingPool.algo.ts:685","pc":[2413]},{"teal":2693,"source":"contracts/stakingPool.algo.ts:685","pc":[2414,2415,2416]},{"teal":2694,"source":"contracts/stakingPool.algo.ts:685","pc":[2417,2418]},{"teal":2695,"source":"contracts/stakingPool.algo.ts:685","pc":[2419,2420,2421]},{"teal":2698,"source":"contracts/stakingPool.algo.ts:685","pc":[2422,2423]},{"teal":2701,"source":"contracts/stakingPool.algo.ts:685","pc":[2424,2425]},{"teal":2709,"source":"contracts/stakingPool.algo.ts:686","pc":[2426]},{"teal":2710,"source":"contracts/stakingPool.algo.ts:686","pc":[2427]},{"teal":2711,"source":"contracts/stakingPool.algo.ts:686","pc":[2428,2429]},{"teal":2715,"source":"contracts/stakingPool.algo.ts:687","pc":[2430,2431]},{"teal":2716,"source":"contracts/stakingPool.algo.ts:687","pc":[2432,2433]},{"teal":2720,"source":"contracts/stakingPool.algo.ts:688","pc":[2434,2435]},{"teal":2721,"source":"contracts/stakingPool.algo.ts:688","pc":[2436,2437,2438]},{"teal":2722,"source":"contracts/stakingPool.algo.ts:688","pc":[2439,2440]},{"teal":2726,"source":"contracts/stakingPool.algo.ts:689","pc":[2441,2442,2443,2444,2445,2446,2447,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2477,2478,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2493,2494,2495]},{"teal":2727,"source":"contracts/stakingPool.algo.ts:689","pc":[2496,2497]},{"teal":2730,"source":"contracts/stakingPool.algo.ts:686","pc":[2498]},{"teal":2731,"source":"contracts/stakingPool.algo.ts:686","pc":[2499,2500]},{"teal":2734,"source":"contracts/stakingPool.algo.ts:686","pc":[2501]},{"teal":2740,"source":"contracts/stakingPool.algo.ts:692","pc":[2502,2503]},{"teal":2741,"source":"contracts/stakingPool.algo.ts:692","pc":[2504,2505]},{"teal":2742,"source":"contracts/stakingPool.algo.ts:692","pc":[2506]},{"teal":2743,"source":"contracts/stakingPool.algo.ts:692","pc":[2507]},{"teal":2744,"source":"contracts/stakingPool.algo.ts:692","pc":[2508]},{"teal":2745,"source":"contracts/stakingPool.algo.ts:692","pc":[2509,2510,2511]},{"teal":2754,"source":"contracts/stakingPool.algo.ts:693","pc":[2512]},{"teal":2755,"source":"contracts/stakingPool.algo.ts:693","pc":[2513]},{"teal":2756,"source":"contracts/stakingPool.algo.ts:693","pc":[2514,2515]},{"teal":2760,"source":"contracts/stakingPool.algo.ts:694","pc":[2516,2517]},{"teal":2761,"source":"contracts/stakingPool.algo.ts:694","pc":[2518,2519]},{"teal":2762,"source":"contracts/stakingPool.algo.ts:694","pc":[2520]},{"teal":2763,"source":"contracts/stakingPool.algo.ts:694","pc":[2521,2522]},{"teal":2767,"source":"contracts/stakingPool.algo.ts:695","pc":[2523,2524]},{"teal":2768,"source":"contracts/stakingPool.algo.ts:695","pc":[2525,2526,2527]},{"teal":2769,"source":"contracts/stakingPool.algo.ts:695","pc":[2528,2529]},{"teal":2773,"source":"contracts/stakingPool.algo.ts:696","pc":[2530,2531,2532,2533,2534,2535,2536,2537,2538,2539,2540,2541,2542,2543,2544,2545,2546,2547]},{"teal":2774,"source":"contracts/stakingPool.algo.ts:696","pc":[2548,2549]},{"teal":2777,"source":"contracts/stakingPool.algo.ts:693","pc":[2550]},{"teal":2778,"source":"contracts/stakingPool.algo.ts:693","pc":[2551,2552]},{"teal":2781,"source":"contracts/stakingPool.algo.ts:693","pc":[2553]},{"teal":2790,"source":"contracts/stakingPool.algo.ts:708","pc":[2554]},{"teal":2791,"source":"contracts/stakingPool.algo.ts:708","pc":[2555,2556]},{"teal":2796,"source":"contracts/stakingPool.algo.ts:732","pc":[2557,2558]},{"teal":2797,"source":"contracts/stakingPool.algo.ts:732","pc":[2559]},{"teal":2798,"source":"contracts/stakingPool.algo.ts:732","pc":[2560]},{"teal":2799,"source":"contracts/stakingPool.algo.ts:732","pc":[2561]},{"teal":2800,"source":"contracts/stakingPool.algo.ts:732","pc":[2562,2563,2564]},{"teal":2801,"source":"contracts/stakingPool.algo.ts:732","pc":[2565,2566]},{"teal":2802,"source":"contracts/stakingPool.algo.ts:732","pc":[2567]},{"teal":2803,"source":"contracts/stakingPool.algo.ts:732","pc":[2568]},{"teal":2804,"source":"contracts/stakingPool.algo.ts:732","pc":[2569]},{"teal":2807,"source":"contracts/stakingPool.algo.ts:732","pc":[2570,2571,2572]},{"teal":2812,"source":"contracts/stakingPool.algo.ts:733","pc":[2573]},{"teal":2813,"source":"contracts/stakingPool.algo.ts:733","pc":[2574,2575]},{"teal":2817,"source":"contracts/stakingPool.algo.ts:734","pc":[2576,2577]},{"teal":2818,"source":"contracts/stakingPool.algo.ts:734","pc":[2578,2579]},{"teal":2822,"source":"contracts/stakingPool.algo.ts:736","pc":[2580,2581]},{"teal":2823,"source":"contracts/stakingPool.algo.ts:736","pc":[2582,2583]},{"teal":2827,"source":"contracts/stakingPool.algo.ts:737","pc":[2584]},{"teal":2828,"source":"contracts/stakingPool.algo.ts:737","pc":[2585,2586]},{"teal":2833,"source":"contracts/stakingPool.algo.ts:737","pc":[2587,2588]},{"teal":2834,"source":"contracts/stakingPool.algo.ts:737","pc":[2589,2590]},{"teal":2835,"source":"contracts/stakingPool.algo.ts:737","pc":[2591]},{"teal":2836,"source":"contracts/stakingPool.algo.ts:737","pc":[2592,2593,2594]},{"teal":2841,"source":"contracts/stakingPool.algo.ts:738","pc":[2595,2596]},{"teal":2842,"source":"contracts/stakingPool.algo.ts:738","pc":[2597,2598]},{"teal":2843,"source":"contracts/stakingPool.algo.ts:738","pc":[2599]},{"teal":2844,"source":"contracts/stakingPool.algo.ts:738","pc":[2600,2601,2602]},{"teal":2849,"source":"contracts/stakingPool.algo.ts:739","pc":[2603]},{"teal":2850,"source":"contracts/stakingPool.algo.ts:739","pc":[2604]},{"teal":2851,"source":"contracts/stakingPool.algo.ts:739","pc":[2605,2606]},{"teal":2852,"source":"contracts/stakingPool.algo.ts:739","pc":[2607]},{"teal":2853,"source":"contracts/stakingPool.algo.ts:739","pc":[2608,2609]},{"teal":2854,"source":"contracts/stakingPool.algo.ts:739","pc":[2610,2611]},{"teal":2855,"source":"contracts/stakingPool.algo.ts:739","pc":[2612]},{"teal":2856,"source":"contracts/stakingPool.algo.ts:739","pc":[2613,2614]},{"teal":2857,"source":"contracts/stakingPool.algo.ts:739","pc":[2615,2616]},{"teal":2858,"source":"contracts/stakingPool.algo.ts:739","pc":[2617,2618]},{"teal":2859,"source":"contracts/stakingPool.algo.ts:739","pc":[2619,2620]},{"teal":2860,"source":"contracts/stakingPool.algo.ts:739","pc":[2621]},{"teal":2865,"source":"contracts/stakingPool.algo.ts:741","pc":[2622,2623]},{"teal":2866,"source":"contracts/stakingPool.algo.ts:741","pc":[2624]},{"teal":2867,"source":"contracts/stakingPool.algo.ts:741","pc":[2625]},{"teal":2868,"source":"contracts/stakingPool.algo.ts:741","pc":[2626]},{"teal":2869,"source":"contracts/stakingPool.algo.ts:741","pc":[2627]},{"teal":2870,"source":"contracts/stakingPool.algo.ts:741","pc":[2628,2629]},{"teal":2871,"source":"contracts/stakingPool.algo.ts:741","pc":[2630]},{"teal":2872,"source":"contracts/stakingPool.algo.ts:741","pc":[2631,2632]},{"teal":2877,"source":"contracts/stakingPool.algo.ts:742","pc":[2633,2634]},{"teal":2878,"source":"contracts/stakingPool.algo.ts:742","pc":[2635,2636,2637]},{"teal":2879,"source":"contracts/stakingPool.algo.ts:742","pc":[2638,2639]},{"teal":2880,"source":"contracts/stakingPool.algo.ts:742","pc":[2640]},{"teal":2881,"source":"contracts/stakingPool.algo.ts:742","pc":[2641,2642,2643]},{"teal":2887,"source":"contracts/stakingPool.algo.ts:743","pc":[2644,2645]},{"teal":2888,"source":"contracts/stakingPool.algo.ts:743","pc":[2646,2647,2648]},{"teal":2889,"source":"contracts/stakingPool.algo.ts:743","pc":[2649]},{"teal":2890,"source":"contracts/stakingPool.algo.ts:743","pc":[2650,2651]},{"teal":2891,"source":"contracts/stakingPool.algo.ts:743","pc":[2652]},{"teal":2892,"source":"contracts/stakingPool.algo.ts:743","pc":[2653,2654,2655]},{"teal":2897,"source":"contracts/stakingPool.algo.ts:746","pc":[2656,2657]},{"teal":2898,"source":"contracts/stakingPool.algo.ts:746","pc":[2658,2659]},{"teal":2899,"source":"contracts/stakingPool.algo.ts:746","pc":[2660,2661,2662]},{"teal":2900,"source":"contracts/stakingPool.algo.ts:746","pc":[2663]},{"teal":2901,"source":"contracts/stakingPool.algo.ts:746","pc":[2664]},{"teal":2902,"source":"contracts/stakingPool.algo.ts:746","pc":[2665,2666]},{"teal":2903,"source":"contracts/stakingPool.algo.ts:743","pc":[2667,2668,2669]},{"teal":2908,"source":"contracts/stakingPool.algo.ts:750","pc":[2670,2671]},{"teal":2909,"source":"contracts/stakingPool.algo.ts:750","pc":[2672,2673]},{"teal":2910,"source":"contracts/stakingPool.algo.ts:750","pc":[2674,2675,2676]},{"teal":2911,"source":"contracts/stakingPool.algo.ts:750","pc":[2677]},{"teal":2912,"source":"contracts/stakingPool.algo.ts:750","pc":[2678]},{"teal":2913,"source":"contracts/stakingPool.algo.ts:750","pc":[2679,2680]},{"teal":2918,"source":"contracts/stakingPool.algo.ts:754","pc":[2681,2682]},{"teal":2919,"source":"contracts/stakingPool.algo.ts:754","pc":[2683,2684]},{"teal":2920,"source":"contracts/stakingPool.algo.ts:754","pc":[2685]},{"teal":2921,"source":"contracts/stakingPool.algo.ts:754","pc":[2686,2687,2688]},{"teal":2926,"source":"contracts/stakingPool.algo.ts:755","pc":[2689,2690]},{"teal":2927,"source":"contracts/stakingPool.algo.ts:755","pc":[2691,2692]},{"teal":2928,"source":"contracts/stakingPool.algo.ts:755","pc":[2693,2694,2695]},{"teal":2929,"source":"contracts/stakingPool.algo.ts:755","pc":[2696]},{"teal":2930,"source":"contracts/stakingPool.algo.ts:755","pc":[2697]},{"teal":2931,"source":"contracts/stakingPool.algo.ts:755","pc":[2698,2699]},{"teal":2935,"source":"contracts/stakingPool.algo.ts:756","pc":[2700,2701]},{"teal":2936,"source":"contracts/stakingPool.algo.ts:756","pc":[2702,2703]},{"teal":2937,"source":"contracts/stakingPool.algo.ts:756","pc":[2704]},{"teal":2938,"source":"contracts/stakingPool.algo.ts:756","pc":[2705,2706]},{"teal":2939,"source":"contracts/stakingPool.algo.ts:756","pc":[2707]},{"teal":2940,"source":"contracts/stakingPool.algo.ts:756","pc":[2708,2709]},{"teal":2945,"source":"contracts/stakingPool.algo.ts:758","pc":[2710,2711]},{"teal":2946,"source":"contracts/stakingPool.algo.ts:758","pc":[2712]},{"teal":2947,"source":"contracts/stakingPool.algo.ts:758","pc":[2713]},{"teal":2948,"source":"contracts/stakingPool.algo.ts:758","pc":[2714,2715,2716]},{"teal":2956,"source":"contracts/stakingPool.algo.ts:761","pc":[2717,2718]},{"teal":2957,"source":"contracts/stakingPool.algo.ts:761","pc":[2719,2720,2721]},{"teal":2958,"source":"contracts/stakingPool.algo.ts:761","pc":[2722]},{"teal":2959,"source":"contracts/stakingPool.algo.ts:761","pc":[2723,2724]},{"teal":2960,"source":"contracts/stakingPool.algo.ts:760","pc":[2725]},{"teal":2961,"source":"contracts/stakingPool.algo.ts:761","pc":[2726,2727]},{"teal":2962,"source":"contracts/stakingPool.algo.ts:760","pc":[2728,2729]},{"teal":2963,"source":"contracts/stakingPool.algo.ts:760","pc":[2730,2731]},{"teal":2964,"source":"contracts/stakingPool.algo.ts:760","pc":[2732]},{"teal":2965,"source":"contracts/stakingPool.algo.ts:760","pc":[2733,2734]},{"teal":2966,"source":"contracts/stakingPool.algo.ts:760","pc":[2735]},{"teal":2967,"source":"contracts/stakingPool.algo.ts:760","pc":[2736,2737]},{"teal":2968,"source":"contracts/stakingPool.algo.ts:760","pc":[2738]},{"teal":2969,"source":"contracts/stakingPool.algo.ts:760","pc":[2739]},{"teal":2970,"source":"contracts/stakingPool.algo.ts:762","pc":[2740,2741]},{"teal":2971,"source":"contracts/stakingPool.algo.ts:762","pc":[2742]},{"teal":2972,"source":"contracts/stakingPool.algo.ts:762","pc":[2743,2744]},{"teal":2973,"source":"contracts/stakingPool.algo.ts:760","pc":[2745]},{"teal":2974,"source":"contracts/stakingPool.algo.ts:760","pc":[2746]},{"teal":2975,"source":"contracts/stakingPool.algo.ts:760","pc":[2747]},{"teal":2976,"source":"contracts/stakingPool.algo.ts:760","pc":[2748]},{"teal":2977,"source":"contracts/stakingPool.algo.ts:760","pc":[2749]},{"teal":2978,"source":"contracts/stakingPool.algo.ts:760","pc":[2750]},{"teal":2981,"source":"contracts/stakingPool.algo.ts:760","errorMessage":"wideRatio failed","pc":[2751]},{"teal":2982,"source":"contracts/stakingPool.algo.ts:760","pc":[2752,2753]},{"teal":2986,"source":"contracts/stakingPool.algo.ts:767","pc":[2754,2755]},{"teal":2987,"source":"contracts/stakingPool.algo.ts:767","pc":[2756,2757]},{"teal":2988,"source":"contracts/stakingPool.algo.ts:767","pc":[2758]},{"teal":2989,"source":"contracts/stakingPool.algo.ts:767","pc":[2759,2760]},{"teal":2993,"source":"contracts/stakingPool.algo.ts:768","pc":[2761,2762]},{"teal":2994,"source":"contracts/stakingPool.algo.ts:768","pc":[2763,2764]},{"teal":2995,"source":"contracts/stakingPool.algo.ts:768","pc":[2765,2766]},{"teal":2996,"source":"contracts/stakingPool.algo.ts:768","pc":[2767,2768,2769]},{"teal":2997,"source":"contracts/stakingPool.algo.ts:768","pc":[2770]},{"teal":2998,"source":"contracts/stakingPool.algo.ts:768","pc":[2771,2772]},{"teal":2999,"source":"contracts/stakingPool.algo.ts:768","pc":[2773]},{"teal":3000,"source":"contracts/stakingPool.algo.ts:768","pc":[2774]},{"teal":3001,"source":"contracts/stakingPool.algo.ts:768","pc":[2775]},{"teal":3002,"source":"contracts/stakingPool.algo.ts:768","pc":[2776,2777]},{"teal":3006,"source":"contracts/stakingPool.algo.ts:769","pc":[2778,2779]},{"teal":3007,"source":"contracts/stakingPool.algo.ts:769","pc":[2780,2781]},{"teal":3008,"source":"contracts/stakingPool.algo.ts:769","pc":[2782]},{"teal":3009,"source":"contracts/stakingPool.algo.ts:769","pc":[2783,2784]},{"teal":3017,"source":"contracts/stakingPool.algo.ts:773","pc":[2785,2786]},{"teal":3018,"source":"contracts/stakingPool.algo.ts:773","pc":[2787,2788,2789]},{"teal":3019,"source":"contracts/stakingPool.algo.ts:773","pc":[2790]},{"teal":3020,"source":"contracts/stakingPool.algo.ts:773","pc":[2791,2792]},{"teal":3021,"source":"contracts/stakingPool.algo.ts:772","pc":[2793]},{"teal":3022,"source":"contracts/stakingPool.algo.ts:773","pc":[2794,2795]},{"teal":3023,"source":"contracts/stakingPool.algo.ts:772","pc":[2796,2797]},{"teal":3024,"source":"contracts/stakingPool.algo.ts:772","pc":[2798,2799]},{"teal":3025,"source":"contracts/stakingPool.algo.ts:772","pc":[2800]},{"teal":3026,"source":"contracts/stakingPool.algo.ts:772","pc":[2801,2802]},{"teal":3027,"source":"contracts/stakingPool.algo.ts:772","pc":[2803]},{"teal":3028,"source":"contracts/stakingPool.algo.ts:772","pc":[2804,2805]},{"teal":3029,"source":"contracts/stakingPool.algo.ts:772","pc":[2806]},{"teal":3030,"source":"contracts/stakingPool.algo.ts:772","pc":[2807]},{"teal":3031,"source":"contracts/stakingPool.algo.ts:774","pc":[2808,2809]},{"teal":3032,"source":"contracts/stakingPool.algo.ts:774","pc":[2810]},{"teal":3033,"source":"contracts/stakingPool.algo.ts:774","pc":[2811,2812]},{"teal":3034,"source":"contracts/stakingPool.algo.ts:772","pc":[2813]},{"teal":3035,"source":"contracts/stakingPool.algo.ts:772","pc":[2814]},{"teal":3036,"source":"contracts/stakingPool.algo.ts:772","pc":[2815]},{"teal":3037,"source":"contracts/stakingPool.algo.ts:772","pc":[2816]},{"teal":3038,"source":"contracts/stakingPool.algo.ts:772","pc":[2817]},{"teal":3039,"source":"contracts/stakingPool.algo.ts:772","pc":[2818]},{"teal":3042,"source":"contracts/stakingPool.algo.ts:772","errorMessage":"wideRatio failed","pc":[2819]},{"teal":3043,"source":"contracts/stakingPool.algo.ts:772","pc":[2820,2821]},{"teal":3047,"source":"contracts/stakingPool.algo.ts:778","pc":[2822,2823]},{"teal":3048,"source":"contracts/stakingPool.algo.ts:778","pc":[2824,2825]},{"teal":3049,"source":"contracts/stakingPool.algo.ts:778","pc":[2826]},{"teal":3050,"source":"contracts/stakingPool.algo.ts:778","pc":[2827,2828]},{"teal":3054,"source":"contracts/stakingPool.algo.ts:781","pc":[2829,2830]},{"teal":3055,"source":"contracts/stakingPool.algo.ts:781","pc":[2831,2832]},{"teal":3056,"source":"contracts/stakingPool.algo.ts:781","pc":[2833,2834]},{"teal":3057,"source":"contracts/stakingPool.algo.ts:781","pc":[2835,2836,2837]},{"teal":3058,"source":"contracts/stakingPool.algo.ts:781","pc":[2838]},{"teal":3059,"source":"contracts/stakingPool.algo.ts:781","pc":[2839,2840]},{"teal":3060,"source":"contracts/stakingPool.algo.ts:781","pc":[2841]},{"teal":3061,"source":"contracts/stakingPool.algo.ts:781","pc":[2842]},{"teal":3062,"source":"contracts/stakingPool.algo.ts:781","pc":[2843]},{"teal":3063,"source":"contracts/stakingPool.algo.ts:781","pc":[2844,2845]},{"teal":3067,"source":"contracts/stakingPool.algo.ts:782","pc":[2846,2847]},{"teal":3068,"source":"contracts/stakingPool.algo.ts:782","pc":[2848,2849]},{"teal":3069,"source":"contracts/stakingPool.algo.ts:782","pc":[2850,2851]},{"teal":3070,"source":"contracts/stakingPool.algo.ts:782","pc":[2852,2853,2854]},{"teal":3071,"source":"contracts/stakingPool.algo.ts:782","pc":[2855]},{"teal":3072,"source":"contracts/stakingPool.algo.ts:782","pc":[2856,2857]},{"teal":3073,"source":"contracts/stakingPool.algo.ts:782","pc":[2858]},{"teal":3074,"source":"contracts/stakingPool.algo.ts:782","pc":[2859]},{"teal":3075,"source":"contracts/stakingPool.algo.ts:782","pc":[2860]},{"teal":3076,"source":"contracts/stakingPool.algo.ts:782","pc":[2861,2862]},{"teal":3080,"source":"contracts/stakingPool.algo.ts:783","pc":[2863,2864]},{"teal":3081,"source":"contracts/stakingPool.algo.ts:783","pc":[2865,2866]},{"teal":3082,"source":"contracts/stakingPool.algo.ts:783","pc":[2867]},{"teal":3083,"source":"contracts/stakingPool.algo.ts:783","pc":[2868,2869]},{"teal":3087,"source":"contracts/stakingPool.algo.ts:785","pc":[2870,2871]},{"teal":3088,"source":"contracts/stakingPool.algo.ts:785","pc":[2872]},{"teal":3089,"source":"contracts/stakingPool.algo.ts:785","pc":[2873]},{"teal":3090,"source":"contracts/stakingPool.algo.ts:785","pc":[2874,2875]},{"teal":3091,"source":"contracts/stakingPool.algo.ts:785","pc":[2876]},{"teal":3092,"source":"contracts/stakingPool.algo.ts:785","pc":[2877,2878]},{"teal":3093,"source":"contracts/stakingPool.algo.ts:785","pc":[2879]},{"teal":3104,"source":"contracts/stakingPool.algo.ts:737","pc":[2880,2881]},{"teal":3105,"source":"contracts/stakingPool.algo.ts:737","pc":[2882]},{"teal":3106,"source":"contracts/stakingPool.algo.ts:737","pc":[2883]},{"teal":3107,"source":"contracts/stakingPool.algo.ts:737","pc":[2884,2885]},{"teal":3108,"source":"contracts/stakingPool.algo.ts:737","pc":[2886,2887,2888]},{"teal":3113,"source":"contracts/stakingPool.algo.ts:793","pc":[2889,2890]},{"teal":3114,"source":"contracts/stakingPool.algo.ts:793","pc":[2891]},{"teal":3115,"source":"contracts/stakingPool.algo.ts:793","pc":[2892,2893]},{"teal":3116,"source":"contracts/stakingPool.algo.ts:793","pc":[2894]},{"teal":3117,"source":"contracts/stakingPool.algo.ts:793","pc":[2895,2896]},{"teal":3122,"source":"contracts/stakingPool.algo.ts:797","pc":[2897,2898]},{"teal":3123,"source":"contracts/stakingPool.algo.ts:797","pc":[2899]},{"teal":3124,"source":"contracts/stakingPool.algo.ts:797","pc":[2900]},{"teal":3125,"source":"contracts/stakingPool.algo.ts:797","pc":[2901,2902,2903]},{"teal":3130,"source":"contracts/stakingPool.algo.ts:799","pc":[2904]},{"teal":3131,"source":"contracts/stakingPool.algo.ts:799","pc":[2905,2906]},{"teal":3136,"source":"contracts/stakingPool.algo.ts:799","pc":[2907,2908]},{"teal":3137,"source":"contracts/stakingPool.algo.ts:799","pc":[2909,2910]},{"teal":3138,"source":"contracts/stakingPool.algo.ts:799","pc":[2911]},{"teal":3139,"source":"contracts/stakingPool.algo.ts:799","pc":[2912,2913,2914]},{"teal":3144,"source":"contracts/stakingPool.algo.ts:800","pc":[2915,2916]},{"teal":3145,"source":"contracts/stakingPool.algo.ts:800","pc":[2917,2918]},{"teal":3146,"source":"contracts/stakingPool.algo.ts:800","pc":[2919]},{"teal":3147,"source":"contracts/stakingPool.algo.ts:800","pc":[2920,2921,2922]},{"teal":3152,"source":"contracts/stakingPool.algo.ts:801","pc":[2923]},{"teal":3153,"source":"contracts/stakingPool.algo.ts:801","pc":[2924]},{"teal":3154,"source":"contracts/stakingPool.algo.ts:801","pc":[2925,2926]},{"teal":3155,"source":"contracts/stakingPool.algo.ts:801","pc":[2927]},{"teal":3156,"source":"contracts/stakingPool.algo.ts:801","pc":[2928,2929]},{"teal":3157,"source":"contracts/stakingPool.algo.ts:801","pc":[2930,2931]},{"teal":3158,"source":"contracts/stakingPool.algo.ts:801","pc":[2932]},{"teal":3159,"source":"contracts/stakingPool.algo.ts:801","pc":[2933,2934]},{"teal":3160,"source":"contracts/stakingPool.algo.ts:801","pc":[2935,2936]},{"teal":3161,"source":"contracts/stakingPool.algo.ts:801","pc":[2937,2938]},{"teal":3162,"source":"contracts/stakingPool.algo.ts:801","pc":[2939,2940]},{"teal":3163,"source":"contracts/stakingPool.algo.ts:801","pc":[2941]},{"teal":3168,"source":"contracts/stakingPool.algo.ts:803","pc":[2942,2943]},{"teal":3169,"source":"contracts/stakingPool.algo.ts:803","pc":[2944]},{"teal":3170,"source":"contracts/stakingPool.algo.ts:803","pc":[2945]},{"teal":3171,"source":"contracts/stakingPool.algo.ts:803","pc":[2946]},{"teal":3172,"source":"contracts/stakingPool.algo.ts:803","pc":[2947]},{"teal":3173,"source":"contracts/stakingPool.algo.ts:803","pc":[2948,2949]},{"teal":3174,"source":"contracts/stakingPool.algo.ts:803","pc":[2950]},{"teal":3175,"source":"contracts/stakingPool.algo.ts:803","pc":[2951,2952]},{"teal":3180,"source":"contracts/stakingPool.algo.ts:804","pc":[2953,2954]},{"teal":3181,"source":"contracts/stakingPool.algo.ts:804","pc":[2955,2956,2957]},{"teal":3182,"source":"contracts/stakingPool.algo.ts:804","pc":[2958,2959]},{"teal":3183,"source":"contracts/stakingPool.algo.ts:804","pc":[2960]},{"teal":3184,"source":"contracts/stakingPool.algo.ts:804","pc":[2961]},{"teal":3185,"source":"contracts/stakingPool.algo.ts:804","pc":[2962,2963,2964]},{"teal":3186,"source":"contracts/stakingPool.algo.ts:804","pc":[2965,2966]},{"teal":3187,"source":"contracts/stakingPool.algo.ts:804","pc":[2967,2968,2969]},{"teal":3188,"source":"contracts/stakingPool.algo.ts:804","pc":[2970]},{"teal":3189,"source":"contracts/stakingPool.algo.ts:804","pc":[2971,2972]},{"teal":3190,"source":"contracts/stakingPool.algo.ts:804","pc":[2973]},{"teal":3191,"source":"contracts/stakingPool.algo.ts:804","pc":[2974]},{"teal":3194,"source":"contracts/stakingPool.algo.ts:804","pc":[2975,2976,2977]},{"teal":3199,"source":"contracts/stakingPool.algo.ts:805","pc":[2978,2979]},{"teal":3200,"source":"contracts/stakingPool.algo.ts:805","pc":[2980,2981]},{"teal":3201,"source":"contracts/stakingPool.algo.ts:805","pc":[2982,2983,2984]},{"teal":3202,"source":"contracts/stakingPool.algo.ts:805","pc":[2985]},{"teal":3203,"source":"contracts/stakingPool.algo.ts:805","pc":[2986]},{"teal":3204,"source":"contracts/stakingPool.algo.ts:805","pc":[2987,2988]},{"teal":3209,"source":"contracts/stakingPool.algo.ts:807","pc":[2989,2990]},{"teal":3210,"source":"contracts/stakingPool.algo.ts:807","pc":[2991,2992]},{"teal":3211,"source":"contracts/stakingPool.algo.ts:807","pc":[2993]},{"teal":3212,"source":"contracts/stakingPool.algo.ts:807","pc":[2994,2995,2996]},{"teal":3218,"source":"contracts/stakingPool.algo.ts:812","pc":[2997,2998]},{"teal":3219,"source":"contracts/stakingPool.algo.ts:812","pc":[2999]},{"teal":3220,"source":"contracts/stakingPool.algo.ts:812","pc":[3000]},{"teal":3221,"source":"contracts/stakingPool.algo.ts:812","pc":[3001,3002,3003]},{"teal":3229,"source":"contracts/stakingPool.algo.ts:814","pc":[3004,3005]},{"teal":3230,"source":"contracts/stakingPool.algo.ts:814","pc":[3006,3007,3008]},{"teal":3231,"source":"contracts/stakingPool.algo.ts:814","pc":[3009]},{"teal":3232,"source":"contracts/stakingPool.algo.ts:814","pc":[3010,3011]},{"teal":3233,"source":"contracts/stakingPool.algo.ts:813","pc":[3012]},{"teal":3234,"source":"contracts/stakingPool.algo.ts:813","pc":[3013]},{"teal":3235,"source":"contracts/stakingPool.algo.ts:815","pc":[3014,3015]},{"teal":3236,"source":"contracts/stakingPool.algo.ts:813","pc":[3016]},{"teal":3237,"source":"contracts/stakingPool.algo.ts:813","pc":[3017]},{"teal":3238,"source":"contracts/stakingPool.algo.ts:813","pc":[3018]},{"teal":3239,"source":"contracts/stakingPool.algo.ts:813","pc":[3019]},{"teal":3240,"source":"contracts/stakingPool.algo.ts:813","pc":[3020]},{"teal":3243,"source":"contracts/stakingPool.algo.ts:813","errorMessage":"wideRatio failed","pc":[3021]},{"teal":3244,"source":"contracts/stakingPool.algo.ts:813","pc":[3022,3023]},{"teal":3248,"source":"contracts/stakingPool.algo.ts:818","pc":[3024,3025]},{"teal":3249,"source":"contracts/stakingPool.algo.ts:818","pc":[3026,3027]},{"teal":3250,"source":"contracts/stakingPool.algo.ts:818","pc":[3028,3029]},{"teal":3251,"source":"contracts/stakingPool.algo.ts:818","pc":[3030,3031,3032]},{"teal":3252,"source":"contracts/stakingPool.algo.ts:818","pc":[3033]},{"teal":3253,"source":"contracts/stakingPool.algo.ts:818","pc":[3034,3035]},{"teal":3254,"source":"contracts/stakingPool.algo.ts:818","pc":[3036]},{"teal":3255,"source":"contracts/stakingPool.algo.ts:818","pc":[3037]},{"teal":3256,"source":"contracts/stakingPool.algo.ts:818","pc":[3038]},{"teal":3257,"source":"contracts/stakingPool.algo.ts:818","pc":[3039,3040]},{"teal":3261,"source":"contracts/stakingPool.algo.ts:819","pc":[3041,3042]},{"teal":3262,"source":"contracts/stakingPool.algo.ts:819","pc":[3043,3044]},{"teal":3263,"source":"contracts/stakingPool.algo.ts:819","pc":[3045]},{"teal":3264,"source":"contracts/stakingPool.algo.ts:819","pc":[3046,3047]},{"teal":3270,"source":"contracts/stakingPool.algo.ts:821","pc":[3048,3049]},{"teal":3271,"source":"contracts/stakingPool.algo.ts:821","pc":[3050]},{"teal":3272,"source":"contracts/stakingPool.algo.ts:821","pc":[3051]},{"teal":3273,"source":"contracts/stakingPool.algo.ts:821","pc":[3052,3053,3054]},{"teal":3281,"source":"contracts/stakingPool.algo.ts:823","pc":[3055,3056]},{"teal":3282,"source":"contracts/stakingPool.algo.ts:823","pc":[3057,3058,3059]},{"teal":3283,"source":"contracts/stakingPool.algo.ts:823","pc":[3060]},{"teal":3284,"source":"contracts/stakingPool.algo.ts:823","pc":[3061,3062]},{"teal":3285,"source":"contracts/stakingPool.algo.ts:822","pc":[3063]},{"teal":3286,"source":"contracts/stakingPool.algo.ts:822","pc":[3064]},{"teal":3287,"source":"contracts/stakingPool.algo.ts:824","pc":[3065,3066]},{"teal":3288,"source":"contracts/stakingPool.algo.ts:822","pc":[3067]},{"teal":3289,"source":"contracts/stakingPool.algo.ts:822","pc":[3068]},{"teal":3290,"source":"contracts/stakingPool.algo.ts:822","pc":[3069]},{"teal":3291,"source":"contracts/stakingPool.algo.ts:822","pc":[3070]},{"teal":3292,"source":"contracts/stakingPool.algo.ts:822","pc":[3071]},{"teal":3295,"source":"contracts/stakingPool.algo.ts:822","errorMessage":"wideRatio failed","pc":[3072]},{"teal":3296,"source":"contracts/stakingPool.algo.ts:822","pc":[3073,3074]},{"teal":3300,"source":"contracts/stakingPool.algo.ts:828","pc":[3075,3076]},{"teal":3301,"source":"contracts/stakingPool.algo.ts:828","pc":[3077,3078]},{"teal":3302,"source":"contracts/stakingPool.algo.ts:828","pc":[3079,3080]},{"teal":3303,"source":"contracts/stakingPool.algo.ts:828","pc":[3081,3082,3083]},{"teal":3304,"source":"contracts/stakingPool.algo.ts:828","pc":[3084]},{"teal":3305,"source":"contracts/stakingPool.algo.ts:828","pc":[3085,3086]},{"teal":3306,"source":"contracts/stakingPool.algo.ts:828","pc":[3087]},{"teal":3307,"source":"contracts/stakingPool.algo.ts:828","pc":[3088]},{"teal":3308,"source":"contracts/stakingPool.algo.ts:828","pc":[3089]},{"teal":3309,"source":"contracts/stakingPool.algo.ts:828","pc":[3090,3091]},{"teal":3313,"source":"contracts/stakingPool.algo.ts:829","pc":[3092,3093]},{"teal":3314,"source":"contracts/stakingPool.algo.ts:829","pc":[3094,3095]},{"teal":3315,"source":"contracts/stakingPool.algo.ts:829","pc":[3096,3097]},{"teal":3316,"source":"contracts/stakingPool.algo.ts:829","pc":[3098,3099,3100]},{"teal":3317,"source":"contracts/stakingPool.algo.ts:829","pc":[3101]},{"teal":3318,"source":"contracts/stakingPool.algo.ts:829","pc":[3102,3103]},{"teal":3319,"source":"contracts/stakingPool.algo.ts:829","pc":[3104]},{"teal":3320,"source":"contracts/stakingPool.algo.ts:829","pc":[3105]},{"teal":3321,"source":"contracts/stakingPool.algo.ts:829","pc":[3106]},{"teal":3322,"source":"contracts/stakingPool.algo.ts:829","pc":[3107,3108]},{"teal":3326,"source":"contracts/stakingPool.algo.ts:830","pc":[3109,3110]},{"teal":3327,"source":"contracts/stakingPool.algo.ts:830","pc":[3111,3112]},{"teal":3328,"source":"contracts/stakingPool.algo.ts:830","pc":[3113]},{"teal":3329,"source":"contracts/stakingPool.algo.ts:830","pc":[3114,3115]},{"teal":3334,"source":"contracts/stakingPool.algo.ts:834","pc":[3116,3117]},{"teal":3335,"source":"contracts/stakingPool.algo.ts:834","pc":[3118]},{"teal":3336,"source":"contracts/stakingPool.algo.ts:834","pc":[3119]},{"teal":3337,"source":"contracts/stakingPool.algo.ts:834","pc":[3120,3121]},{"teal":3338,"source":"contracts/stakingPool.algo.ts:834","pc":[3122]},{"teal":3339,"source":"contracts/stakingPool.algo.ts:834","pc":[3123,3124]},{"teal":3340,"source":"contracts/stakingPool.algo.ts:834","pc":[3125]},{"teal":3349,"source":"contracts/stakingPool.algo.ts:799","pc":[3126,3127]},{"teal":3350,"source":"contracts/stakingPool.algo.ts:799","pc":[3128]},{"teal":3351,"source":"contracts/stakingPool.algo.ts:799","pc":[3129]},{"teal":3352,"source":"contracts/stakingPool.algo.ts:799","pc":[3130,3131]},{"teal":3353,"source":"contracts/stakingPool.algo.ts:799","pc":[3132,3133,3134]},{"teal":3362,"source":"contracts/stakingPool.algo.ts:844","pc":[3135,3136]},{"teal":3363,"source":"contracts/stakingPool.algo.ts:844","pc":[3137]},{"teal":3364,"source":"contracts/stakingPool.algo.ts:844","pc":[3138,3139]},{"teal":3365,"source":"contracts/stakingPool.algo.ts:844","pc":[3140]},{"teal":3366,"source":"contracts/stakingPool.algo.ts:844","pc":[3141]},{"teal":3367,"source":"contracts/stakingPool.algo.ts:844","pc":[3142,3143]},{"teal":3368,"source":"contracts/stakingPool.algo.ts:844","pc":[3144]},{"teal":3369,"source":"contracts/stakingPool.algo.ts:844","pc":[3145,3146]},{"teal":3373,"source":"contracts/stakingPool.algo.ts:845","pc":[3147,3148]},{"teal":3374,"source":"contracts/stakingPool.algo.ts:845","pc":[3149]},{"teal":3375,"source":"contracts/stakingPool.algo.ts:845","pc":[3150,3151]},{"teal":3376,"source":"contracts/stakingPool.algo.ts:845","pc":[3152]},{"teal":3377,"source":"contracts/stakingPool.algo.ts:845","pc":[3153,3154]},{"teal":3378,"source":"contracts/stakingPool.algo.ts:845","pc":[3155]},{"teal":3379,"source":"contracts/stakingPool.algo.ts:845","pc":[3156]},{"teal":3384,"source":"contracts/stakingPool.algo.ts:846","pc":[3157,3158]},{"teal":3385,"source":"contracts/stakingPool.algo.ts:846","pc":[3159]},{"teal":3386,"source":"contracts/stakingPool.algo.ts:847","pc":[3160]},{"teal":3387,"source":"contracts/stakingPool.algo.ts:847","pc":[3161,3162]},{"teal":3388,"source":"contracts/stakingPool.algo.ts:847","pc":[3163]},{"teal":3389,"source":"contracts/stakingPool.algo.ts:847","pc":[3164,3165]},{"teal":3390,"source":"contracts/stakingPool.algo.ts:847","pc":[3166]},{"teal":3391,"source":"contracts/stakingPool.algo.ts:847","pc":[3167]},{"teal":3392,"source":"contracts/stakingPool.algo.ts:847","pc":[3168]},{"teal":3393,"source":"contracts/stakingPool.algo.ts:847","pc":[3169]},{"teal":3394,"source":"contracts/stakingPool.algo.ts:847","pc":[3170]},{"teal":3395,"source":"contracts/stakingPool.algo.ts:847","pc":[3171,3172]},{"teal":3396,"source":"contracts/stakingPool.algo.ts:847","pc":[3173]},{"teal":3399,"source":"contracts/stakingPool.algo.ts:847","errorMessage":"this.stakeAccumulator.value + (increasedStake as uint128) * (roundsLeftInBin as uint128) overflowed 128 bits","pc":[3174]},{"teal":3400,"source":"contracts/stakingPool.algo.ts:847","pc":[3175,3176]},{"teal":3401,"source":"contracts/stakingPool.algo.ts:847","pc":[3177]},{"teal":3402,"source":"contracts/stakingPool.algo.ts:847","pc":[3178]},{"teal":3403,"source":"contracts/stakingPool.algo.ts:847","pc":[3179]},{"teal":3404,"source":"contracts/stakingPool.algo.ts:847","pc":[3180]},{"teal":3405,"source":"contracts/stakingPool.algo.ts:847","pc":[3181,3182]},{"teal":3406,"source":"contracts/stakingPool.algo.ts:847","pc":[3183]},{"teal":3407,"source":"contracts/stakingPool.algo.ts:847","pc":[3184]},{"teal":3408,"source":"contracts/stakingPool.algo.ts:847","pc":[3185]},{"teal":3409,"source":"contracts/stakingPool.algo.ts:846","pc":[3186]},{"teal":3413,"source":"contracts/stakingPool.algo.ts:848","pc":[3187,3188]},{"teal":3414,"source":"contracts/stakingPool.algo.ts:848","pc":[3189]},{"teal":3415,"source":"contracts/stakingPool.algo.ts:848","pc":[3190]},{"teal":3416,"source":"contracts/stakingPool.algo.ts:848","pc":[3191,3192]},{"teal":3417,"source":"contracts/stakingPool.algo.ts:848","pc":[3193]},{"teal":3418,"source":"contracts/stakingPool.algo.ts:848","pc":[3194]},{"teal":3431,"source":"contracts/stakingPool.algo.ts:854","pc":[3195]},{"teal":3432,"source":"contracts/stakingPool.algo.ts:854","pc":[3196]},{"teal":3433,"source":"contracts/stakingPool.algo.ts:854","pc":[3197,3198]},{"teal":3434,"source":"contracts/stakingPool.algo.ts:854","pc":[3199,3200,3201,3202,3203,3204]},{"teal":3435,"source":"contracts/stakingPool.algo.ts:854","pc":[3205,3206]},{"teal":3439,"source":"contracts/stakingPool.algo.ts:855","pc":[3207]},{"teal":3440,"source":"contracts/stakingPool.algo.ts:855","pc":[3208]},{"teal":3441,"source":"contracts/stakingPool.algo.ts:855","pc":[3209,3210]},{"teal":3451,"source":"contracts/stakingPool.algo.ts:857","pc":[3211]},{"teal":3452,"source":"contracts/stakingPool.algo.ts:857","pc":[3212]},{"teal":3453,"source":"contracts/stakingPool.algo.ts:857","pc":[3213]},{"teal":3454,"source":"contracts/stakingPool.algo.ts:857","pc":[3214,3215]},{"teal":3455,"source":"contracts/stakingPool.algo.ts:857","pc":[3216]},{"teal":3456,"source":"contracts/stakingPool.algo.ts:857","pc":[3217]},{"teal":3457,"source":"contracts/stakingPool.algo.ts:857","pc":[3218]},{"teal":3458,"source":"contracts/stakingPool.algo.ts:857","pc":[3219,3220,3221]},{"teal":3459,"source":"contracts/stakingPool.algo.ts:857","pc":[3222]},{"teal":3460,"source":"contracts/stakingPool.algo.ts:857","pc":[3223]},{"teal":3461,"source":"contracts/stakingPool.algo.ts:857","pc":[3224,3225]},{"teal":3462,"source":"contracts/stakingPool.algo.ts:858","pc":[3226,3227]},{"teal":3463,"source":"contracts/stakingPool.algo.ts:858","pc":[3228]},{"teal":3464,"source":"contracts/stakingPool.algo.ts:858","pc":[3229,3230]},{"teal":3465,"source":"contracts/stakingPool.algo.ts:859","pc":[3231,3232]},{"teal":3466,"source":"contracts/stakingPool.algo.ts:859","pc":[3233]},{"teal":3467,"source":"contracts/stakingPool.algo.ts:859","pc":[3234,3235]},{"teal":3468,"source":"contracts/stakingPool.algo.ts:860","pc":[3236,3237]},{"teal":3469,"source":"contracts/stakingPool.algo.ts:860","pc":[3238]},{"teal":3470,"source":"contracts/stakingPool.algo.ts:860","pc":[3239,3240]},{"teal":3471,"source":"contracts/stakingPool.algo.ts:861","pc":[3241,3242]},{"teal":3472,"source":"contracts/stakingPool.algo.ts:861","pc":[3243]},{"teal":3473,"source":"contracts/stakingPool.algo.ts:861","pc":[3244,3245]},{"teal":3476,"source":"contracts/stakingPool.algo.ts:854","pc":[3246]},{"teal":3477,"source":"contracts/stakingPool.algo.ts:854","pc":[3247,3248]},{"teal":3480,"source":"contracts/stakingPool.algo.ts:854","pc":[3249]},{"teal":3481,"source":"contracts/stakingPool.algo.ts:512","pc":[3250]},{"teal":3486,"source":"contracts/stakingPool.algo.ts:886","pc":[3251,3252,3253]},{"teal":3487,"source":"contracts/stakingPool.algo.ts:886","pc":[3254]},{"teal":3490,"source":"contracts/stakingPool.algo.ts:885","pc":[3255,3256,3257]},{"teal":3491,"source":"contracts/stakingPool.algo.ts:885","pc":[3258]},{"teal":3494,"source":"contracts/stakingPool.algo.ts:884","pc":[3259,3260,3261]},{"teal":3495,"source":"contracts/stakingPool.algo.ts:884","pc":[3262]},{"teal":3498,"source":"contracts/stakingPool.algo.ts:883","pc":[3263,3264,3265]},{"teal":3499,"source":"contracts/stakingPool.algo.ts:883","pc":[3266,3267,3268]},{"teal":3502,"source":"contracts/stakingPool.algo.ts:882","pc":[3269,3270,3271]},{"teal":3503,"source":"contracts/stakingPool.algo.ts:882","pc":[3272,3273,3274]},{"teal":3506,"source":"contracts/stakingPool.algo.ts:881","pc":[3275,3276,3277]},{"teal":3507,"source":"contracts/stakingPool.algo.ts:881","pc":[3278,3279,3280]},{"teal":3510,"source":"contracts/stakingPool.algo.ts:880","pc":[3281,3282]},{"teal":3511,"source":"contracts/stakingPool.algo.ts:880","pc":[3283]},{"teal":3512,"source":"contracts/stakingPool.algo.ts:880","pc":[3284]},{"teal":3513,"source":"contracts/stakingPool.algo.ts:880","pc":[3285]},{"teal":3514,"source":"contracts/stakingPool.algo.ts:880","pc":[3286,3287]},{"teal":3515,"source":"contracts/stakingPool.algo.ts:880","pc":[3288]},{"teal":3516,"source":"contracts/stakingPool.algo.ts:880","pc":[3289]},{"teal":3519,"source":"contracts/stakingPool.algo.ts:880","errorMessage":"argument 6 (feePayment) for goOnline must be a pay transaction","pc":[3290]},{"teal":3522,"source":"contracts/stakingPool.algo.ts:879","pc":[3291,3292,3293]},{"teal":3523,"source":"contracts/stakingPool.algo.ts:879","pc":[3294]},{"teal":3524,"source":"contracts/stakingPool.algo.ts:879","pc":[3295]},{"teal":3540,"source":"contracts/stakingPool.algo.ts:879","pc":[3296,3297,3298]},{"teal":3543,"source":"contracts/stakingPool.algo.ts:879","pc":[3299]},{"teal":3547,"source":"contracts/stakingPool.algo.ts:888","pc":[3300,3301,3302]},{"teal":3550,"source":"contracts/stakingPool.algo.ts:888","errorMessage":"can only be called by owner or manager of validator","pc":[3303]},{"teal":3554,"source":"contracts/stakingPool.algo.ts:889","pc":[3304,3305,3306]},{"teal":3555,"source":"contracts/stakingPool.algo.ts:889","pc":[3307,3308]},{"teal":3560,"source":"contracts/stakingPool.algo.ts:890","pc":[3309,3310]},{"teal":3561,"source":"contracts/stakingPool.algo.ts:890","pc":[3311,3312]},{"teal":3562,"source":"contracts/stakingPool.algo.ts:890","pc":[3313,3314]},{"teal":3563,"source":"contracts/stakingPool.algo.ts:890","pc":[3315]},{"teal":3566,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[3316]},{"teal":3569,"source":"contracts/stakingPool.algo.ts:890","pc":[3317,3318]},{"teal":3570,"source":"contracts/stakingPool.algo.ts:890","pc":[3319,3320]},{"teal":3571,"source":"contracts/stakingPool.algo.ts:890","pc":[3321,3322]},{"teal":3572,"source":"contracts/stakingPool.algo.ts:890","pc":[3323]},{"teal":3575,"source":"contracts/stakingPool.algo.ts:890","errorMessage":"transaction verification failed: {\"txn\":\"feePayment\",\"field\":\"amount\",\"expected\":\"extraFee\"}","pc":[3324]},{"teal":3587,"source":"contracts/stakingPool.algo.ts:891","pc":[3325]},{"teal":3588,"source":"contracts/stakingPool.algo.ts:891","pc":[3326,3327]},{"teal":3589,"source":"contracts/stakingPool.algo.ts:891","pc":[3328,3329]},{"teal":3593,"source":"contracts/stakingPool.algo.ts:892","pc":[3330,3331]},{"teal":3594,"source":"contracts/stakingPool.algo.ts:892","pc":[3332,3333]},{"teal":3598,"source":"contracts/stakingPool.algo.ts:893","pc":[3334,3335]},{"teal":3599,"source":"contracts/stakingPool.algo.ts:893","pc":[3336,3337]},{"teal":3603,"source":"contracts/stakingPool.algo.ts:894","pc":[3338,3339]},{"teal":3604,"source":"contracts/stakingPool.algo.ts:894","pc":[3340,3341]},{"teal":3608,"source":"contracts/stakingPool.algo.ts:895","pc":[3342,3343]},{"teal":3609,"source":"contracts/stakingPool.algo.ts:895","pc":[3344,3345]},{"teal":3613,"source":"contracts/stakingPool.algo.ts:896","pc":[3346,3347]},{"teal":3614,"source":"contracts/stakingPool.algo.ts:896","pc":[3348,3349]},{"teal":3618,"source":"contracts/stakingPool.algo.ts:897","pc":[3350,3351]},{"teal":3619,"source":"contracts/stakingPool.algo.ts:897","pc":[3352,3353]},{"teal":3623,"source":"contracts/stakingPool.algo.ts:898","pc":[3354,3355]},{"teal":3624,"source":"contracts/stakingPool.algo.ts:898","pc":[3356,3357]},{"teal":3627,"source":"contracts/stakingPool.algo.ts:891","pc":[3358]},{"teal":3628,"source":"contracts/stakingPool.algo.ts:879","pc":[3359]},{"teal":3633,"source":"contracts/stakingPool.algo.ts:907","pc":[3360,3361,3362]},{"teal":3634,"source":"contracts/stakingPool.algo.ts:907","pc":[3363]},{"teal":3635,"source":"contracts/stakingPool.algo.ts:907","pc":[3364]},{"teal":3642,"source":"contracts/stakingPool.algo.ts:907","pc":[3365,3366,3367]},{"teal":3647,"source":"contracts/stakingPool.algo.ts:910","pc":[3368,3369]},{"teal":3648,"source":"contracts/stakingPool.algo.ts:910","pc":[3370]},{"teal":3649,"source":"contracts/stakingPool.algo.ts:910","pc":[3371]},{"teal":3650,"source":"contracts/stakingPool.algo.ts:910","pc":[3372,3373]},{"teal":3651,"source":"contracts/stakingPool.algo.ts:910","pc":[3374]},{"teal":3652,"source":"contracts/stakingPool.algo.ts:910","pc":[3375]},{"teal":3653,"source":"contracts/stakingPool.algo.ts:910","pc":[3376,3377,3378]},{"teal":3658,"source":"contracts/stakingPool.algo.ts:911","pc":[3379,3380,3381]},{"teal":3661,"source":"contracts/stakingPool.algo.ts:911","errorMessage":"can only be called by owner or manager of validator","pc":[3382]},{"teal":3666,"source":"contracts/stakingPool.algo.ts:914","pc":[3383]},{"teal":3667,"source":"contracts/stakingPool.algo.ts:914","pc":[3384,3385]},{"teal":3668,"source":"contracts/stakingPool.algo.ts:914","pc":[3386,3387]},{"teal":3671,"source":"contracts/stakingPool.algo.ts:914","pc":[3388]},{"teal":3672,"source":"contracts/stakingPool.algo.ts:914","pc":[3389,3390]},{"teal":3675,"source":"contracts/stakingPool.algo.ts:914","pc":[3391]},{"teal":3676,"source":"contracts/stakingPool.algo.ts:907","pc":[3392]},{"teal":3681,"source":"contracts/stakingPool.algo.ts:920","pc":[3393,3394,3395]},{"teal":3682,"source":"contracts/stakingPool.algo.ts:920","pc":[3396,3397,3398]},{"teal":3685,"source":"contracts/stakingPool.algo.ts:920","pc":[3399,3400,3401]},{"teal":3686,"source":"contracts/stakingPool.algo.ts:920","pc":[3402]},{"teal":3689,"source":"contracts/stakingPool.algo.ts:920","pc":[3403,3404,3405]},{"teal":3690,"source":"contracts/stakingPool.algo.ts:920","pc":[3406]},{"teal":3691,"source":"contracts/stakingPool.algo.ts:920","pc":[3407]},{"teal":3695,"source":"contracts/stakingPool.algo.ts:920","pc":[3408,3409,3410]},{"teal":3699,"source":"contracts/stakingPool.algo.ts:921","pc":[3411,3412,3413]},{"teal":3702,"source":"contracts/stakingPool.algo.ts:921","errorMessage":"can only be called by owner or manager of validator","pc":[3414]},{"teal":3710,"source":"contracts/stakingPool.algo.ts:923","pc":[3415]},{"teal":3711,"source":"contracts/stakingPool.algo.ts:923","pc":[3416]},{"teal":3712,"source":"contracts/stakingPool.algo.ts:923","pc":[3417,3418]},{"teal":3716,"source":"contracts/stakingPool.algo.ts:924","pc":[3419,3420]},{"teal":3717,"source":"contracts/stakingPool.algo.ts:924","pc":[3421,3422]},{"teal":3721,"source":"contracts/stakingPool.algo.ts:925","pc":[3423,3424,3425,3426,3427,3428,3429,3430,3431,3432,3433,3434,3435,3436,3437,3438,3439]},{"teal":3722,"source":"contracts/stakingPool.algo.ts:925","pc":[3440,3441]},{"teal":3723,"source":"contracts/stakingPool.algo.ts:925","pc":[3442,3443]},{"teal":3724,"source":"contracts/stakingPool.algo.ts:925","pc":[3444,3445]},{"teal":3725,"source":"contracts/stakingPool.algo.ts:925","pc":[3446,3447]},{"teal":3726,"source":"contracts/stakingPool.algo.ts:925","pc":[3448]},{"teal":3727,"source":"contracts/stakingPool.algo.ts:925","pc":[3449,3450]},{"teal":3728,"source":"contracts/stakingPool.algo.ts:925","pc":[3451,3452]},{"teal":3729,"source":"contracts/stakingPool.algo.ts:925","pc":[3453,3454]},{"teal":3733,"source":"contracts/stakingPool.algo.ts:926","pc":[3455,3456]},{"teal":3734,"source":"contracts/stakingPool.algo.ts:926","pc":[3457,3458]},{"teal":3737,"source":"contracts/stakingPool.algo.ts:923","pc":[3459]},{"teal":3738,"source":"contracts/stakingPool.algo.ts:923","pc":[3460,3461]},{"teal":3741,"source":"contracts/stakingPool.algo.ts:923","pc":[3462]},{"teal":3742,"source":"contracts/stakingPool.algo.ts:920","pc":[3463]},{"teal":3747,"source":"contracts/stakingPool.algo.ts:936","pc":[3464,3465]},{"teal":3750,"source":"contracts/stakingPool.algo.ts:936","pc":[3466,3467,3468]},{"teal":3751,"source":"contracts/stakingPool.algo.ts:936","pc":[3469]},{"teal":3752,"source":"contracts/stakingPool.algo.ts:936","pc":[3470]},{"teal":3753,"source":"contracts/stakingPool.algo.ts:936","pc":[3471,3472]},{"teal":3754,"source":"contracts/stakingPool.algo.ts:936","pc":[3473]},{"teal":3757,"source":"contracts/stakingPool.algo.ts:936","errorMessage":"argument 0 (poolKey) for proxiedSetTokenPayoutRatio must be a (uint64,uint64,uint64)","pc":[3474]},{"teal":3760,"source":"contracts/stakingPool.algo.ts:936","pc":[3475,3476,3477]},{"teal":3761,"source":"contracts/stakingPool.algo.ts:936","pc":[3478]},{"teal":3762,"source":"contracts/stakingPool.algo.ts:936","pc":[3479]},{"teal":3763,"source":"contracts/stakingPool.algo.ts:936","pc":[3480]},{"teal":3764,"source":"contracts/stakingPool.algo.ts:936","pc":[3481]},{"teal":3773,"source":"contracts/stakingPool.algo.ts:936","pc":[3482,3483,3484]},{"teal":3776,"source":"contracts/stakingPool.algo.ts:936","pc":[3485]},{"teal":3780,"source":"contracts/stakingPool.algo.ts:937","pc":[3486]},{"teal":3781,"source":"contracts/stakingPool.algo.ts:937","pc":[3487]},{"teal":3782,"source":"contracts/stakingPool.algo.ts:937","pc":[3488,3489]},{"teal":3783,"source":"contracts/stakingPool.algo.ts:937","pc":[3490,3491,3492]},{"teal":3784,"source":"contracts/stakingPool.algo.ts:937","pc":[3493]},{"teal":3785,"source":"contracts/stakingPool.algo.ts:937","pc":[3494]},{"teal":3788,"source":"contracts/stakingPool.algo.ts:937","errorMessage":"caller must be part of same validator set!","pc":[3495]},{"teal":3792,"source":"contracts/stakingPool.algo.ts:938","pc":[3496,3497]},{"teal":3793,"source":"contracts/stakingPool.algo.ts:938","pc":[3498]},{"teal":3794,"source":"contracts/stakingPool.algo.ts:938","pc":[3499]},{"teal":3795,"source":"contracts/stakingPool.algo.ts:938","pc":[3500]},{"teal":3798,"source":"contracts/stakingPool.algo.ts:938","errorMessage":"callee must be pool 1","pc":[3501]},{"teal":3802,"source":"contracts/stakingPool.algo.ts:939","pc":[3502,3503]},{"teal":3803,"source":"contracts/stakingPool.algo.ts:939","pc":[3504,3505,3506]},{"teal":3804,"source":"contracts/stakingPool.algo.ts:939","pc":[3507]},{"teal":3805,"source":"contracts/stakingPool.algo.ts:939","pc":[3508]},{"teal":3806,"source":"contracts/stakingPool.algo.ts:939","pc":[3509]},{"teal":3809,"source":"contracts/stakingPool.algo.ts:939","errorMessage":"caller must NOT be pool 1","pc":[3510]},{"teal":3816,"source":"contracts/stakingPool.algo.ts:941","pc":[3511]},{"teal":3817,"source":"contracts/stakingPool.algo.ts:941","pc":[3512]},{"teal":3818,"source":"contracts/stakingPool.algo.ts:941","pc":[3513,3514]},{"teal":3819,"source":"contracts/stakingPool.algo.ts:941","pc":[3515,3516]},{"teal":3820,"source":"contracts/stakingPool.algo.ts:941","pc":[3517,3518]},{"teal":3824,"source":"contracts/stakingPool.algo.ts:942","pc":[3519]},{"teal":3825,"source":"contracts/stakingPool.algo.ts:942","pc":[3520]},{"teal":3826,"source":"contracts/stakingPool.algo.ts:942","pc":[3521,3522]},{"teal":3830,"source":"contracts/stakingPool.algo.ts:943","pc":[3523,3524]},{"teal":3831,"source":"contracts/stakingPool.algo.ts:943","pc":[3525,3526,3527]},{"teal":3832,"source":"contracts/stakingPool.algo.ts:943","pc":[3528]},{"teal":3833,"source":"contracts/stakingPool.algo.ts:943","pc":[3529]},{"teal":3834,"source":"contracts/stakingPool.algo.ts:943","pc":[3530,3531]},{"teal":3835,"source":"contracts/stakingPool.algo.ts:943","pc":[3532,3533]},{"teal":3836,"source":"contracts/stakingPool.algo.ts:943","pc":[3534,3535,3536]},{"teal":3837,"source":"contracts/stakingPool.algo.ts:943","pc":[3537]},{"teal":3838,"source":"contracts/stakingPool.algo.ts:943","pc":[3538]},{"teal":3839,"source":"contracts/stakingPool.algo.ts:943","pc":[3539,3540]},{"teal":3842,"source":"contracts/stakingPool.algo.ts:941","pc":[3541]},{"teal":3843,"source":"contracts/stakingPool.algo.ts:941","pc":[3542,3543]},{"teal":3846,"source":"contracts/stakingPool.algo.ts:941","pc":[3544]},{"teal":3847,"source":"contracts/stakingPool.algo.ts:941","pc":[3545,3546]},{"teal":3848,"source":"contracts/stakingPool.algo.ts:941","pc":[3547]},{"teal":3849,"source":"contracts/stakingPool.algo.ts:941","pc":[3548]},{"teal":3850,"source":"contracts/stakingPool.algo.ts:941","pc":[3549,3550]},{"teal":3851,"source":"contracts/stakingPool.algo.ts:941","pc":[3551,3552,3553]},{"teal":3852,"source":"contracts/stakingPool.algo.ts:941","pc":[3554]},{"teal":3853,"source":"contracts/stakingPool.algo.ts:941","pc":[3555,3556]},{"teal":3857,"source":"contracts/stakingPool.algo.ts:945","pc":[3557,3558]},{"teal":3858,"source":"contracts/stakingPool.algo.ts:945","pc":[3559,3560]},{"teal":3859,"source":"contracts/stakingPool.algo.ts:945","pc":[3561,3562,3563]},{"teal":3860,"source":"contracts/stakingPool.algo.ts:945","pc":[3564]},{"teal":3861,"source":"contracts/stakingPool.algo.ts:945","pc":[3565]},{"teal":3862,"source":"contracts/stakingPool.algo.ts:945","pc":[3566]},{"teal":3866,"source":"contracts/stakingPool.algo.ts:946","pc":[3567,3568]},{"teal":3867,"source":"contracts/stakingPool.algo.ts:946","pc":[3569,3570]},{"teal":3868,"source":"contracts/stakingPool.algo.ts:946","pc":[3571,3572,3573]},{"teal":3869,"source":"contracts/stakingPool.algo.ts:946","pc":[3574]},{"teal":3870,"source":"contracts/stakingPool.algo.ts:946","pc":[3575,3576]},{"teal":3871,"source":"contracts/stakingPool.algo.ts:946","pc":[3577]},{"teal":3872,"source":"contracts/stakingPool.algo.ts:946","pc":[3578]},{"teal":3873,"source":"contracts/stakingPool.algo.ts:946","pc":[3579]},{"teal":3880,"source":"contracts/stakingPool.algo.ts:948","pc":[3580]},{"teal":3881,"source":"contracts/stakingPool.algo.ts:948","pc":[3581]},{"teal":3882,"source":"contracts/stakingPool.algo.ts:948","pc":[3582,3583]},{"teal":3883,"source":"contracts/stakingPool.algo.ts:948","pc":[3584,3585]},{"teal":3884,"source":"contracts/stakingPool.algo.ts:948","pc":[3586,3587]},{"teal":3888,"source":"contracts/stakingPool.algo.ts:949","pc":[3588]},{"teal":3889,"source":"contracts/stakingPool.algo.ts:949","pc":[3589]},{"teal":3890,"source":"contracts/stakingPool.algo.ts:949","pc":[3590,3591]},{"teal":3894,"source":"contracts/stakingPool.algo.ts:950","pc":[3592]},{"teal":3895,"source":"contracts/stakingPool.algo.ts:950","pc":[3593]},{"teal":3896,"source":"contracts/stakingPool.algo.ts:950","pc":[3594]},{"teal":3897,"source":"contracts/stakingPool.algo.ts:950","pc":[3595,3596]},{"teal":3900,"source":"contracts/stakingPool.algo.ts:948","pc":[3597]},{"teal":3901,"source":"contracts/stakingPool.algo.ts:948","pc":[3598,3599]},{"teal":3904,"source":"contracts/stakingPool.algo.ts:948","pc":[3600]},{"teal":3905,"source":"contracts/stakingPool.algo.ts:948","pc":[3601,3602]},{"teal":3906,"source":"contracts/stakingPool.algo.ts:948","pc":[3603]},{"teal":3907,"source":"contracts/stakingPool.algo.ts:948","pc":[3604]},{"teal":3908,"source":"contracts/stakingPool.algo.ts:948","pc":[3605,3606]},{"teal":3909,"source":"contracts/stakingPool.algo.ts:948","pc":[3607,3608,3609]},{"teal":3912,"source":"contracts/stakingPool.algo.ts:936","pc":[3610,3611]},{"teal":3913,"source":"contracts/stakingPool.algo.ts:936","pc":[3612]},{"teal":3917,"source":"contracts/stakingPool.algo.ts:954","pc":[3613,3614,3615]},{"teal":3920,"source":"contracts/stakingPool.algo.ts:954","pc":[3616]},{"teal":3927,"source":"contracts/stakingPool.algo.ts:955","pc":[3617]},{"teal":3928,"source":"contracts/stakingPool.algo.ts:955","pc":[3618]},{"teal":3929,"source":"contracts/stakingPool.algo.ts:955","pc":[3619,3620]},{"teal":3930,"source":"contracts/stakingPool.algo.ts:955","pc":[3621,3622,3623,3624,3625,3626]},{"teal":3931,"source":"contracts/stakingPool.algo.ts:955","pc":[3627,3628]},{"teal":3935,"source":"contracts/stakingPool.algo.ts:956","pc":[3629]},{"teal":3936,"source":"contracts/stakingPool.algo.ts:956","pc":[3630]},{"teal":3937,"source":"contracts/stakingPool.algo.ts:956","pc":[3631,3632]},{"teal":3941,"source":"contracts/stakingPool.algo.ts:957","pc":[3633]},{"teal":3942,"source":"contracts/stakingPool.algo.ts:957","pc":[3634]},{"teal":3943,"source":"contracts/stakingPool.algo.ts:957","pc":[3635]},{"teal":3944,"source":"contracts/stakingPool.algo.ts:957","pc":[3636,3637]},{"teal":3947,"source":"contracts/stakingPool.algo.ts:955","pc":[3638]},{"teal":3948,"source":"contracts/stakingPool.algo.ts:955","pc":[3639,3640]},{"teal":3951,"source":"contracts/stakingPool.algo.ts:955","pc":[3641]},{"teal":3952,"source":"contracts/stakingPool.algo.ts:955","pc":[3642,3643]},{"teal":3953,"source":"contracts/stakingPool.algo.ts:955","pc":[3644]},{"teal":3954,"source":"contracts/stakingPool.algo.ts:955","pc":[3645]},{"teal":3955,"source":"contracts/stakingPool.algo.ts:955","pc":[3646,3647]},{"teal":3956,"source":"contracts/stakingPool.algo.ts:955","pc":[3648,3649,3650]},{"teal":3957,"source":"contracts/stakingPool.algo.ts:955","pc":[3651,3652]},{"teal":3961,"source":"contracts/stakingPool.algo.ts:959","pc":[3653,3654]},{"teal":3962,"source":"contracts/stakingPool.algo.ts:959","pc":[3655,3656]},{"teal":3963,"source":"contracts/stakingPool.algo.ts:959","pc":[3657,3658,3659]},{"teal":3964,"source":"contracts/stakingPool.algo.ts:959","pc":[3660]},{"teal":3965,"source":"contracts/stakingPool.algo.ts:959","pc":[3661]},{"teal":3966,"source":"contracts/stakingPool.algo.ts:959","pc":[3662,3663,3664]},{"teal":3967,"source":"contracts/stakingPool.algo.ts:959","pc":[3665,3666]},{"teal":3968,"source":"contracts/stakingPool.algo.ts:959","pc":[3667,3668]},{"teal":3969,"source":"contracts/stakingPool.algo.ts:959","pc":[3669,3670,3671]},{"teal":3970,"source":"contracts/stakingPool.algo.ts:959","pc":[3672]},{"teal":3971,"source":"contracts/stakingPool.algo.ts:959","pc":[3673]},{"teal":3975,"source":"contracts/stakingPool.algo.ts:954","pc":[3674,3675]},{"teal":3976,"source":"contracts/stakingPool.algo.ts:954","pc":[3676]},{"teal":3983,"source":"contracts/stakingPool.algo.ts:966","pc":[3677,3678,3679]},{"teal":3986,"source":"contracts/stakingPool.algo.ts:966","pc":[3680]},{"teal":3990,"source":"contracts/stakingPool.algo.ts:967","pc":[3681,3682,3683]},{"teal":3991,"source":"contracts/stakingPool.algo.ts:967","pc":[3684,3685]},{"teal":3995,"source":"contracts/stakingPool.algo.ts:969","pc":[3686,3687]},{"teal":3996,"source":"contracts/stakingPool.algo.ts:969","pc":[3688,3689]},{"teal":3997,"source":"contracts/stakingPool.algo.ts:969","pc":[3690]},{"teal":3998,"source":"contracts/stakingPool.algo.ts:969","pc":[3691]},{"teal":3999,"source":"contracts/stakingPool.algo.ts:969","pc":[3692,3693]},{"teal":4000,"source":"contracts/stakingPool.algo.ts:969","pc":[3694]},{"teal":4001,"source":"contracts/stakingPool.algo.ts:969","pc":[3695]},{"teal":4002,"source":"contracts/stakingPool.algo.ts:969","pc":[3696]},{"teal":4003,"source":"contracts/stakingPool.algo.ts:969","pc":[3697]},{"teal":4004,"source":"contracts/stakingPool.algo.ts:969","pc":[3698]},{"teal":4007,"source":"contracts/stakingPool.algo.ts:969","errorMessage":"wideRatio failed","pc":[3699]},{"teal":4010,"source":"contracts/stakingPool.algo.ts:966","pc":[3700,3701]},{"teal":4011,"source":"contracts/stakingPool.algo.ts:966","pc":[3702]},{"teal":4015,"source":"contracts/stakingPool.algo.ts:972","pc":[3703,3704,3705]},{"teal":4020,"source":"contracts/stakingPool.algo.ts:974","pc":[3706,3707]},{"teal":4021,"source":"contracts/stakingPool.algo.ts:974","pc":[3708,3709]},{"teal":4022,"source":"contracts/stakingPool.algo.ts:974","pc":[3710]},{"teal":4023,"source":"contracts/stakingPool.algo.ts:974","pc":[3711]},{"teal":4024,"source":"contracts/stakingPool.algo.ts:974","pc":[3712,3713,3714]},{"teal":4029,"source":"contracts/stakingPool.algo.ts:975","pc":[3715,3716]},{"teal":4030,"source":"contracts/stakingPool.algo.ts:975","pc":[3717]},{"teal":4035,"source":"contracts/stakingPool.algo.ts:977","pc":[3718]},{"teal":4036,"source":"contracts/stakingPool.algo.ts:972","pc":[3719]},{"teal":4040,"source":"contracts/stakingPool.algo.ts:980","pc":[3720,3721,3722]},{"teal":4044,"source":"contracts/stakingPool.algo.ts:981","pc":[3723]},{"teal":4045,"source":"contracts/stakingPool.algo.ts:980","pc":[3724]},{"teal":4051,"source":"contracts/stakingPool.algo.ts:987","pc":[3725,3726,3727]},{"teal":4054,"source":"contracts/stakingPool.algo.ts:987","pc":[3728]},{"teal":4055,"source":"contracts/stakingPool.algo.ts:987","pc":[3729,3730]},{"teal":4059,"source":"contracts/stakingPool.algo.ts:988","pc":[3731,3732]},{"teal":4060,"source":"contracts/stakingPool.algo.ts:988","pc":[3733]},{"teal":4061,"source":"contracts/stakingPool.algo.ts:988","pc":[3734]},{"teal":4062,"source":"contracts/stakingPool.algo.ts:988","pc":[3735,3736]},{"teal":4067,"source":"contracts/stakingPool.algo.ts:989","pc":[3737,3738]},{"teal":4068,"source":"contracts/stakingPool.algo.ts:989","pc":[3739,3740]},{"teal":4069,"source":"contracts/stakingPool.algo.ts:989","pc":[3741]},{"teal":4070,"source":"contracts/stakingPool.algo.ts:989","pc":[3742,3743]},{"teal":4071,"source":"contracts/stakingPool.algo.ts:989","pc":[3744]},{"teal":4072,"source":"contracts/stakingPool.algo.ts:989","pc":[3745]},{"teal":4073,"source":"contracts/stakingPool.algo.ts:989","pc":[3746]},{"teal":4074,"source":"contracts/stakingPool.algo.ts:989","pc":[3747]},{"teal":4077,"source":"contracts/stakingPool.algo.ts:989","errorMessage":"currentBinSize as uint64 overflowed 64 bits","pc":[3748]},{"teal":4078,"source":"contracts/stakingPool.algo.ts:989","pc":[3749,3750,3751,3752,3753,3754,3755,3756,3757,3758]},{"teal":4079,"source":"contracts/stakingPool.algo.ts:989","pc":[3759]},{"teal":4080,"source":"contracts/stakingPool.algo.ts:989","pc":[3760]},{"teal":4081,"source":"contracts/stakingPool.algo.ts:989","pc":[3761]},{"teal":4082,"source":"contracts/stakingPool.algo.ts:989","pc":[3762]},{"teal":4083,"source":"contracts/stakingPool.algo.ts:989","pc":[3763,3764]},{"teal":4084,"source":"contracts/stakingPool.algo.ts:989","pc":[3765]},{"teal":4085,"source":"contracts/stakingPool.algo.ts:989","pc":[3766]},{"teal":4086,"source":"contracts/stakingPool.algo.ts:989","pc":[3767]},{"teal":4087,"source":"contracts/stakingPool.algo.ts:989","pc":[3768]},{"teal":4088,"source":"contracts/stakingPool.algo.ts:989","pc":[3769]},{"teal":4089,"source":"contracts/stakingPool.algo.ts:989","pc":[3770]},{"teal":4090,"source":"contracts/stakingPool.algo.ts:989","pc":[3771,3772,3773]},{"teal":4096,"source":"contracts/stakingPool.algo.ts:990","pc":[3774,3775]},{"teal":4097,"source":"contracts/stakingPool.algo.ts:990","pc":[3776,3777]},{"teal":4098,"source":"contracts/stakingPool.algo.ts:990","pc":[3778]},{"teal":4099,"source":"contracts/stakingPool.algo.ts:990","pc":[3779,3780,3781]},{"teal":4104,"source":"contracts/stakingPool.algo.ts:991","pc":[3782]},{"teal":4105,"source":"contracts/stakingPool.algo.ts:991","pc":[3783]},{"teal":4106,"source":"contracts/stakingPool.algo.ts:991","pc":[3784,3785]},{"teal":4107,"source":"contracts/stakingPool.algo.ts:991","pc":[3786]},{"teal":4108,"source":"contracts/stakingPool.algo.ts:991","pc":[3787,3788]},{"teal":4109,"source":"contracts/stakingPool.algo.ts:991","pc":[3789,3790]},{"teal":4110,"source":"contracts/stakingPool.algo.ts:991","pc":[3791]},{"teal":4111,"source":"contracts/stakingPool.algo.ts:991","pc":[3792,3793]},{"teal":4112,"source":"contracts/stakingPool.algo.ts:991","pc":[3794,3795]},{"teal":4113,"source":"contracts/stakingPool.algo.ts:991","pc":[3796,3797]},{"teal":4114,"source":"contracts/stakingPool.algo.ts:991","pc":[3798,3799]},{"teal":4115,"source":"contracts/stakingPool.algo.ts:991","pc":[3800]},{"teal":4120,"source":"contracts/stakingPool.algo.ts:993","pc":[3801,3802]},{"teal":4121,"source":"contracts/stakingPool.algo.ts:993","pc":[3803,3804,3805,3806,3807,3808,3809,3810,3811,3812,3813,3814,3815,3816,3817,3818,3819,3820]},{"teal":4122,"source":"contracts/stakingPool.algo.ts:993","pc":[3821]},{"teal":4123,"source":"contracts/stakingPool.algo.ts:993","pc":[3822]},{"teal":4124,"source":"contracts/stakingPool.algo.ts:993","pc":[3823]},{"teal":4125,"source":"contracts/stakingPool.algo.ts:993","pc":[3824,3825]},{"teal":4126,"source":"contracts/stakingPool.algo.ts:993","pc":[3826]},{"teal":4129,"source":"contracts/stakingPool.algo.ts:993","errorMessage":"currentBinSize * (365 as uint128) overflowed 128 bits","pc":[3827]},{"teal":4130,"source":"contracts/stakingPool.algo.ts:993","pc":[3828,3829]},{"teal":4131,"source":"contracts/stakingPool.algo.ts:993","pc":[3830]},{"teal":4132,"source":"contracts/stakingPool.algo.ts:993","pc":[3831]},{"teal":4133,"source":"contracts/stakingPool.algo.ts:993","pc":[3832]},{"teal":4134,"source":"contracts/stakingPool.algo.ts:993","pc":[3833]},{"teal":4135,"source":"contracts/stakingPool.algo.ts:993","pc":[3834,3835]},{"teal":4136,"source":"contracts/stakingPool.algo.ts:993","pc":[3836]},{"teal":4137,"source":"contracts/stakingPool.algo.ts:993","pc":[3837]},{"teal":4138,"source":"contracts/stakingPool.algo.ts:993","pc":[3838]},{"teal":4139,"source":"contracts/stakingPool.algo.ts:993","pc":[3839,3840]},{"teal":4143,"source":"contracts/stakingPool.algo.ts:994","pc":[3841,3842]},{"teal":4144,"source":"contracts/stakingPool.algo.ts:994","pc":[3843]},{"teal":4145,"source":"contracts/stakingPool.algo.ts:994","pc":[3844,3845]},{"teal":4146,"source":"contracts/stakingPool.algo.ts:994","pc":[3846]},{"teal":4147,"source":"contracts/stakingPool.algo.ts:994","pc":[3847]},{"teal":4148,"source":"contracts/stakingPool.algo.ts:994","pc":[3848]},{"teal":4149,"source":"contracts/stakingPool.algo.ts:994","pc":[3849,3850]},{"teal":4150,"source":"contracts/stakingPool.algo.ts:994","pc":[3851]},{"teal":4153,"source":"contracts/stakingPool.algo.ts:994","errorMessage":"this.stakeAccumulator.value / currentBinSize overflowed 128 bits","pc":[3852]},{"teal":4154,"source":"contracts/stakingPool.algo.ts:994","pc":[3853,3854]},{"teal":4155,"source":"contracts/stakingPool.algo.ts:994","pc":[3855]},{"teal":4156,"source":"contracts/stakingPool.algo.ts:994","pc":[3856]},{"teal":4157,"source":"contracts/stakingPool.algo.ts:994","pc":[3857]},{"teal":4158,"source":"contracts/stakingPool.algo.ts:994","pc":[3858]},{"teal":4159,"source":"contracts/stakingPool.algo.ts:994","pc":[3859,3860]},{"teal":4160,"source":"contracts/stakingPool.algo.ts:994","pc":[3861]},{"teal":4161,"source":"contracts/stakingPool.algo.ts:994","pc":[3862]},{"teal":4162,"source":"contracts/stakingPool.algo.ts:994","pc":[3863]},{"teal":4163,"source":"contracts/stakingPool.algo.ts:994","pc":[3864,3865]},{"teal":4168,"source":"contracts/stakingPool.algo.ts:995","pc":[3866,3867]},{"teal":4169,"source":"contracts/stakingPool.algo.ts:995","pc":[3868,3869]},{"teal":4170,"source":"contracts/stakingPool.algo.ts:995","pc":[3870]},{"teal":4171,"source":"contracts/stakingPool.algo.ts:995","pc":[3871,3872,3873]},{"teal":4178,"source":"contracts/stakingPool.algo.ts:1000","pc":[3874,3875]},{"teal":4179,"source":"contracts/stakingPool.algo.ts:1000","pc":[3876]},{"teal":4180,"source":"contracts/stakingPool.algo.ts:1000","pc":[3877]},{"teal":4181,"source":"contracts/stakingPool.algo.ts:1000","pc":[3878,3879,3880,3881,3882,3883,3884,3885,3886,3887,3888,3889,3890,3891,3892,3893,3894,3895]},{"teal":4182,"source":"contracts/stakingPool.algo.ts:1000","pc":[3896]},{"teal":4183,"source":"contracts/stakingPool.algo.ts:1000","pc":[3897,3898]},{"teal":4184,"source":"contracts/stakingPool.algo.ts:1000","pc":[3899]},{"teal":4185,"source":"contracts/stakingPool.algo.ts:1001","pc":[3900,3901]},{"teal":4186,"source":"contracts/stakingPool.algo.ts:1001","pc":[3902,3903]},{"teal":4187,"source":"contracts/stakingPool.algo.ts:1001","pc":[3904]},{"teal":4188,"source":"contracts/stakingPool.algo.ts:1000","pc":[3905]},{"teal":4189,"source":"contracts/stakingPool.algo.ts:1000","pc":[3906]},{"teal":4190,"source":"contracts/stakingPool.algo.ts:1000","pc":[3907]},{"teal":4191,"source":"contracts/stakingPool.algo.ts:1000","pc":[3908,3909]},{"teal":4192,"source":"contracts/stakingPool.algo.ts:1000","pc":[3910]},{"teal":4195,"source":"contracts/stakingPool.algo.ts:1000","errorMessage":"(((this.rewardAccumulator.value as uint128) * (10000 as uint128)) / avgStake) *\\n (approxRoundsPerYear / currentBinSize) overflowed 128 bits","pc":[3911]},{"teal":4196,"source":"contracts/stakingPool.algo.ts:1000","pc":[3912,3913]},{"teal":4197,"source":"contracts/stakingPool.algo.ts:1000","pc":[3914]},{"teal":4198,"source":"contracts/stakingPool.algo.ts:1000","pc":[3915]},{"teal":4199,"source":"contracts/stakingPool.algo.ts:1000","pc":[3916]},{"teal":4200,"source":"contracts/stakingPool.algo.ts:1000","pc":[3917]},{"teal":4201,"source":"contracts/stakingPool.algo.ts:1000","pc":[3918,3919]},{"teal":4202,"source":"contracts/stakingPool.algo.ts:1000","pc":[3920]},{"teal":4203,"source":"contracts/stakingPool.algo.ts:1000","pc":[3921]},{"teal":4204,"source":"contracts/stakingPool.algo.ts:1000","pc":[3922]},{"teal":4205,"source":"contracts/stakingPool.algo.ts:999","pc":[3923,3924]},{"teal":4209,"source":"contracts/stakingPool.algo.ts:1003","pc":[3925,3926,3927,3928,3929,3930,3931,3932,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942]},{"teal":4210,"source":"contracts/stakingPool.algo.ts:1003","pc":[3943,3944]},{"teal":4215,"source":"contracts/stakingPool.algo.ts:1005","pc":[3945,3946]},{"teal":4216,"source":"contracts/stakingPool.algo.ts:1005","pc":[3947,3948,3949,3950,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964]},{"teal":4217,"source":"contracts/stakingPool.algo.ts:1005","pc":[3965]},{"teal":4218,"source":"contracts/stakingPool.algo.ts:1005","pc":[3966,3967,3968]},{"teal":4223,"source":"contracts/stakingPool.algo.ts:1006","pc":[3969,3970,3971,3972,3973,3974,3975,3976,3977,3978,3979,3980,3981,3982,3983,3984,3985,3986]},{"teal":4224,"source":"contracts/stakingPool.algo.ts:1006","pc":[3987,3988]},{"teal":4231,"source":"contracts/stakingPool.algo.ts:1008","pc":[3989,3990]},{"teal":4232,"source":"contracts/stakingPool.algo.ts:1008","pc":[3991]},{"teal":4233,"source":"contracts/stakingPool.algo.ts:1009","pc":[3992]},{"teal":4234,"source":"contracts/stakingPool.algo.ts:1009","pc":[3993,3994]},{"teal":4235,"source":"contracts/stakingPool.algo.ts:1009","pc":[3995,3996]},{"teal":4236,"source":"contracts/stakingPool.algo.ts:1009","pc":[3997]},{"teal":4237,"source":"contracts/stakingPool.algo.ts:1009","pc":[3998]},{"teal":4238,"source":"contracts/stakingPool.algo.ts:1009","pc":[3999,4000]},{"teal":4239,"source":"contracts/stakingPool.algo.ts:1009","pc":[4001]},{"teal":4240,"source":"contracts/stakingPool.algo.ts:1010","pc":[4002,4003]},{"teal":4241,"source":"contracts/stakingPool.algo.ts:1010","pc":[4004,4005]},{"teal":4242,"source":"contracts/stakingPool.algo.ts:1010","pc":[4006]},{"teal":4243,"source":"contracts/stakingPool.algo.ts:1010","pc":[4007,4008]},{"teal":4244,"source":"contracts/stakingPool.algo.ts:1010","pc":[4009]},{"teal":4245,"source":"contracts/stakingPool.algo.ts:1009","pc":[4010]},{"teal":4246,"source":"contracts/stakingPool.algo.ts:1009","pc":[4011]},{"teal":4247,"source":"contracts/stakingPool.algo.ts:1009","pc":[4012]},{"teal":4248,"source":"contracts/stakingPool.algo.ts:1009","pc":[4013,4014]},{"teal":4249,"source":"contracts/stakingPool.algo.ts:1009","pc":[4015]},{"teal":4252,"source":"contracts/stakingPool.algo.ts:1009","errorMessage":"(this.weightedMovingAverage.value * ((100 as uint128) - alpha)) / (100 as uint128) +\\n (apr * alpha) / (100 as uint128) overflowed 128 bits","pc":[4016]},{"teal":4253,"source":"contracts/stakingPool.algo.ts:1009","pc":[4017,4018]},{"teal":4254,"source":"contracts/stakingPool.algo.ts:1009","pc":[4019]},{"teal":4255,"source":"contracts/stakingPool.algo.ts:1009","pc":[4020]},{"teal":4256,"source":"contracts/stakingPool.algo.ts:1009","pc":[4021]},{"teal":4257,"source":"contracts/stakingPool.algo.ts:1009","pc":[4022]},{"teal":4258,"source":"contracts/stakingPool.algo.ts:1009","pc":[4023,4024]},{"teal":4259,"source":"contracts/stakingPool.algo.ts:1009","pc":[4025]},{"teal":4260,"source":"contracts/stakingPool.algo.ts:1009","pc":[4026]},{"teal":4261,"source":"contracts/stakingPool.algo.ts:1009","pc":[4027]},{"teal":4262,"source":"contracts/stakingPool.algo.ts:1008","pc":[4028]},{"teal":4267,"source":"contracts/stakingPool.algo.ts:1014","pc":[4029,4030,4031]},{"teal":4271,"source":"contracts/stakingPool.algo.ts:1015","pc":[4032,4033]},{"teal":4272,"source":"contracts/stakingPool.algo.ts:1015","pc":[4034,4035]},{"teal":4273,"source":"contracts/stakingPool.algo.ts:1015","pc":[4036]},{"teal":4274,"source":"contracts/stakingPool.algo.ts:1015","pc":[4037]},{"teal":4275,"source":"contracts/stakingPool.algo.ts:1015","pc":[4038,4039]},{"teal":4276,"source":"contracts/stakingPool.algo.ts:1015","pc":[4040]},{"teal":4277,"source":"contracts/stakingPool.algo.ts:1015","pc":[4041]},{"teal":4278,"source":"contracts/stakingPool.algo.ts:1015","pc":[4042]},{"teal":4279,"source":"contracts/stakingPool.algo.ts:1015","pc":[4043]},{"teal":4280,"source":"contracts/stakingPool.algo.ts:1015","pc":[4044]},{"teal":4281,"source":"contracts/stakingPool.algo.ts:1015","pc":[4045,4046]},{"teal":4282,"source":"contracts/stakingPool.algo.ts:1015","pc":[4047]},{"teal":4285,"source":"contracts/stakingPool.algo.ts:1015","errorMessage":"(this.totalAlgoStaked.value as uint128) * (this.roundsPerDay.value as uint128) overflowed 128 bits","pc":[4048]},{"teal":4286,"source":"contracts/stakingPool.algo.ts:1015","pc":[4049,4050]},{"teal":4287,"source":"contracts/stakingPool.algo.ts:1015","pc":[4051]},{"teal":4288,"source":"contracts/stakingPool.algo.ts:1015","pc":[4052]},{"teal":4289,"source":"contracts/stakingPool.algo.ts:1015","pc":[4053]},{"teal":4290,"source":"contracts/stakingPool.algo.ts:1015","pc":[4054]},{"teal":4291,"source":"contracts/stakingPool.algo.ts:1015","pc":[4055,4056]},{"teal":4292,"source":"contracts/stakingPool.algo.ts:1015","pc":[4057]},{"teal":4293,"source":"contracts/stakingPool.algo.ts:1015","pc":[4058]},{"teal":4294,"source":"contracts/stakingPool.algo.ts:1015","pc":[4059]},{"teal":4295,"source":"contracts/stakingPool.algo.ts:1015","pc":[4060]},{"teal":4299,"source":"contracts/stakingPool.algo.ts:1016","pc":[4061,4062]},{"teal":4300,"source":"contracts/stakingPool.algo.ts:1016","pc":[4063]},{"teal":4301,"source":"contracts/stakingPool.algo.ts:1016","pc":[4064]},{"teal":4305,"source":"contracts/stakingPool.algo.ts:1017","pc":[4065,4066]},{"teal":4306,"source":"contracts/stakingPool.algo.ts:1017","pc":[4067,4068]},{"teal":4307,"source":"contracts/stakingPool.algo.ts:1017","pc":[4069,4070]},{"teal":4308,"source":"contracts/stakingPool.algo.ts:1017","pc":[4071,4072]},{"teal":4309,"source":"contracts/stakingPool.algo.ts:1017","pc":[4073]},{"teal":4310,"source":"contracts/stakingPool.algo.ts:1017","pc":[4074]},{"teal":4311,"source":"contracts/stakingPool.algo.ts:1017","pc":[4075]},{"teal":4312,"source":"contracts/stakingPool.algo.ts:1017","pc":[4076]},{"teal":4315,"source":"contracts/stakingPool.algo.ts:987","pc":[4077]},{"teal":4319,"source":"contracts/stakingPool.algo.ts:1021","pc":[4078,4079,4080]},{"teal":4322,"source":"contracts/stakingPool.algo.ts:1021","pc":[4081]},{"teal":4327,"source":"contracts/stakingPool.algo.ts:1026","pc":[4082,4083]},{"teal":4328,"source":"contracts/stakingPool.algo.ts:1026","pc":[4084,4085]},{"teal":4329,"source":"contracts/stakingPool.algo.ts:1026","pc":[4086]},{"teal":4330,"source":"contracts/stakingPool.algo.ts:1026","pc":[4087,4088,4089]},{"teal":4335,"source":"contracts/stakingPool.algo.ts:1028","pc":[4090,4091]},{"teal":4336,"source":"contracts/stakingPool.algo.ts:1028","pc":[4092,4093]},{"teal":4337,"source":"contracts/stakingPool.algo.ts:1028","pc":[4094]},{"teal":4341,"source":"contracts/stakingPool.algo.ts:1029","pc":[4095]},{"teal":4347,"source":"contracts/stakingPool.algo.ts:1033","pc":[4096,4097]},{"teal":4348,"source":"contracts/stakingPool.algo.ts:1033","pc":[4098]},{"teal":4349,"source":"contracts/stakingPool.algo.ts:1033","pc":[4099]},{"teal":4350,"source":"contracts/stakingPool.algo.ts:1033","pc":[4100,4101]},{"teal":4351,"source":"contracts/stakingPool.algo.ts:1033","pc":[4102,4103]},{"teal":4352,"source":"contracts/stakingPool.algo.ts:1033","pc":[4104,4105]},{"teal":4353,"source":"contracts/stakingPool.algo.ts:1033","pc":[4106]},{"teal":4354,"source":"contracts/stakingPool.algo.ts:1033","pc":[4107,4108]},{"teal":4355,"source":"contracts/stakingPool.algo.ts:1033","pc":[4109]},{"teal":4356,"source":"contracts/stakingPool.algo.ts:1032","pc":[4110,4111]},{"teal":4361,"source":"contracts/stakingPool.algo.ts:1034","pc":[4112,4113]},{"teal":4362,"source":"contracts/stakingPool.algo.ts:1034","pc":[4114]},{"teal":4363,"source":"contracts/stakingPool.algo.ts:1034","pc":[4115]},{"teal":4364,"source":"contracts/stakingPool.algo.ts:1034","pc":[4116,4117,4118]},{"teal":4369,"source":"contracts/stakingPool.algo.ts:1036","pc":[4119,4120]},{"teal":4370,"source":"contracts/stakingPool.algo.ts:1036","pc":[4121,4122]},{"teal":4371,"source":"contracts/stakingPool.algo.ts:1036","pc":[4123]},{"teal":4375,"source":"contracts/stakingPool.algo.ts:1037","pc":[4124]},{"teal":4380,"source":"contracts/stakingPool.algo.ts:1042","pc":[4125,4126]},{"teal":4381,"source":"contracts/stakingPool.algo.ts:1042","pc":[4127,4128,4129,4130]},{"teal":4382,"source":"contracts/stakingPool.algo.ts:1042","pc":[4131,4132]},{"teal":4383,"source":"contracts/stakingPool.algo.ts:1042","pc":[4133]},{"teal":4384,"source":"contracts/stakingPool.algo.ts:1042","pc":[4134]},{"teal":4385,"source":"contracts/stakingPool.algo.ts:1021","pc":[4135]},{"teal":4388,"source":"contracts/stakingPool.algo.ts:37","pc":[4136,4137,4138,4139,4140,4141]},{"teal":4389,"source":"contracts/stakingPool.algo.ts:37","pc":[4142,4143,4144]},{"teal":4390,"source":"contracts/stakingPool.algo.ts:37","pc":[4145,4146,4147,4148]},{"teal":4393,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[4149]},{"teal":4396,"source":"contracts/stakingPool.algo.ts:37","pc":[4150,4151,4152,4153,4154,4155]},{"teal":4397,"source":"contracts/stakingPool.algo.ts:37","pc":[4156,4157,4158,4159,4160,4161]},{"teal":4398,"source":"contracts/stakingPool.algo.ts:37","pc":[4162,4163,4164,4165,4166,4167]},{"teal":4399,"source":"contracts/stakingPool.algo.ts:37","pc":[4168,4169,4170,4171,4172,4173]},{"teal":4400,"source":"contracts/stakingPool.algo.ts:37","pc":[4174,4175,4176,4177,4178,4179]},{"teal":4401,"source":"contracts/stakingPool.algo.ts:37","pc":[4180,4181,4182,4183,4184,4185]},{"teal":4402,"source":"contracts/stakingPool.algo.ts:37","pc":[4186,4187,4188,4189,4190,4191]},{"teal":4403,"source":"contracts/stakingPool.algo.ts:37","pc":[4192,4193,4194,4195,4196,4197]},{"teal":4404,"source":"contracts/stakingPool.algo.ts:37","pc":[4198,4199,4200,4201,4202,4203]},{"teal":4405,"source":"contracts/stakingPool.algo.ts:37","pc":[4204,4205,4206,4207,4208,4209]},{"teal":4406,"source":"contracts/stakingPool.algo.ts:37","pc":[4210,4211,4212,4213,4214,4215]},{"teal":4407,"source":"contracts/stakingPool.algo.ts:37","pc":[4216,4217,4218,4219,4220,4221]},{"teal":4408,"source":"contracts/stakingPool.algo.ts:37","pc":[4222,4223]},{"teal":4409,"source":"contracts/stakingPool.algo.ts:37","pc":[4224,4225,4226]},{"teal":4410,"source":"contracts/stakingPool.algo.ts:37","pc":[4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4241,4242,4243,4244,4245,4246,4247,4248,4249,4250,4251,4252,4253,4254]},{"teal":4413,"source":"contracts/stakingPool.algo.ts:37","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[4255]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgNiA2NCAzMiAxNiAxMjggMjAwIDUgMV8wMDBfMDAwIDMwMCAxMDAwIDQgMl8xMDBfMDAwIDggMTAwMDAwIDQwMCAzMDg1NyAyIDQwIDQ4IFRNUExfbmZkUmVnaXN0cnlBcHBJZApieXRlY2Jsb2NrIDB4IDB4NjM3MjY1NjE3NDZmNzI0MTcwNzAgMHg3Mzc0NjE2YjY1NzI3MyAweDc2NjE2YzY5NjQ2MTc0NmY3MjQ5NjQgMHg3MDZmNmY2YzQ5NjQgMHgwYTgxMDEgMHg3Mzc0NjE2YjY1NjQgMHg3MjZmNzU2ZTY0NzM1MDY1NzI0NDYxNzkgMHg3Mzc0NjE2YjY1NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGIDB4MDAwMDAwMDAwMDAwMDAwMCAweDYyNjk2ZTUyNmY3NTZlNjQ1Mzc0NjE3Mjc0IDB4NzI2NTc3NjE3MjY0NDE2MzYzNzU2ZDc1NmM2MTc0NmY3MiAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4NmM2MTczNzQ1MDYxNzk2Zjc1NzQgMHg3NWFmZjYxZCAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQgMHg2ZDY5NmU0NTZlNzQ3Mjc5NTM3NDYxNmI2NSAweDY1NzA2ZjYzNjg0ZTc1NmQ2MjY1NzIgMHg2NTc3NmQ2MSAweDE1MWY3Yzc1IDB4YTJkYzUxYjUgMHg1NzI3NjdkMSAweDRkZjhkODZlIDB4MGMyMjQ1ZTEgMHgwMAoKLy8gVGhpcyBURUFMIHdhcyBnZW5lcmF0ZWQgYnkgVEVBTFNjcmlwdCB2MC4xMDYuMAovLyBodHRwczovL2dpdGh1Yi5jb20vYWxnb3JhbmRmb3VuZGF0aW9uL1RFQUxTY3JpcHQKCi8vIFRoaXMgY29udHJhY3QgaXMgY29tcGxpYW50IHdpdGggYW5kL29yIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBBUkNzOiBbIEFSQzQgXQoKLy8gVGhlIGZvbGxvd2luZyB0ZW4gbGluZXMgb2YgVEVBTCBoYW5kbGUgaW5pdGlhbCBwcm9ncmFtIGZsb3cKLy8gVGhpcyBwYXR0ZXJuIGlzIHVzZWQgdG8gbWFrZSBpdCBlYXN5IGZvciBhbnlvbmUgdG8gcGFyc2UgdGhlIHN0YXJ0IG9mIHRoZSBwcm9ncmFtIGFuZCBkZXRlcm1pbmUgaWYgYSBzcGVjaWZpYyBhY3Rpb24gaXMgYWxsb3dlZAovLyBIZXJlLCBhY3Rpb24gcmVmZXJzIHRvIHRoZSBPbkNvbXBsZXRlIGluIGNvbWJpbmF0aW9uIHdpdGggd2hldGhlciB0aGUgYXBwIGlzIGJlaW5nIGNyZWF0ZWQgb3IgY2FsbGVkCi8vIEV2ZXJ5IHBvc3NpYmxlIGFjdGlvbiBmb3IgdGhpcyBjb250cmFjdCBpcyByZXByZXNlbnRlZCBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudAovLyBJZiB0aGUgYWN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiB0aGUgY29udHJhY3QsIGl0cyByZXNwZWN0aXZlIGJyYW5jaCB3aWxsIGJlICIqTk9UX0lNUExFTUVOVEVEIiB3aGljaCBqdXN0IGNvbnRhaW5zICJlcnIiCnR4biBBcHBsaWNhdGlvbklECiEKaW50YyAyIC8vIDYKKgp0eG4gT25Db21wbGV0aW9uCisKc3dpdGNoICpjYWxsX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpjcmVhdGVfTm9PcCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQKCipOT1RfSU1QTEVNRU5URUQ6CgkvLyBUaGUgcmVxdWVzdGVkIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBjb250cmFjdC4gQXJlIHlvdSB1c2luZyB0aGUgY29ycmVjdCBPbkNvbXBsZXRlPyBEaWQgeW91IHNldCB5b3VyIGFwcCBJRD8KCWVycgoKLy8gY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbjoKCS8vIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIGNyZWF0aW5nQ29udHJhY3RJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjcmVhdGVBcHBsaWNhdGlvbgoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY3JlYXRlQXBwbGljYXRpb24oY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRCwgdmFsaWRhdG9ySWQ6IHVpbnQ2NCwgcG9vbElkOiB1aW50NjQsIG1pbkVudHJ5U3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gSW5pdGlhbGl6ZSB0aGUgc3Rha2luZyBwb29sIHcvIG93bmVyIGFuZCBtYW5hZ2VyLCBidXQgY2FuIG9ubHkgYmUgY3JlYXRlZCBieSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0LgovLyBAcGFyYW0ge3VpbnQ2NH0gY3JlYXRpbmdDb250cmFjdElkIC0gaWQgb2YgY29udHJhY3QgdGhhdCBjb25zdHJ1Y3RlZCB1cyAtIHRoZSB2YWxpZGF0b3IgYXBwbGljYXRpb24gKHNpbmdsZSBnbG9iYWwgaW5zdGFuY2UpCi8vIEBwYXJhbSB7dWludDY0fSB2YWxpZGF0b3JJZCAtIGlkIG9mIHZhbGlkYXRvciB3ZSdyZSBhIHN0YWtpbmcgcG9vbCBvZgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbElkIC0gd2hpY2ggcG9vbCBpZCBhcmUgd2UKLy8gQHBhcmFtIHt1aW50NjR9IG1pbkVudHJ5U3Rha2UgLSBtaW5pbXVtIGFtb3VudCB0byBiZSBpbiBwb29sLCBidXQgYWxzbyBtaW5pbXVtIGFtb3VudCBiYWxhbmNlIGNhbid0IGdvIGJlbG93ICh3aXRob3V0IHJlbW92aW5nIGFsbCEpCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gNCAwCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMgoJLy8gY3JlYXRpbmdDb250cmFjdElkID09PSBBcHBJRC5mcm9tVWludDY0KDApCglmcmFtZV9kaWcgLTEgLy8gY3JlYXRpbmdDb250cmFjdElkOiBBcHBJRAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYwX2Vsc2UKCgkvLyAqaWYwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwNAoJLy8gYXNzZXJ0KHZhbGlkYXRvcklkID09PSAwKQoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA1CgkvLyBhc3NlcnQocG9vbElkID09PSAwKQoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWFzc2VydAoJYiAqaWYwX2VuZAoKKmlmMF9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA3CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDgKCS8vIGFzc2VydChwb29sSWQgIT09IDApCglmcmFtZV9kaWcgLTMgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoqaWYwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMAoJLy8gYXNzZXJ0KG1pbkVudHJ5U3Rha2UgPj0gTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsICdzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvJykKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCXB1c2hpbnQgMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTEKCS8vIHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlID0gY3JlYXRpbmdDb250cmFjdElkCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWZyYW1lX2RpZyAtMSAvLyBjcmVhdGluZ0NvbnRyYWN0SWQ6IEFwcElECglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExMgoJLy8gdGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTMKCS8vIHRoaXMucG9vbElkLnZhbHVlID0gcG9vbElkCglieXRlYyA0IC8vICAicG9vbElkIgoJZnJhbWVfZGlnIC0zIC8vIHBvb2xJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjExNAoJLy8gdGhpcy5udW1TdGFrZXJzLnZhbHVlID0gMAoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJaW50YyAwIC8vIDAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMTYKCS8vIHRoaXMubWluRW50cnlTdGFrZS52YWx1ZSA9IG1pbkVudHJ5U3Rha2UKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWZyYW1lX2RpZyAtNCAvLyBtaW5FbnRyeVN0YWtlOiB1aW50NjQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE3CgkvLyB0aGlzLmxhc3RQYXlvdXQudmFsdWUgPSBnbG9iYWxzLnJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglnbG9iYWwgUm91bmQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTE4CgkvLyB0aGlzLmVwb2NoTnVtYmVyLnZhbHVlID0gMAoJYnl0ZWMgMTkgLy8gICJlcG9jaE51bWJlciIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjEKCS8vIHRoaXMuYmluUm91bmRTdGFydC52YWx1ZSA9IGdsb2JhbHMucm91bmQgLSAoZ2xvYmFscy5yb3VuZCAlIHRoaXMucm91bmRzUGVyRGF5LnZhbHVlKQoJYnl0ZWMgMTEgLy8gICJiaW5Sb3VuZFN0YXJ0IgoJZ2xvYmFsIFJvdW5kCglnbG9iYWwgUm91bmQKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglhcHBfZ2xvYmFsX2dldAoJJQoJLQoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjIKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IDAgYXMgdWludDEyOAoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEyMwoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMjQKCS8vIHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlID0gMCBhcyB1aW50MTI4CglieXRlYyAyMCAvLyAgImV3bWEiCglieXRlYyAxNiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyBnYXMoKXZvaWQKKmFiaV9yb3V0ZV9nYXM6CgkvLyBleGVjdXRlIGdhcygpdm9pZAoJY2FsbHN1YiBnYXMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdhcygpOiB2b2lkCi8vCi8vIGdhcyBpcyBhIGR1bW15IG5vLW9wIGNhbGwgdGhhdCBjYW4gYmUgdXNlZCB0byBwb29sLXVwIHJlc291cmNlIHJlZmVyZW5jZXMgYW5kIG9wY29kZSBjb3N0CmdhczoKCXByb3RvIDAgMAoJcmV0c3ViCgovLyBjb3N0Rm9yQm94U3RvcmFnZSh0b3RhbE51bUJ5dGVzOiB1aW50NjQpOiB1aW50NjQKY29zdEZvckJveFN0b3JhZ2U6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMzYKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglpbnRjIDE2IC8vIDQwMAoJKgoJKwoJcmV0c3ViCgovLyBpbml0U3RvcmFnZShwYXkpdm9pZAoqYWJpX3JvdXRlX2luaXRTdG9yYWdlOgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKG1iclBheW1lbnQpIGZvciBpbml0U3RvcmFnZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGluaXRTdG9yYWdlKHBheSl2b2lkCgljYWxsc3ViIGluaXRTdG9yYWdlCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBpbml0U3RvcmFnZShtYnJQYXltZW50OiBQYXlUeG4pOiB2b2lkCi8vCi8vIENhbGxlZCBhZnRlciB3ZSdyZSBjcmVhdGVkIGFuZCB0aGVuIGZ1bmRlZCwgc28gd2UgY2FuIGNyZWF0ZSBvdXIgbGFyZ2Ugc3Rha2VycyBsZWRnZXIgc3RvcmFnZQovLyBDYWxsZXIgaGFzIHRvIGdldCBNQlIgYW1vdW50cyBmcm9tIFZhbGlkYXRvclJlZ2lzdHJ5IHRvIGtub3cgaG93IG11Y2ggdG8gZnVuZCB1cyB0byBjb3ZlciB0aGUgYm94IHN0b3JhZ2UgY29zdAovLyBJZiB0aGlzIGlzIHBvb2wgMSBBTkQgdGhlIHZhbGlkYXRvciBoYXMgc3BlY2lmaWVkIGEgcmV3YXJkIHRva2VuLCBvcHQtaW4gdG8gdGhhdCB0b2tlbgovLyBzbyB0aGF0IHRoZSB2YWxpZGF0b3IgY2FuIHNlZWQgdGhlIHBvb2wgd2l0aCBmdXR1cmUgcmV3YXJkcyBvZiB0aGF0IHRva2VuLgovLyBAcGFyYW0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHN0YWtpbmcgcG9vbHMnIHN0b3JhZ2UKaW5pdFN0b3JhZ2U6Cglwcm90byAxIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTQ3CgkvLyBhc3NlcnQoIXRoaXMuc3Rha2Vycy5leGlzdHMsICdzdGFraW5nIHBvb2wgYWxyZWFkeSBpbml0aWFsaXplZCcpCglieXRlYyAyIC8vICAic3Rha2VycyIKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoKCS8vIHN0YWtpbmcgcG9vbCBhbHJlYWR5IGluaXRpYWxpemVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTAKCS8vIHZhbGlkYXRvckNvbmZpZyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuZ2V0VmFsaWRhdG9yQ29uZmlnPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTUgLy8gIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1MgoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE1NAoJLy8gaXNUb2tlbkVsaWdpYmxlID0gdmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQgIT09IDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWZyYW1lX2J1cnkgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNTUKCS8vIGV4dHJhTUJSID0gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxID8gQVNTRVRfSE9MRElOR19GRUUgOiAwCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMAoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQwOgoJYnogKnRlcm5hcnkwX2ZhbHNlCglpbnRjIDE1IC8vIDEwMDAwMAoJYiAqdGVybmFyeTBfZW5kCgoqdGVybmFyeTBfZmFsc2U6CglpbnRjIDAgLy8gMAoKKnRlcm5hcnkwX2VuZDoKCWZyYW1lX2J1cnkgMiAvLyBleHRyYU1CUjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTU2CgkvLyBQb29sSW5pdE1iciA9CgkvLyAgICAgICAgICAgICBBTEdPUkFORF9BQ0NPVU5UX01JTl9CQUxBTkNFICsKCS8vICAgICAgICAgICAgIGV4dHJhTUJSICsKCS8vICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoNyAvKiAnc3Rha2VycycgbmFtZSAqLyArIGxlbjxTdGFrZWRJbmZvPigpICogTUFYX1NUQUtFUlNfUEVSX1BPT0wpCglpbnRjIDE1IC8vIDEwMDAwMAoJZnJhbWVfZGlnIDIgLy8gZXh0cmFNQlI6IHVpbnQ2NAoJKwoJcHVzaGludCAxMjgwNwoJY2FsbHN1YiBjb3N0Rm9yQm94U3RvcmFnZQoJKwoJZnJhbWVfYnVyeSAzIC8vIFBvb2xJbml0TWJyOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxNjIKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IFBvb2xJbml0TWJyIH0pCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBtYnJQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIDMgLy8gUG9vbEluaXRNYnI6IHVpbnQ2NAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6Im1iclBheW1lbnQiLCJmaWVsZCI6ImFtb3VudCIsImV4cGVjdGVkIjoiUG9vbEluaXRNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTYzCgkvLyB0aGlzLnN0YWtlcnMuY3JlYXRlKCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJcHVzaGludCAxMjgwMAoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gKmlmMV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NQoJLy8gaXNUb2tlbkVsaWdpYmxlICYmIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglmcmFtZV9kaWcgMSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWR1cAoJYnogKnNraXBfYW5kMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCSYmCgoqc2tpcF9hbmQxOgoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2NwoJLy8gc2VuZEFzc2V0VHJhbnNmZXIoewoJLy8gICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiAwLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTY4CgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE2OQoJLy8gYXNzZXRSZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcwoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE3MAoJLy8gYXNzZXRBbW91bnQ6IDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMV9lbmQ6CglyZXRzdWIKCi8vIGFkZFN0YWtlKHBheSxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyMSAvLyAweDE1MWY3Yzc1CgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlcikgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBzdGFrZWRBbW91bnRQYXltZW50OiBwYXkKCXR4biBHcm91cEluZGV4CglpbnRjIDEgLy8gMQoJLQoJZHVwCglndHhucyBUeXBlRW51bQoJaW50YyAxIC8vICBwYXkKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VkQW1vdW50UGF5bWVudCkgZm9yIGFkZFN0YWtlIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkU3Rha2UocGF5LGFkZHJlc3MpdWludDY0CgljYWxsc3ViIGFkZFN0YWtlCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gYWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBzdGFrZXI6IEFkZHJlc3MpOiB1aW50NjQKLy8KLy8gQWRkcyBzdGFrZSB0byB0aGUgZ2l2ZW4gYWNjb3VudC4KLy8gQ2FuIE9OTFkgYmUgY2FsbGVkIGJ5IHRoZSB2YWxpZGF0b3IgY29udHJhY3QgdGhhdCBjcmVhdGVkIHVzCi8vIE11c3QgcmVjZWl2ZSBwYXltZW50IGZyb20gdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgYW1vdW50IGJlaW5nIHN0YWtlZC4KLy8KLy8gQHBhcmFtIHtQYXlUeG59IHN0YWtlZEFtb3VudFBheW1lbnQgcHJpb3IgcGF5bWVudCBjb21pbmcgZnJvbSB2YWxpZGF0b3IgY29udHJhY3QgdG8gdXMgb24gYmVoYWxmIG9mIHN0YWtlci4KLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIgLSBUaGUgYWNjb3VudCBhZGRpbmcgbmV3IHN0YWtlCi8vIEB0aHJvd3Mge0Vycm9yfSAtIFRocm93cyBhbiBlcnJvciBpZiB0aGUgc3Rha2luZyBwb29sIGlzIGZ1bGwuCi8vIEByZXR1cm5zIHt1aW50NjR9IG5ldyAnZW50cnkgcm91bmQnIHJvdW5kIG51bWJlciBvZiBzdGFrZSBhZGQKYWRkU3Rha2U6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTg2CgkvLyBhc3NlcnQodGhpcy5zdGFrZXJzLmV4aXN0cywgJ3N0YWtpbmcgcG9vbCBtdXN0IGJlIGluaXRpYWxpemVkIGZpcnN0JykKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3Rha2luZyBwb29sIG11c3QgYmUgaW5pdGlhbGl6ZWQgZmlyc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjE4OQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzLAoJLy8gICAgICAgICAgICAgJ3N0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0JywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCgk9PQoKCS8vIHN0YWtlIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGUgdmFsaWRhdG9yIGNvbnRyYWN0Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTMKCS8vIGFzc2VydChzdGFrZXIgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxOTYKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDAKCS8vIHZlcmlmeVBheVR4bihzdGFrZWRBbW91bnRQYXltZW50LCB7CgkvLyAgICAgICAgICAgICBzZW5kZXI6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLmFkZHJlc3MsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgICAgIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgIH0pCgkvLyB2ZXJpZnkgc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InNlbmRlciIsImV4cGVjdGVkIjoidGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgcmVjZWl2ZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFJlY2VpdmVyCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJPT0KCgkvLyB0cmFuc2FjdGlvbiB2ZXJpZmljYXRpb24gZmFpbGVkOiB7InR4biI6InN0YWtlZEFtb3VudFBheW1lbnQiLCJmaWVsZCI6InJlY2VpdmVyIiwiZXhwZWN0ZWQiOiJ0aGlzLmFwcC5hZGRyZXNzIn0KCWFzc2VydAoKCS8vIHZlcmlmeSBhbW91bnQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50Cgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoiYW1vdW50IiwiZXhwZWN0ZWQiOiJzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMDkKCS8vIGVudHJ5Um91bmQgPSBnbG9iYWxzLnJvdW5kICsgQUxHT1JBTkRfU1RBS0lOR19CTE9DS19ERUxBWQoJZ2xvYmFsIFJvdW5kCglwdXNoaW50IDMyMAoJKwoJZnJhbWVfYnVyeSAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxMAoJLy8gZmlyc3RFbXB0eSA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gZmlyc3RFbXB0eTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjEyCgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNAoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxNQoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglpdG9iCglmcmFtZV9kaWcgMiAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIxOQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjE5CgkvLyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDcgLy8gMjAwCgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAzMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTAgLy8gMzAwCgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjIxCgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgNSAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyA4IC8vICBEZWxldGVBcHBsaWNhdGlvbgoJaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KCWl0eG5fc3VibWl0CgoqaWYyX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyMwoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIyNAoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI2CgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudAoJZnJhbWVfZGlnIDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDQgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjI3CgkvLyBjbXBTdGFrZXIuZW50cnlSb3VuZCA9IGVudHJ5Um91bmQKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJcHVzaGludCA1NiAvLyBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMCAvLyBlbnRyeVJvdW5kOiB1aW50NjQKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDQgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjMwCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAzIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjIzMgoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJYiAqYWRkU3Rha2UqcmV0dXJuCgoqaWYzX2VuZDoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzQKCS8vIGZpcnN0RW1wdHkgPT09IDAgJiYgY21wU3Rha2VyLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDIKCWZyYW1lX2RpZyA0IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMjoKCWJ6ICppZjRfZW5kCgoJLy8gKmlmNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMzUKCS8vIGZpcnN0RW1wdHkgPSBpICsgMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKKmlmNF9lbmQ6CgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyMTkKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDMgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyAqaWY1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjM5CgkvLyBmaXJzdEVtcHR5ID09PSAwCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNV9lbmQKCgkvLyAqaWY1X2NvbnNlcXVlbnQKCS8vIFN0YWtpbmcgcG9vbCBmdWxsCgllcnIKCippZjVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ2CgkvLyBhc3NlcnQoc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLCAnbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sJykKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJYnl0ZWMgMTggLy8gICJtaW5FbnRyeVN0YWtlIgoJYXBwX2dsb2JhbF9nZXQKCT49CgoJLy8gbXVzdCBzdGFrZSBhdCBsZWFzdCB0aGUgbWluaW11bSBmb3IgdGhpcyBwb29sCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNDgKCS8vIGFzc2VydCh0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdLmFjY291bnQgPT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgNCAvLyAzMgoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZ2xvYmFsIFplcm9BZGRyZXNzCgk9PQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjQ5CgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbZmlyc3RFbXB0eSAtIDFdID0gewoJLy8gICAgICAgICAgICAgYWNjb3VudDogc3Rha2VyLAoJLy8gICAgICAgICAgICAgYmFsYW5jZTogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQsCgkvLyAgICAgICAgICAgICB0b3RhbFJld2FyZGVkOiAwLAoJLy8gICAgICAgICAgICAgcmV3YXJkVG9rZW5CYWxhbmNlOiAwLAoJLy8gICAgICAgICAgICAgZW50cnlSb3VuZDogZW50cnlSb3VuZCwKCS8vICAgICAgICAgfQoJZnJhbWVfZGlnIDEgLy8gZmlyc3RFbXB0eTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIEFtb3VudAoJaXRvYgoJY29uY2F0CglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MjU2CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgKz0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI1NwoJLy8gcmV0dXJuIGVudHJ5Um91bmQKCWZyYW1lX2RpZyAwIC8vIGVudHJ5Um91bmQ6IHVpbnQ2NAoKKmFkZFN0YWtlKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3JlbW92ZVN0YWtlOgoJLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyBzdGFrZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDQgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMSAoc3Rha2VyKSBmb3IgcmVtb3ZlU3Rha2UgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgcmVtb3ZlU3Rha2UoYWRkcmVzcyx1aW50NjQpdm9pZAoJY2FsbHN1YiByZW1vdmVTdGFrZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gcmVtb3ZlU3Rha2Uoc3Rha2VyOiBBZGRyZXNzLCBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gUmVtb3ZlcyBzdGFrZSBvbiBiZWhhbGYgb2YgY2FsbGVyIChyZW1vdmluZyBvd24gc3Rha2UpLiAgSWYgYW55IHRva2VuIHJld2FyZHMgZXhpc3QsIHRob3NlIGFyZSBhbHdheXMgc2VudCBpbgovLyBmdWxsLiBBbHNvIG5vdGlmaWVzIHRoZSB2YWxpZGF0b3IgY29udHJhY3QgZm9yIHRoaXMgcG9vbHMgdmFsaWRhdG9yIG9mIHRoZSBzdGFrZXIgLyBiYWxhbmNlIGNoYW5nZXMuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gYWNjb3VudCB0byByZW1vdmUuICBub3JtYWxseSBzYW1lIGFzIHNlbmRlciwgYnV0IHRoZSB2YWxpZGF0b3Igb3duZXIgb3IgbWFuYWdlciBjYW4gYWxzbyBjYWxsCi8vIHRoaXMgdG8gcmVtb3ZlIHRoZSBzcGVjaWZpZWQgc3Rha2VyIGV4cGxpY2l0bHkuIFRoZSByZW1vdmVkIHN0YWtlIE1VU1Qgb25seSBnbyB0byB0aGUgc3Rha2VyIG9mIGNvdXJzZS4gIFRoaXMgaXMKLy8gc28gYSB2YWxpZGF0b3IgY2FuIHNodXQgZG93biBhIHBvb29sIGFuZCByZWZ1bmQgdGhlIHN0YWtlcnMuICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGtpY2sgb3V0IHN0YWtlcnMgd2hvIG5vIGxvbmdlcgovLyBtZWV0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzIChkZXRlcm1pbmVkIGJ5IHRoZSBub2RlIGRhZW1vbikuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1Vuc3Rha2UgLSBUaGUgYW1vdW50IG9mIHN0YWtlIHRvIGJlIHJlbW92ZWQuICBTcGVjaWZ5IDAgdG8gcmVtb3ZlIGFsbCBzdGFrZS4KLy8gQHRocm93cyB7RXJyb3J9IElmIHRoZSBhY2NvdW50IGhhcyBpbnN1ZmZpY2llbnQgYmFsYW5jZSBvciBpZiB0aGUgYWNjb3VudCBpcyBub3QgZm91bmQuCnJlbW92ZVN0YWtlOgoJcHJvdG8gMiAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNgoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyNzQKCS8vIHN0YWtlciAhPT0gdGhpcy50eG4uc2VuZGVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgl0eG4gU2VuZGVyCgkhPQoJYnogKmlmNl9lbmQKCgkvLyAqaWY2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI3NQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzdGFrZXIgaXMgbm90IHNlbmRlciBpbiByZW1vdmVTdGFrZSBjYWxsLCB0aGVuIHNlbmRlciBNVVNUIGJlIG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgICAgICkKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIElmIHN0YWtlciBpcyBub3Qgc2VuZGVyIGluIHJlbW92ZVN0YWtlIGNhbGwsIHRoZW4gc2VuZGVyIE1VU1QgYmUgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODEKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpOiB1aW50NjQKCipmb3JfMToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODQKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDEwIC8vIDMwMAoJPAoJYnogKmlmN19lbmQKCgkvLyAqaWY3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4NQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmN19lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODcKCS8vIGNtcFN0YWtlciA9IGNsb25lKHRoaXMuc3Rha2Vycy52YWx1ZVtpXSkKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODgKCS8vIGNtcFN0YWtlci5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAwIDMyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgk9PQoJYnogKmlmOF9lbmQKCgkvLyAqaWY4X2NvbnNlcXVlbnQKCS8vICppZjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyODkKCS8vIGFtb3VudFRvVW5zdGFrZSA9PT0gMAoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTEKCS8vIGFtb3VudFRvVW5zdGFrZSA9IGNtcFN0YWtlci5iYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfYnVyeSAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoKKmlmOV9lbmQ6CgkvLyAqaWYxMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5MwoJLy8gY21wU3Rha2VyLmJhbGFuY2UgPCBhbW91bnRUb1Vuc3Rha2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCTwKCWJ6ICppZjEwX2VuZAoKCS8vICppZjEwX2NvbnNlcXVlbnQKCS8vIEluc3VmZmljaWVudCBiYWxhbmNlCgllcnIKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5NgoJLy8gY21wU3Rha2VyLmJhbGFuY2UgLT0gYW1vdW50VG9VbnN0YWtlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJLQoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoyOTcKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlIC09IGFtb3VudFRvVW5zdGFrZQoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTIgLy8gYW1vdW50VG9VbnN0YWtlOiB1aW50NjQKCS0KCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI5OQoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vICppZjExX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAwCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID4gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMV9lbmQKCgkvLyAqaWYxMV9jb25zZXF1ZW50CgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMwMgoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxMl9lbHNlCgoJLy8gKmlmMTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzAzCgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDQKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMDUKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDMgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTEKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCksCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXRSZWNlaXZlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMTIgLy8gIGF4ZmVyCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzEyCgkvLyB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcucmV3YXJkVG9rZW5JZCkKCWZyYW1lX2RpZyAzIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE1MyA4CglidG9pCglpdHhuX2ZpZWxkIFhmZXJBc3NldAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMxMwoJLy8gYXNzZXRSZWNlaXZlcjogc3Rha2VyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFzc2V0UmVjZWl2ZXIKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTQKCS8vIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaXR4bl9maWVsZCBBc3NldEFtb3VudAoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA0OCA4CglidG9pCglmcmFtZV9idXJ5IDIgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMTcKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgPSAwCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDEwIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJcmVwbGFjZTIgNDgKCWZyYW1lX2J1cnkgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWIgKmlmMTJfZW5kCgoqaWYxMl9lbHNlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIyCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzIzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoqaWYxMl9lbmQ6CgoqaWYxMV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMjgKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICAgICAgY21wU3Rha2VyLmJhbGFuY2UgPT09IDAgfHwgY21wU3Rha2VyLmJhbGFuY2UgPj0gdGhpcy5taW5FbnRyeVN0YWtlLnZhbHVlLAoJLy8gICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHJlZHVjZSBiYWxhbmNlIGJlbG93IG1pbmltdW0gYWxsb3dlZCBzdGFrZSB1bmxlc3MgYWxsIGlzIHJlbW92ZWQnLAoJLy8gICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWJ5dGVjIDE4IC8vICAibWluRW50cnlTdGFrZSIKCWFwcF9nbG9iYWxfZ2V0Cgk+PQoJfHwKCipza2lwX29yMDoKCS8vIGNhbm5vdCByZWR1Y2UgYmFsYW5jZSBiZWxvdyBtaW5pbXVtIGFsbG93ZWQgc3Rha2UgdW5sZXNzIGFsbCBpcyByZW1vdmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozMzYKCS8vIHNlbmRQYXltZW50KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBhbW91bnRUb1Vuc3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICAgICAgICAgIG5vdGU6ICd1bnN0YWtlZCcsCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzM3CgkvLyBhbW91bnQ6IGFtb3VudFRvVW5zdGFrZQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOAoJLy8gcmVjZWl2ZXI6IHN0YWtlcgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjMzOQoJLy8gbm90ZTogJ3Vuc3Rha2VkJwoJcHVzaGJ5dGVzIDB4NzU2ZTczNzQ2MTZiNjU2NCAvLyAidW5zdGFrZWQiCglpdHhuX2ZpZWxkIE5vdGUKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQxCgkvLyBzdGFrZXJSZW1vdmVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQyCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSA9PT0gMAoJZnJhbWVfZGlnIDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMTNfZW5kCgoJLy8gKmlmMTNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgMTMgLy8gICJudW1TdGFrZXJzIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgktCglieXRlYyAxMyAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NQoJLy8gY21wU3Rha2VyLmFjY291bnQgPSBnbG9iYWxzLnplcm9BZGRyZXNzCglmcmFtZV9kaWcgMSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMCAvLyAwCglnbG9iYWwgWmVyb0FkZHJlc3MKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDEgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzQ2CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0MAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0NwoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM0OAoJLy8gc3Rha2VyUmVtb3ZlZCA9IHRydWUKCWludGMgMSAvLyAxCglmcmFtZV9idXJ5IDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzUxCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1MwoJLy8gcm91bmRzTGVmdEluQmluID0gdGhpcy5iaW5Sb3VuZFN0YXJ0LnZhbHVlICsgdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgLSBnbG9iYWxzLnJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgNyAvLyAgInJvdW5kc1BlckRheSIKCWFwcF9nbG9iYWxfZ2V0CgkrCglnbG9iYWwgUm91bmQKCS0KCWZyYW1lX2J1cnkgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM1NAoJLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjggPSAoYW1vdW50VG9VbnN0YWtlIGFzIHVpbnQxMjgpICogKHJvdW5kc0xlZnRJbkJpbiBhcyB1aW50MTI4KQoJZnJhbWVfZGlnIC0yIC8vIGFtb3VudFRvVW5zdGFrZTogdWludDY0CglpdG9iCglmcmFtZV9kaWcgNSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWR1cAoJYml0bGVuCglpbnRjIDYgLy8gMTI4Cgk8PQoKCS8vIChhbW91bnRUb1Vuc3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDYgLy8gc3VidHJhY3RBbW91bnQ6IHVpbnQxMjgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNTUKCS8vIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSAtIHN1YnRyYWN0QW1vdW50CglieXRlYyA4IC8vICAic3Rha2VBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyA2IC8vIHN1YnRyYWN0QW1vdW50OiB1aW50MTI4CgliLQoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC0gc3VidHJhY3RBbW91bnQgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzYwCgkvLyBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLnN0YWtlUmVtb3ZlZD4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50VG9VbnN0YWtlLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMiAvLyAgbWV0aG9kICJzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjEKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNjIKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvVW5zdGFrZSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlclJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyBhbW91bnRUb1Vuc3Rha2U6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAyIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDQgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozNzAKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY4X2VuZDoKCipmb3JfMV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjI4MwoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMQoKKmZvcl8xX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCXJldHN1YgoKLy8gY2xhaW1Ub2tlbnMoKXZvaWQKKmFiaV9yb3V0ZV9jbGFpbVRva2VuczoKCS8vIGV4ZWN1dGUgY2xhaW1Ub2tlbnMoKXZvaWQKCWNhbGxzdWIgY2xhaW1Ub2tlbnMKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGNsYWltVG9rZW5zKCk6IHZvaWQKLy8KLy8gQ2xhaW1zIGFsbCB0aGUgYXZhaWxhYmxlIHJld2FyZCB0b2tlbnMgYSBzdGFrZXIgaGFzIGF2YWlsYWJsZSwgc2VuZGluZyB0aGVpciBlbnRpcmUgYmFsYW5jZSB0byB0aGUgc3Rha2VyIGZyb20KLy8gcG9vbCAxIChlaXRoZXIgZGlyZWN0bHksIG9yIHZpYSB2YWxpZGF0b3ItPnBvb2wxIHRvIHBheSBpdCBvdXQpCi8vIEFsc28gbm90aWZpZXMgdGhlIHZhbGlkYXRvciBjb250cmFjdCBmb3IgdGhpcyBwb29scyB2YWxpZGF0b3Igb2YgdGhlIHN0YWtlciAvIGJhbGFuY2UgY2hhbmdlcy4KY2xhaW1Ub2tlbnM6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg1CgkvLyBzdGFrZXIgPSB0aGlzLnR4bi5zZW5kZXIKCXR4biBTZW5kZXIKCWZyYW1lX2J1cnkgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJzLnZhbHVlLmxlbmd0aDsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMjoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4NwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyA3IC8vIDIwMAoJPAoJYnogKmZvcl8yX2VuZAoKCS8vICppZjE0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzg4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjE0X2VuZAoKCS8vICppZjE0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM4OQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkxCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgMyAvLyA2NAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gNjQKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5MgoJLy8gY21wU3Rha2VyLmFjY291bnQgPT09IHN0YWtlcgoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJPT0KCWJ6ICppZjE1X2VuZAoKCS8vICppZjE1X2NvbnNlcXVlbnQKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MzkzCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID09PSAwCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTQKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozOTYKCS8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCgkvLyAqaWYxN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjM5OAoJLy8gdGhpcy5wb29sSWQudmFsdWUgPT09IDEKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CglieiAqaWYxN19lbHNlCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Mzk5CgkvLyB2YWxpZGF0b3JDb25maWcgPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgVmFsaWRhdG9yUmVnaXN0cnkucHJvdG90eXBlLmdldFZhbGlkYXRvckNvbmZpZz4oewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDE1IC8vICBtZXRob2QgImdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDAKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDEKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDYKCS8vIHNlbmRBc3NldFRyYW5zZmVyKHsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0UmVjZWl2ZXI6IHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0QW1vdW50OiBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MDcKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkKQoJZnJhbWVfZGlnIDQgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTUzIDgKCWJ0b2kKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA4CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIHN0YWtlcjogYWRkcmVzcwoJaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDA5CgkvLyBhc3NldEFtb3VudDogY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWl0eG5fZmllbGQgQXNzZXRBbW91bnQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDExCgkvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQgPSBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlCglmcmFtZV9kaWcgMiAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGFtb3VudFJld2FyZFRva2VuUmVtb3ZlZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDEyCgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlID0gMAoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglieXRlYyAxMCAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCXJlcGxhY2UyIDQ4CglmcmFtZV9idXJ5IDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgliICppZjE3X2VuZAoKKmlmMTdfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxNwoJLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkID0gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZQoJZnJhbWVfZGlnIDIgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQxOAoJLy8gY21wU3Rha2VyLnJld2FyZFRva2VuQmFsYW5jZSA9IDAKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglyZXBsYWNlMiA0OAoJZnJhbWVfYnVyeSAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDIyCgkvLyB0aGlzLnN0YWtlcnMudmFsdWVbaV0gPSBjbXBTdGFrZXIKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyNwoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVJlbW92ZWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWtlciwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8vIG5vIGFsZ28gcmVtb3ZlZAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIC8vIHN0YWtlciBpc24ndCBiZWluZyByZW1vdmVkLgoJLy8gICAgICAgICAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDIyIC8vICBtZXRob2QgInN0YWtlUmVtb3ZlZCgodWludDY0LHVpbnQ2NCx1aW50NjQpLGFkZHJlc3MsdWludDY0LHVpbnQ2NCxib29sKXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOAoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQyOQoJLy8gbWV0aG9kQXJnczogWwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgeyBpZDogdGhpcy52YWxpZGF0b3JJZC52YWx1ZSwgcG9vbElkOiB0aGlzLnBvb2xJZC52YWx1ZSwgcG9vbEFwcElkOiB0aGlzLmFwcC5pZCB9LAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgMCwgLy8gbm8gYWxnbyByZW1vdmVkCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnRSZXdhcmRUb2tlblJlbW92ZWQsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgLy8gc3Rha2VyIGlzbid0IGJlaW5nIHJlbW92ZWQuCgkvLyAgICAgICAgICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJYnl0ZWMgMTAgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDMgLy8gYW1vdW50UmV3YXJkVG9rZW5SZW1vdmVkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglpbnRjIDAgLy8gMAoJYnl0ZWMgMjYgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0MzcKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYxNV9lbmQ6CgoqZm9yXzJfY29udGludWU6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czozODcKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDEgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzIKCipmb3JfMl9lbmQ6CgkvLyBhY2NvdW50IG5vdCBmb3VuZAoJZXJyCglyZXRzdWIKCi8vIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0U3Rha2VySW5mbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNCAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZXJJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGdldFN0YWtlckluZm8oYWRkcmVzcykoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGdldFN0YWtlckluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRTdGFrZXJJbmZvKHN0YWtlcjogQWRkcmVzcyk6IFN0YWtlZEluZm8KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gc3Rha2VyLgovLwovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEByZXR1cm5zIHtTdGFrZWRJbmZvfSAtIFRoZSBzdGFrZWQgaW5mb3JtYXRpb24gZm9yIHRoZSBnaXZlbiBzdGFrZXIuCi8vIEB0aHJvd3Mge0Vycm9yfSAtIElmIHRoZSBzdGFrZXIncyBhY2NvdW50IGlzIG5vdCBmb3VuZC4KZ2V0U3Rha2VySW5mbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTIKCS8vIGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfM19lbmQKCgkvLyAqaWYxOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MwoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjE4X2VuZAoKCS8vICppZjE4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1NAoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMThfZW5kOgoJLy8gKmlmMTlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTYKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXS5hY2NvdW50ID09PSBzdGFrZXIKCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDQgLy8gMzIKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCT09CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NTcKCS8vIHJldHVybiB0aGlzLnN0YWtlcnMudmFsdWVbaV0KCWZyYW1lX2RpZyAwIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJYiAqZ2V0U3Rha2VySW5mbypyZXR1cm4KCippZjE5X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ1MgoJLy8gaSArPSAxCglmcmFtZV9kaWcgMCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCS8vIGFjY291bnQgbm90IGZvdW5kCgllcnIKCipnZXRTdGFrZXJJbmZvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoJcmV0c3ViCgovLyBwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZAoqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkOgoJLy8gYW1vdW50VG9TZW5kOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyByZXdhcmRUb2tlbjogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyA0IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlcikgZm9yIHBheVRva2VuUmV3YXJkIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIHBheVRva2VuUmV3YXJkKGFkZHJlc3MsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIHBheVRva2VuUmV3YXJkCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwYXlUb2tlblJld2FyZChzdGFrZXI6IEFkZHJlc3MsIHJld2FyZFRva2VuOiB1aW50NjQsIGFtb3VudFRvU2VuZDogdWludDY0KTogdm9pZAovLwovLyBbSW50ZXJuYWwgcHJvdG9jb2wgbWV0aG9kXSBSZW1vdmUgYSBzcGVjaWZpZWQgYW1vdW50IG9mICdjb21tdW5pdHkgdG9rZW4nIHJld2FyZHMgZm9yIGEgc3Rha2VyLgovLyBUaGlzIGNhbiBPTkxZIGJlIGNhbGxlZCBieSBvdXIgdmFsaWRhdG9yIGFuZCBvbmx5IGlmIHdlJ3JlIHBvb2wgMSAtIHdpdGggdGhlIHRva2VuLgovLyBOb3RlOiB0aGlzIGNhbiBhbHNvIGJlIGNhbGxlZCBieSB2YWxpZGF0b3IgYXMgcGFydCBvZiBPV05FUiB3YW50aW5nIHRvIHNlbmQgdGhlIHJld2FyZCB0b2tlbnMKLy8gc29tZXdoZXJlIGVsc2UgKGllIGlmIHRoZXkncmUgc3Vuc2V0dGluZyB0aGVpciB2YWxpZGF0b3IgYW5kIG5lZWQgdGhlIHJld2FyZCB0b2tlbnMgYmFjaykuCi8vIEl0J3MgdXAgdG8gdGhlIHZhbGlkYXRvciB0byBlbnN1cmUgdGhhdCB0aGUgYmFsYW5jZSBpbiByZXdhcmRUb2tlbkhlbGRCYWNrIGlzIGhvbm9yZWQuCi8vIEBwYXJhbSBzdGFrZXIgLSB0aGUgc3Rha2VyIGFjY291bnQgdG8gc2VuZCByZXdhcmRzIHRvCi8vIEBwYXJhbSByZXdhcmRUb2tlbiAtIGlkIG9mIHJld2FyZCB0b2tlbiAodG8gYXZvaWQgcmUtZW50cmFuY3kgaW4gY2FsbGluZyB2YWxpZGF0b3IgYmFjayB0byBnZXQgaWQpCi8vIEBwYXJhbSBhbW91bnRUb1NlbmQgLSBhbW91bnQgdG8gc2VuZCB0aGUgc3Rha2VyICh0aGVyZSBpcyBzaWduaWZpY2FudCB0cnVzdCBoZXJlKCEpIC0gYWxzbyB3aHkgb25seSB2YWxpZGF0b3IgY2FuIGNhbGwgdXMKcGF5VG9rZW5SZXdhcmQ6Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0NzUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUuYWRkcmVzcywKCS8vICAgICAgICAgICAgICd0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdCcsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCgkvLyB0aGlzIGNhbiBvbmx5IGJlIGNhbGxlZCB2aWEgdGhlIHZhbGlkYXRvciBjb250cmFjdAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDc5CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdtdXN0IGJlIHBvb2wgMSBpbiBvcmRlciB0byBiZSBjYWxsZWQgdG8gcGF5IG91dCB0b2tlbiByZXdhcmRzJykKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCT09CgoJLy8gbXVzdCBiZSBwb29sIDEgaW4gb3JkZXIgdG8gYmUgY2FsbGVkIHRvIHBheSBvdXQgdG9rZW4gcmV3YXJkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgwCgkvLyBhc3NlcnQocmV3YXJkVG9rZW4gIT09IDAsICdjYW4gb25seSBjbGFpbSB0b2tlbiByZXdhcmRzIGZyb20gdmFsaWRhdG9yIHRoYXQgaGFzIHRoZW0nKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIGNhbiBvbmx5IGNsYWltIHRva2VuIHJld2FyZHMgZnJvbSB2YWxpZGF0b3IgdGhhdCBoYXMgdGhlbQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDgzCgkvLyBzZW5kQXNzZXRUcmFuc2Zlcih7CgkvLyAgICAgICAgICAgICB4ZmVyQXNzZXQ6IEFzc2V0SUQuZnJvbVVpbnQ2NChyZXdhcmRUb2tlbiksCgkvLyAgICAgICAgICAgICBhc3NldFJlY2VpdmVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICBhc3NldEFtb3VudDogYW1vdW50VG9TZW5kLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxMiAvLyAgYXhmZXIKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo0ODQKCS8vIHhmZXJBc3NldDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuKQoJZnJhbWVfZGlnIC0yIC8vIHJld2FyZFRva2VuOiB1aW50NjQKCWl0eG5fZmllbGQgWGZlckFzc2V0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NDg1CgkvLyBhc3NldFJlY2VpdmVyOiBzdGFrZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjQ4NgoJLy8gYXNzZXRBbW91bnQ6IGFtb3VudFRvU2VuZAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU2VuZDogdWludDY0CglpdHhuX2ZpZWxkIEFzc2V0QW1vdW50CgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyB1cGRhdGVBbGdvZFZlcihzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX3VwZGF0ZUFsZ29kVmVyOgoJLy8gYWxnb2RWZXI6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZXh0cmFjdCAyIDAKCgkvLyBleGVjdXRlIHVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkCgljYWxsc3ViIHVwZGF0ZUFsZ29kVmVyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyB1cGRhdGVBbGdvZFZlcihhbGdvZFZlcjogc3RyaW5nKTogdm9pZAovLwovLyBVcGRhdGUgdGhlIChob25vciBzeXN0ZW0pIGFsZ29kIHZlcnNpb24gZm9yIHRoZSBub2RlIGFzc29jaWF0ZWQgdG8gdGhpcyBwb29sLiAgVGhlIG5vZGUgbWFuYWdlbWVudCBkYWVtb24KLy8gc2hvdWxkIGNvbXBhcmUgaXRzIGN1cnJlbnQgbm9kZXMgdmVyc2lvbiB0byB0aGUgdmVyc2lvbiBzdG9yZWQgaW4gZ2xvYmFsIHN0YXRlLCB1cGRhdGluZyB3aGVuIGRpZmZlcmVudC4KLy8gVGhlIHJldGkgbm9kZSBkYWVtb24gY29tcG9zZXMgaXRzIG93biB2ZXJzaW9uIHN0cmluZyB1c2luZyBmb3JtYXQ6Ci8vIHttYWpvcn0ue21pbm9yfS57YnVpbGR9IHticmFuY2h9IFt7Y29tbWl0IGhhc2h9XSwKLy8gaWU6IDMuMjIuMCByZWwvc3RhYmxlIFs2YjUwODk3NV0KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQovLyBAcGFyYW0ge3N0cmluZ30gYWxnb2RWZXIgLSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBhbGdvcmFuZCBub2RlIGRhZW1vbiB2ZXJzaW9uIChyZXRpIG5vZGUgZGFlbW9uIGNvbXBvc2VzIGl0cyBvd24gbWV0YSB2ZXJzaW9uKQp1cGRhdGVBbGdvZFZlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUwMAoJLy8gYXNzZXJ0KHRoaXMuaXNPd25lck9yTWFuYWdlckNhbGxlcigpLCAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJykKCWNhbGxzdWIgaXNPd25lck9yTWFuYWdlckNhbGxlcgoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTAxCgkvLyB0aGlzLmFsZ29kVmVyLnZhbHVlID0gYWxnb2RWZXIKCXB1c2hieXRlcyAweDYxNmM2NzZmNjQ1NjY1NzIgLy8gImFsZ29kVmVyIgoJZnJhbWVfZGlnIC0xIC8vIGFsZ29kVmVyOiBzdHJpbmcKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGVwb2NoQmFsYW5jZVVwZGF0ZSgpdm9pZAoqYWJpX3JvdXRlX2Vwb2NoQmFsYW5jZVVwZGF0ZToKCS8vIGV4ZWN1dGUgZXBvY2hCYWxhbmNlVXBkYXRlKCl2b2lkCgljYWxsc3ViIGVwb2NoQmFsYW5jZVVwZGF0ZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZXBvY2hCYWxhbmNlVXBkYXRlKCk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgYmFsYW5jZSBvZiBzdGFrZXJzIGluIHRoZSBwb29sIGJhc2VkIG9uIHRoZSByZWNlaXZlZCAncmV3YXJkcycgKGN1cnJlbnQgYmFsYW5jZSB2cyBrbm93biBzdGFrZWQgYmFsYW5jZSkKLy8gc3Rha2VycyBvdXRzdGFuZGluZyBiYWxhbmNlIGlzIGFkanVzdGVkIGJhc2VkIG9uIHRoZWlyICUgb2Ygc3Rha2UgYW5kIHRpbWUgaW4gdGhlIGN1cnJlbnQgZXBvY2ggLSBzbyB0aGF0IGJhbGFuY2UKLy8gY29tcG91bmRzIG92ZXIgdGltZSBhbmQgc3Rha2VyIGNhbiByZW1vdmUgdGhhdCBhbW91bnQgYXQgd2lsbC4KLy8gVGhlIHZhbGlkYXRvciBpcyBwYWlkIHRoZWlyIHBlcmNlbnRhZ2UgZWFjaCBlcG9jaCBwYXlvdXQuCi8vCi8vIE5vdGU6IEFOWU9ORSBjYW4gY2FsbCB0aGlzLgplcG9jaEJhbGFuY2VVcGRhdGU6Cglwcm90byAwIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoJZHVwbiAzOQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUxNAoJLy8gdmFsaWRhdG9yQ29uZmlnID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JDb25maWc+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxNSAvLyAgbWV0aG9kICJnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE1CgkvLyBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZQoJYnl0ZWMgMSAvLyAgImNyZWF0b3JBcHAiCglhcHBfZ2xvYmFsX2dldAoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTE2CgkvLyBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTIzCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdmFsaWRhdG9yQ29uZmlnLmVwb2NoUm91bmRMZW5ndGggYXMgdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjkgNAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUyNAoJLy8gY3VyUm91bmQgPSBnbG9iYWxzLnJvdW5kCglnbG9iYWwgUm91bmQKCWZyYW1lX2J1cnkgMiAvLyBjdXJSb3VuZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTI1CgkvLyB0aGlzRXBvY2hCZWdpbiA9IGN1clJvdW5kIC0gKGN1clJvdW5kICUgZXBvY2hSb3VuZExlbmd0aCkKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIGN1clJvdW5kOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJJQoJLQoJZnJhbWVfYnVyeSAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MjgKCS8vIGxhc3RQYXlvdXRFcG9jaCA9IHRoaXMubGFzdFBheW91dC52YWx1ZSAtICh0aGlzLmxhc3RQYXlvdXQudmFsdWUgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJYnl0ZWMgMTQgLy8gICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXQKCWJ5dGVjIDE0IC8vICAibGFzdFBheW91dCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2J1cnkgNCAvLyBsYXN0UGF5b3V0RXBvY2g6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzMAoJLy8gYXNzZXJ0KGxhc3RQYXlvdXRFcG9jaCAhPT0gdGhpc0Vwb2NoQmVnaW4sICJjYW4ndCBjYWxsIGVwb2NoQmFsYW5jZVVwZGF0ZSBpbiBzYW1lIGVwb2NoIGFzIHByaW9yIGNhbGwiKQoJZnJhbWVfZGlnIDQgLy8gbGFzdFBheW91dEVwb2NoOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgY2FsbCBlcG9jaEJhbGFuY2VVcGRhdGUgaW4gc2FtZSBlcG9jaCBhcyBwcmlvciBjYWxsCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzIKCS8vIHRoaXMuY2hlY2tJZkJpbkNsb3NlZCgpCgljYWxsc3ViIGNoZWNrSWZCaW5DbG9zZWQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1MzUKCS8vIHRoaXMubGFzdFBheW91dC52YWx1ZSA9IGN1clJvdW5kCglieXRlYyAxNCAvLyAgImxhc3RQYXlvdXQiCglmcmFtZV9kaWcgMiAvLyBjdXJSb3VuZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjUzNgoJLy8gdGhpcy5lcG9jaE51bWJlci52YWx1ZSArPSAxCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgkrCglieXRlYyAxOSAvLyAgImVwb2NoTnVtYmVyIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NDEKCS8vIGlzVG9rZW5FbGlnaWJsZSA9IHZhbGlkYXRvckNvbmZpZy5yZXdhcmRUb2tlbklkICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglmcmFtZV9idXJ5IDUgLy8gaXNUb2tlbkVsaWdpYmxlOiBib29sCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQyCgkvLyBwb29sT25lQXBwSUQgPSB0aGlzLmFwcC5pZAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJZnJhbWVfYnVyeSA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQzCgkvLyBwb29sT25lQWRkcmVzcyA9IHRoaXMuYXBwLmFkZHJlc3MKCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglmcmFtZV9idXJ5IDcgLy8gcG9vbE9uZUFkZHJlc3M6IGFkZHJlc3MKCgkvLyAqaWYyMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU0OAoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjIwX2VuZAoKCS8vICppZjIwX2NvbnNlcXVlbnQKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTQ5CgkvLyB0aGlzLnBvb2xJZC52YWx1ZSAhPT0gMQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJIT0KCWJ6ICppZjIxX2VuZAoKCS8vICppZjIxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MQoJLy8gcG9vbE9uZUFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCAxXSwKCS8vICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAyMyAvLyAgbWV0aG9kICJnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU1MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWUsIDFdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglidG9pCglmcmFtZV9idXJ5IDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NTUKCS8vIHBvb2xPbmVBZGRyZXNzID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sT25lQXBwSUQpLmFkZHJlc3MKCWZyYW1lX2RpZyA2IC8vIHBvb2xPbmVBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2J1cnkgNyAvLyBwb29sT25lQWRkcmVzczogYWRkcmVzcwoKKmlmMjFfZW5kOgoJLy8gKmlmMjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjAKCS8vIHRoaXMucG9vbElkLnZhbHVlID09PSAxCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMSAvLyAxCgk9PQoJYnogKmlmMjJfZWxzZQoKCS8vICppZjIyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MQoJLy8gdG9rZW5QYXlvdXRSYXRpbyA9IHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2MwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJYiAqaWYyMl9lbmQKCippZjIyX2Vsc2U6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjcKCS8vIHRva2VuUGF5b3V0UmF0aW8gPSBzZW5kTWV0aG9kQ2FsbDx0eXBlb2YgU3Rha2luZ1Bvb2wucHJvdG90eXBlLnByb3hpZWRTZXRUb2tlblBheW91dFJhdGlvPih7CgkvLyAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjUgLy8gIG1ldGhvZCAicHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8oKHVpbnQ2NCx1aW50NjQsdWludDY0KSkodWludDY0WzI0XSx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NjgKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbE9uZUFwcElEKQoJZnJhbWVfZGlnIDYgLy8gcG9vbE9uZUFwcElEOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU2OQoJLy8gbWV0aG9kQXJnczogW3sgaWQ6IHRoaXMudmFsaWRhdG9ySWQudmFsdWUsIHBvb2xJZDogdGhpcy5wb29sSWQudmFsdWUsIHBvb2xBcHBJZDogdGhpcy5hcHAuaWQgfV0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJZnJhbWVfYnVyeSA4IC8vIHRva2VuUGF5b3V0UmF0aW86IFBvb2xUb2tlblBheW91dFJhdGlvCgoqaWYyMl9lbmQ6CgoqaWYyMF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzYKCS8vIHZhbGlkYXRvclN0YXRlID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JTdGF0ZT4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDFmMmYwMTA5IC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzcKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo1NzgKCS8vIG1ldGhvZEFyZ3M6IFt0aGlzLnZhbGlkYXRvcklkLnZhbHVlXQoJYnl0ZWMgMyAvLyAgInZhbGlkYXRvcklkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglmcmFtZV9idXJ5IDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTgwCgkvLyByZXdhcmRUb2tlbkhlbGRCYWNrID0gdmFsaWRhdG9yU3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjawoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE4IDgKCWJ0b2kKCWZyYW1lX2J1cnkgMTAgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTg2CgkvLyBhbGdvUmV3YXJkQXZhaWwgPSB0aGlzLmFwcC5hZGRyZXNzLmJhbGFuY2UgLSB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtIHRoaXMuYXBwLmFkZHJlc3MubWluQmFsYW5jZQoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCWFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQoJcG9wCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCS0KCWdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCglhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKCXBvcAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4NwoJLy8gaXNQb29sU2F0dXJhdGVkID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEyIC8vIGlzUG9vbFNhdHVyYXRlZDogYm9vbAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU4OAoJLy8gYWxnb1NhdHVyYXRpb25BbXQgPSB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKQoJY2FsbHN1YiBhbGdvU2F0dXJhdGlvbkxldmVsCglmcmFtZV9idXJ5IDEzIC8vIGFsZ29TYXR1cmF0aW9uQW10OiB1aW50NjQKCgkvLyAqaWYyM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjU5NgoJLy8gdmFsaWRhdG9yU3RhdGUudG90YWxBbGdvU3Rha2VkID4gYWxnb1NhdHVyYXRpb25BbXQKCWZyYW1lX2RpZyA5IC8vIHZhbGlkYXRvclN0YXRlOiAodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxMCA4CglidG9pCglmcmFtZV9kaWcgMTMgLy8gYWxnb1NhdHVyYXRpb25BbXQ6IHVpbnQ2NAoJPgoJYnogKmlmMjNfZW5kCgoJLy8gKmlmMjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NTk3CgkvLyBpc1Bvb2xTYXR1cmF0ZWQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxMiAvLyBpc1Bvb2xTYXR1cmF0ZWQ6IGJvb2wKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwMwoJLy8gdG9rZW5SZXdhcmRBdmFpbCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNAoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MDUKCS8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNgoJLy8gZXhjZXNzVG9GZWVTaW5rID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMTcgLy8gZXhjZXNzVG9GZWVTaW5rOiB1aW50NjQKCgkvLyAqaWYyNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwNwoJLy8gaXNUb2tlbkVsaWdpYmxlCglmcmFtZV9kaWcgNSAvLyBpc1Rva2VuRWxpZ2libGU6IGJvb2wKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYwOAoJLy8gdG9rZW5SZXdhcmRCYWwgPQoJLy8gICAgICAgICAgICAgICAgIHBvb2xPbmVBZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsaWRhdG9yQ29uZmlnLnJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyA3IC8vIHBvb2xPbmVBZGRyZXNzOiBhZGRyZXNzCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNTMgOAoJYnRvaQoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxMCAvLyByZXdhcmRUb2tlbkhlbGRCYWNrOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjEzCgkvLyB0b2tlblJld2FyZEJhbCA+PSB2YWxpZGF0b3JDb25maWcucmV3YXJkUGVyUGF5b3V0CglmcmFtZV9kaWcgMTggLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTYxIDgKCWJ0b2kKCT49CglieiAqaWYyNV9lbmQKCgkvLyAqaWYyNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MTkKCS8vIG91clBvb2xQY3RPZldob2xlID0gdG9rZW5QYXlvdXRSYXRpby5wb29sUGN0T2ZXaG9sZVt0aGlzLnBvb2xJZC52YWx1ZSAtIDFdCglmcmFtZV9kaWcgOCAvLyB0b2tlblBheW91dFJhdGlvOiBQb29sVG9rZW5QYXlvdXRSYXRpbwoJaW50YyAwIC8vIDAKCWJ5dGVjIDQgLy8gICJwb29sSWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWludGMgMTQgLy8gOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDE0IC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9idXJ5IDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MjIKCS8vIHRva2VuUmV3YXJkQXZhaWwgPSB3aWRlUmF0aW8oW3ZhbGlkYXRvckNvbmZpZy5yZXdhcmRQZXJQYXlvdXQsIG91clBvb2xQY3RPZldob2xlXSwgWzFfMDAwXzAwMF0pCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNjEgOAoJYnRvaQoJZnJhbWVfZGlnIDE5IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDkgLy8gMV8wMDBfMDAwCglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCippZjI1X2VuZDoKCippZjI0X2VuZDoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjI1CgkvLyB0b2tlblJld2FyZEF2YWlsID09PSAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI2X2VuZAoKCS8vICppZjI2X2NvbnNlcXVlbnQKCS8vICppZjI3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMwCgkvLyBhbGdvUmV3YXJkQXZhaWwgPCAxXzAwMF8wMDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJPAoJYnogKmlmMjdfZW5kCgoJLy8gKmlmMjdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjMxCgkvLyBsb2coJyF0b2tlbiYmIW5vYWxnbyB0byBwYXknKQoJcHVzaGJ5dGVzIDB4MjE3NDZmNmI2NTZlMjYyNjIxNmU2ZjYxNmM2NzZmMjA3NDZmMjA3MDYxNzkgLy8gIiF0b2tlbiYmIW5vYWxnbyB0byBwYXkiCglsb2cKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2MzIKCS8vIHJldHVybgoJcmV0c3ViCgoqaWYyN19lbmQ6CgoqaWYyNl9lbmQ6CgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjYzNgoJLy8gaXNQb29sU2F0dXJhdGVkCglmcmFtZV9kaWcgMTIgLy8gaXNQb29sU2F0dXJhdGVkOiBib29sCglieiAqaWYyOF9lbHNlaWYxX2NvbmRpdGlvbgoKCS8vICppZjI4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY0MgoJLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbiA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbYWxnb1Jld2FyZEF2YWlsLCB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yIGFzIHVpbnQ2NF0sCgkvLyAgICAgICAgICAgICAgICAgWzFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3MyA0CglidG9pCgltdWx3CglpbnRjIDAgLy8gMAoJaW50YyA5IC8vIDFfMDAwXzAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ3CgkvLyBkaW1pbmlzaGVkUmV3YXJkID0gd2lkZVJhdGlvKFthbGdvUmV3YXJkQXZhaWwsIGFsZ29TYXR1cmF0aW9uQW10XSwgW3ZhbGlkYXRvclN0YXRlLnRvdGFsQWxnb1N0YWtlZF0pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAxMyAvLyBhbGdvU2F0dXJhdGlvbkFtdDogdWludDY0CgltdWx3CglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDkgLy8gdmFsaWRhdG9yU3RhdGU6ICh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDEwIDgKCWJ0b2kKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoKCS8vICppZjI5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjQ5CgkvLyBkaW1pbmlzaGVkUmV3YXJkID4gYWxnb1Jld2FyZEF2YWlsIC0gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbgoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMjAgLy8gbm9ybWFsVmFsaWRhdG9yQ29tbWlzc2lvbjogdWludDY0CgktCgk+CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTAKCS8vIGRpbWluaXNoZWRSZXdhcmQgPSBhbGdvUmV3YXJkQXZhaWwgLSBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2RpZyAyMCAvLyBub3JtYWxWYWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCS0KCWZyYW1lX2J1cnkgMjEgLy8gZGltaW5pc2hlZFJld2FyZDogdWludDY0CgoqaWYyOV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NTMKCS8vIGV4Y2Vzc1RvRmVlU2luayA9IGFsZ29SZXdhcmRBdmFpbCAtIGRpbWluaXNoZWRSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NAoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgIGFtb3VudDogZXhjZXNzVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDFdLmZlZVNpbmssCgkvLyAgICAgICAgICAgICAgICAgbm90ZTogJ3Bvb2wgc2F0dXJhdGVkLCBleGNlc3MgdG8gZmVlIHNpbmsnLAoJLy8gICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU1CgkvLyBhbW91bnQ6IGV4Y2Vzc1RvRmVlU2luawoJZnJhbWVfZGlnIDE3IC8vIGV4Y2Vzc1RvRmVlU2luazogdWludDY0CglpdHhuX2ZpZWxkIEFtb3VudAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY1NgoJLy8gcmVjZWl2ZXI6IGJsb2Nrc1t0aGlzLnR4bi5maXJzdFZhbGlkIC0gMV0uZmVlU2luawoJdHhuIEZpcnN0VmFsaWQKCWludGMgMSAvLyAxCgktCglibG9jayBCbGtGZWVTaW5rCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjU3CgkvLyBub3RlOiAncG9vbCBzYXR1cmF0ZWQsIGV4Y2VzcyB0byBmZWUgc2luaycKCXB1c2hieXRlcyAweDcwNmY2ZjZjMjA3MzYxNzQ3NTcyNjE3NDY1NjQyYzIwNjU3ODYzNjU3MzczMjA3NDZmMjA2NjY1NjUyMDczNjk2ZTZiIC8vICJwb29sIHNhdHVyYXRlZCwgZXhjZXNzIHRvIGZlZSBzaW5rIgoJaXR4bl9maWVsZCBOb3RlCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2MAoJLy8gYWxnb1Jld2FyZEF2YWlsID0gZGltaW5pc2hlZFJld2FyZAoJZnJhbWVfZGlnIDIxIC8vIGRpbWluaXNoZWRSZXdhcmQ6IHVpbnQ2NAoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJYiAqaWYyOF9lbmQKCippZjI4X2Vsc2VpZjFfY29uZGl0aW9uOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjYxCgkvLyB2YWxpZGF0b3JDb25maWcucGVyY2VudFRvVmFsaWRhdG9yICE9PSAwCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYyOF9lbmQKCgkvLyAqaWYyOF9lbHNlaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY2NAoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgPSB3aWRlUmF0aW8oCgkvLyAgICAgICAgICAgICAgICAgW2FsZ29SZXdhcmRBdmFpbCwgdmFsaWRhdG9yQ29uZmlnLnBlcmNlbnRUb1ZhbGlkYXRvciBhcyB1aW50NjRdLAoJLy8gICAgICAgICAgICAgICAgIFsxXzAwMF8wMDBdLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAxXzAwMF8wMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2NzAKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dAoJZnJhbWVfZGlnIDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njc3CgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA+IDAKCWZyYW1lX2RpZyAxNiAvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzBfZW5kCgoJLy8gKmlmMzBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjgwCgkvLyBtYW5hZ2VyVG9wT2ZmID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjIgLy8gbWFuYWdlclRvcE9mZjogdWludDY0CgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODIKCS8vIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgJiYKCS8vICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIuYmFsYW5jZSAtIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLm1pbkJhbGFuY2UgPCAyXzEwMF8wMDAKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JDb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAxNzcgMzIKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDMKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9yQ29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgMzIKCWFjY3RfcGFyYW1zX2dldCBBY2N0TWluQmFsYW5jZQoJcG9wCgktCglpbnRjIDEzIC8vIDJfMTAwXzAwMAoJPAoJJiYKCipza2lwX2FuZDM6CglieiAqaWYzMV9lbmQKCgkvLyAqaWYzMV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2ODUKCS8vIG1hbmFnZXJUb3BPZmYgPSB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCA8IDJfMTAwXzAwMCA/IHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0IDogMl8xMDBfMDAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCTwKCWJ6ICp0ZXJuYXJ5MV9mYWxzZQoJZnJhbWVfZGlnIDE2IC8vIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0OiB1aW50NjQKCWIgKnRlcm5hcnkxX2VuZAoKKnRlcm5hcnkxX2ZhbHNlOgoJaW50YyAxMyAvLyAyXzEwMF8wMDAKCip0ZXJuYXJ5MV9lbmQ6CglmcmFtZV9idXJ5IDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY4NgoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBtYW5hZ2VyVG9wT2ZmLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXI6IHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQgdG8gbWFuYWdlciBmb3IgZnVuZGluZyBlcG9jaCB1cGRhdGVzJywKCS8vICAgICAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMSAvLyAgcGF5CglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg3CgkvLyBhbW91bnQ6IG1hbmFnZXJUb3BPZmYKCWZyYW1lX2RpZyAyMiAvLyBtYW5hZ2VyVG9wT2ZmOiB1aW50NjQKCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg4CgkvLyByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLm1hbmFnZXIKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDMyCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6Njg5CgkvLyBub3RlOiAndmFsaWRhdG9yIHJld2FyZCB0byBtYW5hZ2VyIGZvciBmdW5kaW5nIGVwb2NoIHVwZGF0ZXMnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NDIwNzQ2ZjIwNmQ2MTZlNjE2NzY1NzIyMDY2NmY3MjIwNjY3NTZlNjQ2OTZlNjcyMDY1NzA2ZjYzNjgyMDc1NzA2NDYxNzQ2NTczIC8vICJ2YWxpZGF0b3IgcmV3YXJkIHRvIG1hbmFnZXIgZm9yIGZ1bmRpbmcgZXBvY2ggdXBkYXRlcyIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMxX2VuZDoKCS8vICppZjMyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NjkyCgkvLyB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYgPiAwCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjMyX2VuZAoKCS8vICppZjMyX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5MwoJLy8gc2VuZFBheW1lbnQoewoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50OiB2YWxpZGF0b3JDb21taXNzaW9uUGFpZE91dCAtIG1hbmFnZXJUb3BPZmYsCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogdmFsaWRhdG9yQ29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnLAoJLy8gICAgICAgICAgICAgICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAxIC8vICBwYXkKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTQKCS8vIGFtb3VudDogdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQgLSBtYW5hZ2VyVG9wT2ZmCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDIyIC8vIG1hbmFnZXJUb3BPZmY6IHVpbnQ2NAoJLQoJaXR4bl9maWVsZCBBbW91bnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo2OTUKCS8vIHJlY2VpdmVyOiB2YWxpZGF0b3JDb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvckNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDE3NyAzMgoJaXR4bl9maWVsZCBSZWNlaXZlcgoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjY5NgoJLy8gbm90ZTogJ3ZhbGlkYXRvciByZXdhcmQnCglwdXNoYnl0ZXMgMHg3NjYxNmM2OTY0NjE3NDZmNzIyMDcyNjU3NzYxNzI2NCAvLyAidmFsaWRhdG9yIHJld2FyZCIKCWl0eG5fZmllbGQgTm90ZQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCippZjMyX2VuZDoKCippZjMwX2VuZDoKCippZjI4X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjcwOAoJLy8gaW5jcmVhc2VkU3Rha2UgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoJLy8gKmlmMzNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzIKCS8vIGFsZ29SZXdhcmRBdmFpbCAhPT0gMCB8fCB0b2tlblJld2FyZEF2YWlsICE9PSAwCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJZHVwCglibnogKnNraXBfb3IxCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzMKCS8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMjQgLy8gcGFydGlhbFN0YWtlcnNUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzQKCS8vIG9yaWdBbGdvUmV3YXJkID0gYWxnb1Jld2FyZEF2YWlsCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCWZyYW1lX2J1cnkgMjUgLy8gb3JpZ0FsZ29SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNgoJLy8gb3JpZ1Rva2VuUmV3YXJkID0gdG9rZW5SZXdhcmRBdmFpbAoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfYnVyeSAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczNwoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYzNF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjczOAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA0MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgMTYgLy8gNDAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3MzkKCS8vIGluY3JlYXNlT3Bjb2RlQnVkZ2V0KCkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglieXRlYyA1IC8vICAjcHJhZ21hIHZlcnNpb24gMTA7IGludCAxCglkdXAKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCglpbnRjIDggLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjM0X2VuZDoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MQoJLy8gY21wU3Rha2VyID0gY2xvbmUodGhpcy5zdGFrZXJzLnZhbHVlW2ldKQoJZnJhbWVfZGlnIDI3IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyA2NAoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyAqaWYzNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc0MgoJLy8gY21wU3Rha2VyLmFjY291bnQgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NDMKCS8vIGNtcFN0YWtlci5lbnRyeVJvdW5kID49IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDU2IDgKCWJ0b2kKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT49CglieiAqaWYzNl9lbHNlCgoJLy8gKmlmMzZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzQ2CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgliICppZjM2X2VuZAoKKmlmMzZfZWxzZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1MAoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWYzN19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc1NAoJLy8gdGltZUluUG9vbCA8IGVwb2NoUm91bmRMZW5ndGgKCWZyYW1lX2RpZyAyOSAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJPAoJYnogKmlmMzdfZW5kCgoJLy8gKmlmMzdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU1CgkvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UgKz0gY21wU3Rha2VyLmJhbGFuY2UKCWZyYW1lX2RpZyAyNCAvLyBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2U6IHVpbnQ2NAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCgkrCglmcmFtZV9idXJ5IDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzU2CgkvLyB0aW1lUGVyY2VudGFnZSA9ICh0aW1lSW5Qb29sICogMTAwMCkgLyBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMjkgLy8gdGltZUluUG9vbDogdWludDY0CglpbnRjIDExIC8vIDEwMDAKCSoKCWZyYW1lX2RpZyAxIC8vIGVwb2NoUm91bmRMZW5ndGg6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0CgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NTgKCS8vIHRva2VuUmV3YXJkQXZhaWwgPiAwCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJYnogKmlmMzhfZW5kCgoJLy8gKmlmMzhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzYwCgkvLyBzdGFrZXJUb2tlblJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbXBTdGFrZXIuYmFsYW5jZSwgb3JpZ1Rva2VuUmV3YXJkLCB0aW1lUGVyY2VudGFnZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAyNiAvLyBvcmlnVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJbXVsdwoJZnJhbWVfZGlnIDMwIC8vIHRpbWVQZXJjZW50YWdlOiB1aW50NjQKCXVuY292ZXIgMgoJZGlnIDEKCSoKCWNvdmVyIDIKCW11bHcKCWNvdmVyIDIKCSsKCXN3YXAKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxMSAvLyAxMDAwCgltdWx3CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzY3CgkvLyB0b2tlblJld2FyZEF2YWlsIC09IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTQgLy8gdG9rZW5SZXdhcmRBdmFpbDogdWludDY0CglmcmFtZV9kaWcgMzEgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NjgKCS8vIGNtcFN0YWtlci5yZXdhcmRUb2tlbkJhbGFuY2UgKz0gc3Rha2VyVG9rZW5SZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMjAgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDggOAoJYnRvaQoJZnJhbWVfZGlnIDMxIC8vIHN0YWtlclRva2VuUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc2OQoJLy8gdG9rZW5SZXdhcmRQYWlkT3V0ICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWZyYW1lX2RpZyAzMSAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglmcmFtZV9idXJ5IDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CgoqaWYzOF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzIKCS8vIHN0YWtlclJld2FyZCA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBvcmlnQWxnb1Jld2FyZCwgdGltZVBlcmNlbnRhZ2VdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUsIDEwMDBdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDI1IC8vIG9yaWdBbGdvUmV3YXJkOiB1aW50NjQKCW11bHcKCWZyYW1lX2RpZyAzMCAvLyB0aW1lUGVyY2VudGFnZTogdWludDY0Cgl1bmNvdmVyIDIKCWRpZyAxCgkqCgljb3ZlciAyCgltdWx3Cgljb3ZlciAyCgkrCglzd2FwCglieXRlYyA2IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWludGMgMTEgLy8gMTAwMAoJbXVsdwoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3NzgKCS8vIGFsZ29SZXdhcmRBdmFpbCAtPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJZnJhbWVfZGlnIDMyIC8vIHN0YWtlclJld2FyZDogdWludDY0CgktCglmcmFtZV9idXJ5IDExIC8vIGFsZ29SZXdhcmRBdmFpbDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgxCgkvLyBjbXBTdGFrZXIuYmFsYW5jZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyOCAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgNCAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWl0b2IKCXJlcGxhY2UzCglmcmFtZV9idXJ5IDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4MgoJLy8gY21wU3Rha2VyLnRvdGFsUmV3YXJkZWQgKz0gc3Rha2VyUmV3YXJkCglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDE5IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQwIDgKCWJ0b2kKCWZyYW1lX2RpZyAzMiAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMjggLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzgzCgkvLyBpbmNyZWFzZWRTdGFrZSArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CglmcmFtZV9kaWcgMzIgLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCSsKCWZyYW1lX2J1cnkgMjMgLy8gaW5jcmVhc2VkU3Rha2U6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc4NQoJLy8gdGhpcy5zdGFrZXJzLnZhbHVlW2ldID0gY21wU3Rha2VyCglmcmFtZV9kaWcgMjcgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJZnJhbWVfZGlnIDI4IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYnl0ZWMgMiAvLyAgInN0YWtlcnMiCgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzdfZW5kOgoKKmlmMzZfZW5kOgoKKmlmMzVfZW5kOgoKKmZvcl80X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6NzM3CgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDI3IC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzQKCipmb3JfNF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo3OTMKCS8vIG5ld1Bvb2xUb3RhbFN0YWtlID0gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgLSBwYXJ0aWFsU3Rha2Vyc1RvdGFsU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDI0IC8vIHBhcnRpYWxTdGFrZXJzVG90YWxTdGFrZTogdWludDY0CgktCglmcmFtZV9idXJ5IDMzIC8vIG5ld1Bvb2xUb3RhbFN0YWtlOiB1aW50NjQKCgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5NwoJLy8gbmV3UG9vbFRvdGFsU3Rha2UgPiAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjM5X2VuZAoKCS8vICppZjM5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlcnMudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCipmb3JfNToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSA8IHRoaXMuc3Rha2Vycy52YWx1ZS5sZW5ndGgKCWZyYW1lX2RpZyAzNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyAqaWY0MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCAyMDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCWludGMgNyAvLyAyMDAKCTwKCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwMQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDBfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODAzCgkvLyBjbXBTdGFrZXIgPSBjbG9uZSh0aGlzLnN0YWtlcnMudmFsdWVbaV0pCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gNjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDY0CglieXRlYyAyIC8vICAic3Rha2VycyIKCWNvdmVyIDIKCWJveF9leHRyYWN0CglmcmFtZV9idXJ5IDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoKCS8vICppZjQxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODA0CgkvLyBjbXBTdGFrZXIuYWNjb3VudCAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcyAmJiBjbXBTdGFrZXIuZW50cnlSb3VuZCA8IHRoaXNFcG9jaEJlZ2luCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDAgMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kNAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCA1NiA4CglidG9pCglmcmFtZV9kaWcgMyAvLyB0aGlzRXBvY2hCZWdpbjogdWludDY0Cgk8CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNQoJLy8gdGltZUluUG9vbCA9IHRoaXNFcG9jaEJlZ2luIC0gY21wU3Rha2VyLmVudHJ5Um91bmQKCWZyYW1lX2RpZyAzIC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNTYgOAoJYnRvaQoJLQoJZnJhbWVfYnVyeSAzNiAvLyB0aW1lSW5Qb29sOiB1aW50NjQKCgkvLyAqaWY0Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgwNwoJLy8gdGltZUluUG9vbCA+PSBlcG9jaFJvdW5kTGVuZ3RoCglmcmFtZV9kaWcgMzYgLy8gdGltZUluUG9vbDogdWludDY0CglmcmFtZV9kaWcgMSAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCT49CglieiAqaWY0Ml9lbmQKCgkvLyAqaWY0Ml9jb25zZXF1ZW50CgkvLyAqaWY0M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgxMgoJLy8gdG9rZW5SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxNCAvLyB0b2tlblJld2FyZEF2YWlsOiB1aW50NjQKCWludGMgMCAvLyAwCgk+CglieiAqaWY0M19lbmQKCgkvLyAqaWY0M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTMKCS8vIHN0YWtlclRva2VuUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCB0b2tlblJld2FyZEF2YWlsXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZXdQb29sVG90YWxTdGFrZV0sCgkvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMzIgOAoJYnRvaQoJZnJhbWVfZGlnIDE0IC8vIHRva2VuUmV3YXJkQXZhaWw6IHVpbnQ2NAoJbXVsdwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAzMyAvLyBuZXdQb29sVG90YWxTdGFrZTogdWludDY0CglkaXZtb2R3Cglwb3AKCXBvcAoJc3dhcAoJIQoKCS8vIHdpZGVSYXRpbyBmYWlsZWQKCWFzc2VydAoJZnJhbWVfYnVyeSAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODE4CgkvLyBjbXBTdGFrZXIucmV3YXJkVG9rZW5CYWxhbmNlICs9IHN0YWtlclRva2VuUmV3YXJkCglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglpbnRjIDIwIC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDQ4IDgKCWJ0b2kKCWZyYW1lX2RpZyAzNyAvLyBzdGFrZXJUb2tlblJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MTkKCS8vIHRva2VuUmV3YXJkUGFpZE91dCArPSBzdGFrZXJUb2tlblJld2FyZAoJZnJhbWVfZGlnIDE1IC8vIHRva2VuUmV3YXJkUGFpZE91dDogdWludDY0CglmcmFtZV9kaWcgMzcgLy8gc3Rha2VyVG9rZW5SZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAxNSAvLyB0b2tlblJld2FyZFBhaWRPdXQ6IHVpbnQ2NAoKKmlmNDNfZW5kOgoJLy8gKmlmNDRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjEKCS8vIGFsZ29SZXdhcmRBdmFpbCA+IDAKCWZyYW1lX2RpZyAxMSAvLyBhbGdvUmV3YXJkQXZhaWw6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjQ0X2VuZAoKCS8vICppZjQ0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjgyMgoJLy8gc3Rha2VyUmV3YXJkID0gd2lkZVJhdGlvKAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtcFN0YWtlci5iYWxhbmNlLCBhbGdvUmV3YXJkQXZhaWxdLAoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25ld1Bvb2xUb3RhbFN0YWtlXSwKCS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZXh0cmFjdCAzMiA4CglidG9pCglmcmFtZV9kaWcgMTEgLy8gYWxnb1Jld2FyZEF2YWlsOiB1aW50NjQKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMzMgLy8gbmV3UG9vbFRvdGFsU3Rha2U6IHVpbnQ2NAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCWZyYW1lX2J1cnkgMzggLy8gc3Rha2VyUmV3YXJkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MjgKCS8vIGNtcFN0YWtlci5iYWxhbmNlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDM1IC8vIGNtcFN0YWtlcjogKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJaW50YyA0IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDMyIDgKCWJ0b2kKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJaXRvYgoJcmVwbGFjZTMKCWZyYW1lX2J1cnkgMzUgLy8gY21wU3Rha2VyOiAoYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODI5CgkvLyBjbXBTdGFrZXIudG90YWxSZXdhcmRlZCArPSBzdGFrZXJSZXdhcmQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWludGMgMTkgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgNDAgOAoJYnRvaQoJZnJhbWVfZGlnIDM4IC8vIHN0YWtlclJld2FyZDogdWludDY0CgkrCglpdG9iCglyZXBsYWNlMwoJZnJhbWVfYnVyeSAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzAKCS8vIGluY3JlYXNlZFN0YWtlICs9IHN0YWtlclJld2FyZAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWZyYW1lX2RpZyAzOCAvLyBzdGFrZXJSZXdhcmQ6IHVpbnQ2NAoJKwoJZnJhbWVfYnVyeSAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgoqaWY0NF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4MzQKCS8vIHRoaXMuc3Rha2Vycy52YWx1ZVtpXSA9IGNtcFN0YWtlcgoJZnJhbWVfZGlnIDM0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDY0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWZyYW1lX2RpZyAzNSAvLyBjbXBTdGFrZXI6IChhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKCWJ5dGVjIDIgLy8gICJzdGFrZXJzIgoJY292ZXIgMgoJYm94X3JlcGxhY2UKCippZjQyX2VuZDoKCippZjQxX2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjc5OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMzQgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAzNCAvLyBpOiB1aW50NjQKCWIgKmZvcl81CgoqZm9yXzVfZW5kOgoKKmlmMzlfZW5kOgoKKmlmMzNfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODQ0CgkvLyByb3VuZHNMZWZ0SW5CaW4gPSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSAtIGdsb2JhbHMucm91bmQKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWFwcF9nbG9iYWxfZ2V0CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSsKCWdsb2JhbCBSb3VuZAoJLQoJZnJhbWVfYnVyeSAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NQoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gaW5jcmVhc2VkU3Rha2UKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCSsKCWJ5dGVjIDYgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0NgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlID0KCS8vICAgICAgICAgICAgIHRoaXMuc3Rha2VBY2N1bXVsYXRvci52YWx1ZSArIChpbmNyZWFzZWRTdGFrZSBhcyB1aW50MTI4KSAqIChyb3VuZHNMZWZ0SW5CaW4gYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWZyYW1lX2RpZyAzOSAvLyByb3VuZHNMZWZ0SW5CaW46IHVpbnQ2NAoJaXRvYgoJYioKCWIrCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgKyAoaW5jcmVhc2VkU3Rha2UgYXMgdWludDEyOCkgKiAocm91bmRzTGVmdEluQmluIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg0OAoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IHRoaXMucmV3YXJkQWNjdW11bGF0b3IudmFsdWUgKyBpbmNyZWFzZWRTdGFrZQoJYnl0ZWMgMTIgLy8gICJyZXdhcmRBY2N1bXVsYXRvciIKCWR1cAoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAyMyAvLyBpbmNyZWFzZWRTdGFrZTogdWludDY0CgkrCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg1NAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5zdGFrZVVwZGF0ZWRWaWFSZXdhcmRzPih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZSwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDQxOGZjZWZjIC8vIG1ldGhvZCAic3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTUKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4NTYKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICB7IGlkOiB0aGlzLnZhbGlkYXRvcklkLnZhbHVlLCBwb29sSWQ6IHRoaXMucG9vbElkLnZhbHVlLCBwb29sQXBwSWQ6IHRoaXMuYXBwLmlkIH0sCgkvLyAgICAgICAgICAgICAgICAgaW5jcmVhc2VkU3Rha2UsCgkvLyAgICAgICAgICAgICAgICAgdG9rZW5SZXdhcmRQYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIHZhbGlkYXRvckNvbW1pc3Npb25QYWlkT3V0LAoJLy8gICAgICAgICAgICAgICAgIGV4Y2Vzc1RvRmVlU2luaywKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDMgLy8gICJ2YWxpZGF0b3JJZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA0IC8vICAicG9vbElkIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWNvbmNhdAoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDIzIC8vIGluY3JlYXNlZFN0YWtlOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTUgLy8gdG9rZW5SZXdhcmRQYWlkT3V0OiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMTYgLy8gdmFsaWRhdG9yQ29tbWlzc2lvblBhaWRPdXQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAxNyAvLyBleGNlc3NUb0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglyZXRzdWIKCi8vIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfZ29PbmxpbmU6CgkvLyB2b3RlS2V5RGlsdXRpb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgoJYnRvaQoKCS8vIHZvdGVMYXN0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDUKCWJ0b2kKCgkvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHN0YXRlUHJvb2ZQSzogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglleHRyYWN0IDIgMAoKCS8vIHNlbGVjdGlvblBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWV4dHJhY3QgMiAwCgoJLy8gdm90ZVBLOiBieXRlW10KCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWV4dHJhY3QgMiAwCgoJLy8gZmVlUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDYgKGZlZVBheW1lbnQpIGZvciBnb09ubGluZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCgljYWxsc3ViIGdvT25saW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09ubGluZShmZWVQYXltZW50OiBQYXlUeG4sIHZvdGVQSzogYnl0ZXMsIHNlbGVjdGlvblBLOiBieXRlcywgc3RhdGVQcm9vZlBLOiBieXRlcywgdm90ZUZpcnN0OiB1aW50NjQsIHZvdGVMYXN0OiB1aW50NjQsIHZvdGVLZXlEaWx1dGlvbjogdWludDY0KTogdm9pZAovLwovLyBSZWdpc3RlcnMgYSBzdGFraW5nIHBvb2wga2V5IG9ubGluZSBhZ2FpbnN0IGEgcGFydGljaXBhdGlvbiBrZXkuCi8vIFsgT05MWSBPV05FUiBPUiBNQU5BR0VSIENBTiBDQUxMIF0KLy8KLy8gQHBhcmFtIHtQYXlUeG59IGZlZVBheW1lbnQgLSBwYXltZW50IHRvIGNvdmVyIGV4dHJhIGZlZSBvZiBnb2luZyBvbmxpbmUgaWYgb2ZmbGluZSAtIG9yIDAgaWYgbm90IHJlbmV3YWwKLy8gQHBhcmFtIHtieXRlc30gdm90ZVBLIC0gVGhlIHZvdGUgcHVibGljIGtleS4KLy8gQHBhcmFtIHtieXRlc30gc2VsZWN0aW9uUEsgLSBUaGUgc2VsZWN0aW9uIHB1YmxpYyBrZXkuCi8vIEBwYXJhbSB7Ynl0ZXN9IHN0YXRlUHJvb2ZQSyAtIFRoZSBzdGF0ZSBwcm9vZiBwdWJsaWMga2V5LgovLyBAcGFyYW0ge3VpbnQ2NH0gdm90ZUZpcnN0IC0gVGhlIGZpcnN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlTGFzdCAtIFRoZSBsYXN0IHZvdGUgaW5kZXguCi8vIEBwYXJhbSB7dWludDY0fSB2b3RlS2V5RGlsdXRpb24gLSBUaGUgdm90ZSBrZXkgZGlsdXRpb24gdmFsdWUuCi8vIEB0aHJvd3Mge0Vycm9yfSBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvciBhIG1hbmFnZXIuCmdvT25saW5lOgoJcHJvdG8gNyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4ODgKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg4OQoJLy8gZXh0cmFGZWUgPSB0aGlzLmdldEdvT25saW5lRmVlKCkKCWNhbGxzdWIgZ2V0R29PbmxpbmVGZWUKCWZyYW1lX2J1cnkgMCAvLyBleHRyYUZlZTogdWludDY0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODkwCgkvLyB2ZXJpZnlQYXlUeG4oZmVlUGF5bWVudCwgeyByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywgYW1vdW50OiBleHRyYUZlZSB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gZmVlUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAwIC8vIGV4dHJhRmVlOiB1aW50NjQKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJmZWVQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6ImV4dHJhRmVlIn0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5MQoJLy8gc2VuZE9ubGluZUtleVJlZ2lzdHJhdGlvbih7CgkvLyAgICAgICAgICAgICB2b3RlUEs6IHZvdGVQSywKCS8vICAgICAgICAgICAgIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSywKCS8vICAgICAgICAgICAgIHN0YXRlUHJvb2ZQSzogc3RhdGVQcm9vZlBLLAoJLy8gICAgICAgICAgICAgdm90ZUZpcnN0OiB2b3RlRmlyc3QsCgkvLyAgICAgICAgICAgICB2b3RlTGFzdDogdm90ZUxhc3QsCgkvLyAgICAgICAgICAgICB2b3RlS2V5RGlsdXRpb246IHZvdGVLZXlEaWx1dGlvbiwKCS8vICAgICAgICAgICAgIGZlZTogZXh0cmFGZWUsCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDE4IC8vICBrZXlyZWcKCWl0eG5fZmllbGQgVHlwZUVudW0KCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTIKCS8vIHZvdGVQSzogdm90ZVBLCglmcmFtZV9kaWcgLTIgLy8gdm90ZVBLOiBieXRlcwoJaXR4bl9maWVsZCBWb3RlUEsKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTMKCS8vIHNlbGVjdGlvblBLOiBzZWxlY3Rpb25QSwoJZnJhbWVfZGlnIC0zIC8vIHNlbGVjdGlvblBLOiBieXRlcwoJaXR4bl9maWVsZCBTZWxlY3Rpb25QSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NAoJLy8gc3RhdGVQcm9vZlBLOiBzdGF0ZVByb29mUEsKCWZyYW1lX2RpZyAtNCAvLyBzdGF0ZVByb29mUEs6IGJ5dGVzCglpdHhuX2ZpZWxkIFN0YXRlUHJvb2ZQSwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjg5NQoJLy8gdm90ZUZpcnN0OiB2b3RlRmlyc3QKCWZyYW1lX2RpZyAtNSAvLyB2b3RlRmlyc3Q6IHVpbnQ2NAoJaXR4bl9maWVsZCBWb3RlRmlyc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTYKCS8vIHZvdGVMYXN0OiB2b3RlTGFzdAoJZnJhbWVfZGlnIC02IC8vIHZvdGVMYXN0OiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUxhc3QKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo4OTcKCS8vIHZvdGVLZXlEaWx1dGlvbjogdm90ZUtleURpbHV0aW9uCglmcmFtZV9kaWcgLTcgLy8gdm90ZUtleURpbHV0aW9uOiB1aW50NjQKCWl0eG5fZmllbGQgVm90ZUtleURpbHV0aW9uCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6ODk4CgkvLyBmZWU6IGV4dHJhRmVlCglmcmFtZV9kaWcgMCAvLyBleHRyYUZlZTogdWludDY0CglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gZ29PZmZsaW5lKCl2b2lkCiphYmlfcm91dGVfZ29PZmZsaW5lOgoJLy8gZXhlY3V0ZSBnb09mZmxpbmUoKXZvaWQKCWNhbGxzdWIgZ29PZmZsaW5lCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnb09mZmxpbmUoKTogdm9pZAovLwovLyBNYXJrcyBhIHN0YWtpbmcgcG9vbCBrZXkgT0ZGTElORS4KLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENBTEwgXQpnb09mZmxpbmU6Cglwcm90byAwIDAKCgkvLyAqaWY0NV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkxMAoJLy8gdGhpcy50eG4uc2VuZGVyICE9PSB0aGlzLmNyZWF0aW5nVmFsaWRhdG9yQ29udHJhY3RBcHBJZC52YWx1ZS5hZGRyZXNzCgl0eG4gU2VuZGVyCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWY0NV9lbmQKCgkvLyAqaWY0NV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MTEKCS8vIGFzc2VydCh0aGlzLmlzT3duZXJPck1hbmFnZXJDYWxsZXIoKSwgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcicpCgljYWxsc3ViIGlzT3duZXJPck1hbmFnZXJDYWxsZXIKCgkvLyBjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3IKCWFzc2VydAoKKmlmNDVfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTE0CgkvLyBzZW5kT2ZmbGluZUtleVJlZ2lzdHJhdGlvbih7fSkKCWl0eG5fYmVnaW4KCWludGMgMTggLy8gIGtleXJlZwoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCXJldHN1YgoKLy8gbGlua1RvTkZEKHVpbnQ2NCxzdHJpbmcpdm9pZAoqYWJpX3JvdXRlX2xpbmtUb05GRDoKCS8vIG5mZE5hbWU6IHN0cmluZwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZXh0cmFjdCAyIDAKCgkvLyBuZmRBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsaW5rVG9ORkQodWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGxpbmtUb05GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbGlua1RvTkZEKG5mZEFwcElkOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKbGlua1RvTkZEOgoJcHJvdG8gMiAwCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTIxCgkvLyBhc3NlcnQodGhpcy5pc093bmVyT3JNYW5hZ2VyQ2FsbGVyKCksICdjYW4gb25seSBiZSBjYWxsZWQgYnkgb3duZXIgb3IgbWFuYWdlciBvZiB2YWxpZGF0b3InKQoJY2FsbHN1YiBpc093bmVyT3JNYW5hZ2VyQ2FsbGVyCgoJLy8gY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjMKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25zOiBbQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJZCldLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTI0CgkvLyBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHRoaXMubmZkUmVnaXN0cnlBcHBJZCkKCWludGMgMjEgLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjUKCS8vIGFwcGxpY2F0aW9uQXJnczogWyd2ZXJpZnlfbmZkX2FkZHInLCBuZmROYW1lLCBpdG9iKG5mZEFwcElkKSwgcmF3Qnl0ZXModGhpcy5hcHAuYWRkcmVzcyldCglwdXNoYnl0ZXMgMHg3NjY1NzI2OTY2Nzk1ZjZlNjY2NDVmNjE2NDY0NzIgLy8gInZlcmlmeV9uZmRfYWRkciIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgLTIgLy8gbmZkTmFtZTogc3RyaW5nCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5MjYKCS8vIGFwcGxpY2F0aW9uczogW0FwcElELmZyb21VaW50NjQobmZkQXBwSWQpXQoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25zCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJcmV0c3ViCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9wcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMjEgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglwdXNoaW50IDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkKCWNhbGxzdWIgcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gcHJveGllZFNldFRva2VuUGF5b3V0UmF0aW8gaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGJ5IHBvb2xzICE9IDEgLSBjYWxsaW5nIFVTLCBwb29sICMxCi8vIFdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgd2UgYXJlIGluIGZhY3QgYmVpbmcgY2FsbGVkIGJ5IGFub3RoZXIgb2YgT1VSIHBvb2xzIChub3QgdXMpCi8vIGFuZCB0aGVuIHdlJ2xsIGNhbGwgdGhlIHZhbGlkYXRvciBvbiB0aGVpciBiZWhhbGYgdG8gdXBkYXRlIHRoZSB0b2tlbiBwYXlvdXRzCi8vIEBwYXJhbSBwb29sS2V5IC0gVmFsaWRhdG9yUG9vbEtleSB0dXBsZQpwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM3CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JJZC52YWx1ZSA9PT0gcG9vbEtleS5pZCwgJ2NhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IScpCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCgk9PQoKCS8vIGNhbGxlciBtdXN0IGJlIHBhcnQgb2Ygc2FtZSB2YWxpZGF0b3Igc2V0IQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTM4CgkvLyBhc3NlcnQodGhpcy5wb29sSWQudmFsdWUgPT09IDEsICdjYWxsZWUgbXVzdCBiZSBwb29sIDEnKQoJYnl0ZWMgNCAvLyAgInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJPT0KCgkvLyBjYWxsZWUgbXVzdCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjkzOQoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkICE9PSAxLCAnY2FsbGVyIG11c3QgTk9UIGJlIHBvb2wgMScpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgkhPQoKCS8vIGNhbGxlciBtdXN0IE5PVCBiZSBwb29sIDEKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0MQoJLy8gY2FsbGVyUG9vbEFwcElEID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRQb29sQXBwSWQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3Bvb2xLZXkuaWQsIHBvb2xLZXkucG9vbElkXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgMiAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMjMgLy8gIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDIKCS8vIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlCglieXRlYyAxIC8vICAiY3JlYXRvckFwcCIKCWFwcF9nbG9iYWxfZ2V0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NDMKCS8vIG1ldGhvZEFyZ3M6IFtwb29sS2V5LmlkLCBwb29sS2V5LnBvb2xJZF0KCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NQoJLy8gYXNzZXJ0KGNhbGxlclBvb2xBcHBJRCA9PT0gcG9vbEtleS5wb29sQXBwSWQpCglmcmFtZV9kaWcgMCAvLyBjYWxsZXJQb29sQXBwSUQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0NgoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OAoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBWYWxpZGF0b3JSZWdpc3RyeS5wcm90b3R5cGUuc2V0VG9rZW5QYXlvdXRSYXRpbz4oewoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUsCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbdGhpcy52YWxpZGF0b3JJZC52YWx1ZV0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDIgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWJ5dGVjIDI0IC8vICBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk0OQoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1MAoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gaXNPd25lck9yTWFuYWdlckNhbGxlcigpOiBib29sZWFuCmlzT3duZXJPck1hbmFnZXJDYWxsZXI6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NQoJLy8gT3duZXJBbmRNYW5hZ2VyID0gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFZhbGlkYXRvclJlZ2lzdHJ5LnByb3RvdHlwZS5nZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXI+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHRoaXMuY3JlYXRpbmdWYWxpZGF0b3JDb250cmFjdEFwcElkLnZhbHVlLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHgyZmEyMmM0YiAvLyBtZXRob2QgImdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih1aW50NjQpKGFkZHJlc3MsYWRkcmVzcykiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NgoJLy8gYXBwbGljYXRpb25JRDogdGhpcy5jcmVhdGluZ1ZhbGlkYXRvckNvbnRyYWN0QXBwSWQudmFsdWUKCWJ5dGVjIDEgLy8gICJjcmVhdG9yQXBwIgoJYXBwX2dsb2JhbF9nZXQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk1NwoJLy8gbWV0aG9kQXJnczogW3RoaXMudmFsaWRhdG9ySWQudmFsdWVdCglieXRlYyAzIC8vICAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CglpdHhuIE51bUxvZ3MKCWludGMgMSAvLyAxCgktCglpdHhuYXMgTG9ncwoJZXh0cmFjdCA0IDAKCWZyYW1lX2J1cnkgMCAvLyBPd25lckFuZE1hbmFnZXI6IChhZGRyZXNzLGFkZHJlc3MpCgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTU5CgkvLyByZXR1cm4gdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMF0gfHwgdGhpcy50eG4uc2VuZGVyID09PSBPd25lckFuZE1hbmFnZXJbMV0KCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAwIC8vIE93bmVyQW5kTWFuYWdlcjogKGFkZHJlc3MsYWRkcmVzcykKCWV4dHJhY3QgMCAzMgoJPT0KCWR1cAoJYm56ICpza2lwX29yMgoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gT3duZXJBbmRNYW5hZ2VyOiAoYWRkcmVzcyxhZGRyZXNzKQoJZXh0cmFjdCAzMiAzMgoJPT0KCXx8Cgoqc2tpcF9vcjI6CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gYWxnb1NhdHVyYXRpb25MZXZlbCgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgbWF4aW11bSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZSBiZWZvcmUKLy8gdGhlIHZhbGlkYXRvciBpcyBjb25zaWRlcmVkIHNhdHVyYXRlZCAtIHdoZXJlIHJld2FyZHMgYXJlIGRpbWluaXNoZWQuCmFsZ29TYXR1cmF0aW9uTGV2ZWw6Cglwcm90byAwIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMCAvLyAweAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk2OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX1NPRlRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDEwMAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMTEgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gZ2V0R29PbmxpbmVGZWUoKTogdWludDY0CmdldEdvT25saW5lRmVlOgoJcHJvdG8gMCAxCgoJLy8gKmlmNDZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzQKCS8vICF0aGlzLmFwcC5hZGRyZXNzLmluY2VudGl2ZUVsaWdpYmxlCglnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwoJYWNjdF9wYXJhbXNfZ2V0IEFjY3RJbmNlbnRpdmVFbGlnaWJsZQoJcG9wCgkhCglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzUKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNHb09ubGluZUZlZQoJZ2xvYmFsIFBheW91dHNHb09ubGluZUZlZQoJcmV0c3ViCgoqaWY0Nl9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czo5NzcKCS8vIHJldHVybiAwCglpbnRjIDAgLy8gMAoJcmV0c3ViCgovLyBnZXRDdXJyZW50T25saW5lU3Rha2UoKTogdWludDY0CmdldEN1cnJlbnRPbmxpbmVTdGFrZToKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4MQoJLy8gcmV0dXJuIG9ubGluZVN0YWtlKCkKCW9ubGluZV9zdGFrZQoJcmV0c3ViCgovLyBjaGVja0lmQmluQ2xvc2VkKCk6IHZvaWQKLy8KLy8gQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdW5kIGlzIGluIGEgJ25ldyBjYWxjdWxhdGlvbiBiaW4nIChhcHByb3hpbWF0ZWx5IGRhaWx5KQpjaGVja0lmQmluQ2xvc2VkOgoJcHJvdG8gMCAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDAgLy8gMHgKCWR1cG4gNAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OAoJLy8gY3VycmVudEJpblNpemUgPSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSBhcyB1aW50MTI4CglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWZyYW1lX2J1cnkgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk4OQoJLy8gZ2xvYmFscy5yb3VuZCA+PSB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgKyAoY3VycmVudEJpblNpemUgYXMgdWludDY0KQoJZ2xvYmFsIFJvdW5kCglieXRlYyAxMSAvLyAgImJpblJvdW5kU3RhcnQiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CglkdXAKCWJpdGxlbgoJaW50YyAzIC8vIDY0Cgk8PQoKCS8vIGN1cnJlbnRCaW5TaXplIGFzIHVpbnQ2NCBvdmVyZmxvd2VkIDY0IGJpdHMKCWFzc2VydAoJcHVzaGJ5dGVzIDB4RkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgMTQgLy8gOAoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJYnRvaQoJKwoJPj0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkwCgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAxMCAvLyAzMDAKCTwKCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5MQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyAyIC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDUgLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgOCAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmNDhfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTkzCgkvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4ID0gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpCglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTZkCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gY3VycmVudEJpblNpemUgKiAoMzY1IGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglmcmFtZV9idXJ5IDEgLy8gYXBwcm94Um91bmRzUGVyWWVhcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjk5NAoJLy8gYXZnU3Rha2U6IHVpbnQxMjggPSB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgLyBjdXJyZW50QmluU2l6ZQoJYnl0ZWMgOCAvLyAgInN0YWtlQWNjdW11bGF0b3IiCglhcHBfZ2xvYmFsX2dldAoJZnJhbWVfZGlnIDAgLy8gY3VycmVudEJpblNpemU6IHVuc2FmZSB1aW50MTI4CgliLwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gdGhpcy5zdGFrZUFjY3VtdWxhdG9yLnZhbHVlIC8gY3VycmVudEJpblNpemUgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWZyYW1lX2J1cnkgMiAvLyBhdmdTdGFrZTogdWludDEyOAoKCS8vICppZjQ5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk1CgkvLyBhdmdTdGFrZSAhPT0gMAoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWJ5dGVjIDE2IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWIhPQoJYnogKmlmNDlfZW5kCgoJLy8gKmlmNDlfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6OTk5CgkvLyBhcHI6IHVpbnQxMjggPQoJLy8gICAgICAgICAgICAgICAgICAgICAoKCh0aGlzLnJld2FyZEFjY3VtdWxhdG9yLnZhbHVlIGFzIHVpbnQxMjgpICogKDEwMDAwIGFzIHVpbnQxMjgpKSAvIGF2Z1N0YWtlKSAqCgkvLyAgICAgICAgICAgICAgICAgICAgIChhcHByb3hSb3VuZHNQZXJZZWFyIC8gY3VycmVudEJpblNpemUpCglieXRlYyAxMiAvLyAgInJld2FyZEFjY3VtdWxhdG9yIgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNzEwCgliKgoJZnJhbWVfZGlnIDIgLy8gYXZnU3Rha2U6IHVpbnQxMjgKCWIvCglmcmFtZV9kaWcgMSAvLyBhcHByb3hSb3VuZHNQZXJZZWFyOiB1aW50MTI4CglmcmFtZV9kaWcgMCAvLyBjdXJyZW50QmluU2l6ZTogdW5zYWZlIHVpbnQxMjgKCWIvCgliKgoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKCgodGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSBhcyB1aW50MTI4KSAqICgxMDAwMCBhcyB1aW50MTI4KSkgLyBhdmdTdGFrZSkgKlxuICAgICAgICAgICAgICAgICAgICAoYXBwcm94Um91bmRzUGVyWWVhciAvIGN1cnJlbnRCaW5TaXplKSBvdmVyZmxvd2VkIDEyOCBiaXRzCglhc3NlcnQKCWJ5dGVjIDkgLy8gMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRgoJYiYKCWR1cAoJbGVuCglkdXAKCWludGMgNSAvLyAxNgoJLQoJc3dhcAoJc3Vic3RyaW5nMwoJZnJhbWVfYnVyeSAzIC8vIGFwcjogdWludDEyOAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDMKCS8vIGFscGhhOiB1aW50MTI4ID0gMTAgYXMgdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGEKCWZyYW1lX2J1cnkgNCAvLyBhbHBoYTogdW5zYWZlIHVpbnQxMjgKCgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMDUKCS8vIGF2Z1N0YWtlID4gMzAwMDAwMDAwMDAwCglmcmFtZV9kaWcgMiAvLyBhdmdTdGFrZTogdWludDEyOAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ1ZDk2NGI4MDAKCWI+CglieiAqaWY1MF9lbmQKCgkvLyAqaWY1MF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA2CgkvLyBhbHBoYSA9IDkwIGFzIHVpbnQxMjgKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDVhCglmcmFtZV9idXJ5IDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgoqaWY1MF9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDA4CgkvLyB0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSA9CgkvLyAgICAgICAgICAgICAgICAgICAgICh0aGlzLndlaWdodGVkTW92aW5nQXZlcmFnZS52YWx1ZSAqICgoMTAwIGFzIHVpbnQxMjgpIC0gYWxwaGEpKSAvICgxMDAgYXMgdWludDEyOCkgKwoJLy8gICAgICAgICAgICAgICAgICAgICAoYXByICogYWxwaGEpIC8gKDEwMCBhcyB1aW50MTI4KQoJYnl0ZWMgMjAgLy8gICJld21hIgoJZHVwCglhcHBfZ2xvYmFsX2dldAoJYnl0ZWMgMTcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2NAoJZnJhbWVfZGlnIDQgLy8gYWxwaGE6IHVuc2FmZSB1aW50MTI4CgliLQoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCglmcmFtZV9kaWcgMyAvLyBhcHI6IHVpbnQxMjgKCWZyYW1lX2RpZyA0IC8vIGFscGhhOiB1bnNhZmUgdWludDEyOAoJYioKCWJ5dGVjIDE3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjQKCWIvCgliKwoJZHVwCgliaXRsZW4KCWludGMgNiAvLyAxMjgKCTw9CgoJLy8gKHRoaXMud2VpZ2h0ZWRNb3ZpbmdBdmVyYWdlLnZhbHVlICogKCgxMDAgYXMgdWludDEyOCkgLSBhbHBoYSkpIC8gKDEwMCBhcyB1aW50MTI4KSArXG4gICAgICAgICAgICAgICAgICAgIChhcHIgKiBhbHBoYSkgLyAoMTAwIGFzIHVpbnQxMjgpIG92ZXJmbG93ZWQgMTI4IGJpdHMKCWFzc2VydAoJYnl0ZWMgOSAvLyAweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGCgliJgoJZHVwCglsZW4KCWR1cAoJaW50YyA1IC8vIDE2CgktCglzd2FwCglzdWJzdHJpbmczCglhcHBfZ2xvYmFsX3B1dAoKKmlmNDlfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNAoJLy8gdGhpcy5zZXRSb3VuZHNQZXJEYXkoKQoJY2FsbHN1YiBzZXRSb3VuZHNQZXJEYXkKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE1CgkvLyB0aGlzLnN0YWtlQWNjdW11bGF0b3IudmFsdWUgPSAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkKCWJ5dGVjIDggLy8gICJzdGFrZUFjY3VtdWxhdG9yIgoJYnl0ZWMgNiAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglpdG9iCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCWl0b2IKCWIqCglkdXAKCWJpdGxlbgoJaW50YyA2IC8vIDEyOAoJPD0KCgkvLyAodGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgYXMgdWludDEyOCkgKiAodGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgYXMgdWludDEyOCkgb3ZlcmZsb3dlZCAxMjggYml0cwoJYXNzZXJ0CglieXRlYyA5IC8vIDB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkYKCWImCglkdXAKCWxlbgoJZHVwCglpbnRjIDUgLy8gMTYKCS0KCXN3YXAKCXN1YnN0cmluZzMKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAxNgoJLy8gdGhpcy5yZXdhcmRBY2N1bXVsYXRvci52YWx1ZSA9IDAKCWJ5dGVjIDEyIC8vICAicmV3YXJkQWNjdW11bGF0b3IiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDE3CgkvLyB0aGlzLmJpblJvdW5kU3RhcnQudmFsdWUgPSBnbG9iYWxzLnJvdW5kIC0gKGdsb2JhbHMucm91bmQgJSB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSkKCWJ5dGVjIDExIC8vICAiYmluUm91bmRTdGFydCIKCWdsb2JhbCBSb3VuZAoJZ2xvYmFsIFJvdW5kCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJYXBwX2dsb2JhbF9nZXQKCSUKCS0KCWFwcF9nbG9iYWxfcHV0CgoqaWY0N19lbmQ6CglyZXRzdWIKCi8vIHNldFJvdW5kc1BlckRheSgpOiB2b2lkCnNldFJvdW5kc1BlckRheToKCXByb3RvIDAgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAwIC8vIDB4CgoJLy8gKmlmNTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI2CgkvLyB0aGlzLnR4bi5maXJzdFZhbGlkIDwgMTIKCXR4biBGaXJzdFZhbGlkCglwdXNoaW50IDEyCgk8CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDI4CgkvLyB0aGlzLnJvdW5kc1BlckRheS52YWx1ZSA9IEFQUFJPWF9BVkdfUk9VTkRTX1BFUl9EQVkKCWJ5dGVjIDcgLy8gICJyb3VuZHNQZXJEYXkiCglpbnRjIDE3IC8vIDMwODU3CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMjkKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY1MV9lbmQ6CgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDMyCgkvLyBhdmdCbG9ja1RpbWVUZW50aHMgPQoJLy8gICAgICAgICAgICAgYmxvY2tzW3RoaXMudHhuLmZpcnN0VmFsaWQgLSAxXS50aW1lc3RhbXAgLSBibG9ja3NbdGhpcy50eG4uZmlyc3RWYWxpZCAtIDExXS50aW1lc3RhbXAKCXR4biBGaXJzdFZhbGlkCglpbnRjIDEgLy8gMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgl0eG4gRmlyc3RWYWxpZAoJcHVzaGludCAxMQoJLQoJYmxvY2sgQmxrVGltZXN0YW1wCgktCglmcmFtZV9idXJ5IDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy9zdGFraW5nUG9vbC5hbGdvLnRzOjEwMzQKCS8vIGF2Z0Jsb2NrVGltZVRlbnRocyA9PT0gMAoJZnJhbWVfZGlnIDAgLy8gYXZnQmxvY2tUaW1lVGVudGhzOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTAzNgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSBBUFBST1hfQVZHX1JPVU5EU19QRVJfREFZCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJaW50YyAxNyAvLyAzMDg1NwoJYXBwX2dsb2JhbF9wdXQKCgkvLyBjb250cmFjdHMvc3Rha2luZ1Bvb2wuYWxnby50czoxMDM3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmNTJfZW5kOgoJLy8gY29udHJhY3RzL3N0YWtpbmdQb29sLmFsZ28udHM6MTA0MgoJLy8gdGhpcy5yb3VuZHNQZXJEYXkudmFsdWUgPSAoMjQgKiA2MCAqIDYwICogMTApIC8gYXZnQmxvY2tUaW1lVGVudGhzCglieXRlYyA3IC8vICAicm91bmRzUGVyRGF5IgoJcHVzaGludCA4NjQwMDAKCWZyYW1lX2RpZyAwIC8vIGF2Z0Jsb2NrVGltZVRlbnRoczogdWludDY0CgkvCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHg1OWU5MGFhNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg0N2NmY2MwNCAvLyBtZXRob2QgImluaXRTdG9yYWdlKHBheSl2b2lkIgoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglwdXNoYnl0ZXMgMHg0MjFiNWFiZSAvLyBtZXRob2QgInJlbW92ZVN0YWtlKGFkZHJlc3MsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhmNTg5MmQ1NiAvLyBtZXRob2QgImNsYWltVG9rZW5zKCl2b2lkIgoJcHVzaGJ5dGVzIDB4NWNmYmIwNTcgLy8gbWV0aG9kICJnZXRTdGFrZXJJbmZvKGFkZHJlc3MpKGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDYzZjNmMjhiIC8vIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHg4NmEzNzI1YyAvLyBtZXRob2QgInVwZGF0ZUFsZ29kVmVyKHN0cmluZyl2b2lkIgoJcHVzaGJ5dGVzIDB4ZWZjMjYwOGQgLy8gbWV0aG9kICJlcG9jaEJhbGFuY2VVcGRhdGUoKXZvaWQiCglwdXNoYnl0ZXMgMHg0MDBlMTRmYiAvLyBtZXRob2QgImdvT25saW5lKHBheSxieXRlW10sYnl0ZVtdLGJ5dGVbXSx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4NTFlZjNiMjEgLy8gbWV0aG9kICJnb09mZmxpbmUoKXZvaWQiCglwdXNoYnl0ZXMgMHhhMjRlMjcxNyAvLyBtZXRob2QgImxpbmtUb05GRCh1aW50NjQsc3RyaW5nKXZvaWQiCglieXRlYyAyNSAvLyAgbWV0aG9kICJwcm94aWVkU2V0VG9rZW5QYXlvdXRSYXRpbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjRbMjRdLHVpbnQ2NCkiCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAwCgltYXRjaCAqYWJpX3JvdXRlX2dhcyAqYWJpX3JvdXRlX2luaXRTdG9yYWdlICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9yZW1vdmVTdGFrZSAqYWJpX3JvdXRlX2NsYWltVG9rZW5zICphYmlfcm91dGVfZ2V0U3Rha2VySW5mbyAqYWJpX3JvdXRlX3BheVRva2VuUmV3YXJkICphYmlfcm91dGVfdXBkYXRlQWxnb2RWZXIgKmFiaV9yb3V0ZV9lcG9jaEJhbGFuY2VVcGRhdGUgKmFiaV9yb3V0ZV9nb09ubGluZSAqYWJpX3JvdXRlX2dvT2ZmbGluZSAqYWJpX3JvdXRlX2xpbmtUb05GRCAqYWJpX3JvdXRlX3Byb3hpZWRTZXRUb2tlblBheW91dFJhdGlvCgoJLy8gdGhpcyBjb250cmFjdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGdpdmVuIEFCSSBtZXRob2QgZm9yIGNhbGwgTm9PcAoJZXJy","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract /** * A state record containing binary data diff --git a/ui/src/contracts/ValidatorRegistryClient.ts b/ui/src/contracts/ValidatorRegistryClient.ts index f1ecbeac..ddf062f6 100644 --- a/ui/src/contracts/ValidatorRegistryClient.ts +++ b/ui/src/contracts/ValidatorRegistryClient.ts @@ -24,7 +24,7 @@ import { SendParams, SendSingleTransactionResult, SendAtomicTransactionComposerR import { Address, encodeAddress, modelsv2, OnApplicationComplete, Transaction, TransactionSigner } from 'algosdk' import SimulateResponse = modelsv2.SimulateResponse -export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/validatorRegistry.algo.ts:50","pc":[1,2]},{"teal":16,"source":"contracts/validatorRegistry.algo.ts:50","pc":[3]},{"teal":17,"source":"contracts/validatorRegistry.algo.ts:50","pc":[4,5]},{"teal":18,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6]},{"teal":19,"source":"contracts/validatorRegistry.algo.ts:50","pc":[7,8]},{"teal":20,"source":"contracts/validatorRegistry.algo.ts:50","pc":[9]},{"teal":21,"source":"contracts/validatorRegistry.algo.ts:50","pc":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]},{"teal":25,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[36]},{"teal":30,"source":"contracts/validatorRegistry.algo.ts:81","pc":[37,38,39]},{"teal":31,"source":"contracts/validatorRegistry.algo.ts:81","pc":[40]},{"teal":32,"source":"contracts/validatorRegistry.algo.ts:81","pc":[41]},{"teal":36,"source":"contracts/validatorRegistry.algo.ts:81","pc":[42,43,44]},{"teal":40,"source":"contracts/validatorRegistry.algo.ts:82","pc":[45,46]},{"teal":41,"source":"contracts/validatorRegistry.algo.ts:82","pc":[47]},{"teal":42,"source":"contracts/validatorRegistry.algo.ts:82","pc":[48,49]},{"teal":43,"source":"contracts/validatorRegistry.algo.ts:82","pc":[50]},{"teal":44,"source":"contracts/validatorRegistry.algo.ts:82","pc":[51,52]},{"teal":45,"source":"contracts/validatorRegistry.algo.ts:82","pc":[53]},{"teal":46,"source":"contracts/validatorRegistry.algo.ts:82","pc":[54]},{"teal":50,"source":"contracts/validatorRegistry.algo.ts:83","pc":[55,56]},{"teal":51,"source":"contracts/validatorRegistry.algo.ts:83","pc":[57]},{"teal":52,"source":"contracts/validatorRegistry.algo.ts:83","pc":[58]},{"teal":56,"source":"contracts/validatorRegistry.algo.ts:84","pc":[59,60]},{"teal":57,"source":"contracts/validatorRegistry.algo.ts:84","pc":[61]},{"teal":58,"source":"contracts/validatorRegistry.algo.ts:84","pc":[62]},{"teal":62,"source":"contracts/validatorRegistry.algo.ts:85","pc":[63,64]},{"teal":63,"source":"contracts/validatorRegistry.algo.ts:85","pc":[65]},{"teal":64,"source":"contracts/validatorRegistry.algo.ts:85","pc":[66]},{"teal":65,"source":"contracts/validatorRegistry.algo.ts:81","pc":[67]},{"teal":70,"source":"contracts/validatorRegistry.algo.ts:88","pc":[68,69,70]},{"teal":71,"source":"contracts/validatorRegistry.algo.ts:88","pc":[71]},{"teal":74,"source":"contracts/validatorRegistry.algo.ts:88","pc":[72,73,74]},{"teal":75,"source":"contracts/validatorRegistry.algo.ts:88","pc":[75]},{"teal":76,"source":"contracts/validatorRegistry.algo.ts:88","pc":[76]},{"teal":80,"source":"contracts/validatorRegistry.algo.ts:88","pc":[77,78,79]},{"teal":84,"source":"contracts/validatorRegistry.algo.ts:90","pc":[80,81]},{"teal":85,"source":"contracts/validatorRegistry.algo.ts:90","pc":[82,83]},{"teal":86,"source":"contracts/validatorRegistry.algo.ts:90","pc":[84]},{"teal":87,"source":"contracts/validatorRegistry.algo.ts:90","pc":[85]},{"teal":88,"source":"contracts/validatorRegistry.algo.ts:88","pc":[86]},{"teal":93,"source":"contracts/validatorRegistry.algo.ts:93","pc":[87,88,89]},{"teal":94,"source":"contracts/validatorRegistry.algo.ts:93","pc":[90,91,92]},{"teal":97,"source":"contracts/validatorRegistry.algo.ts:93","pc":[93,94,95]},{"teal":98,"source":"contracts/validatorRegistry.algo.ts:93","pc":[96]},{"teal":101,"source":"contracts/validatorRegistry.algo.ts:93","pc":[97,98,99]},{"teal":102,"source":"contracts/validatorRegistry.algo.ts:93","pc":[100]},{"teal":103,"source":"contracts/validatorRegistry.algo.ts:93","pc":[101]},{"teal":107,"source":"contracts/validatorRegistry.algo.ts:93","pc":[102,103,104]},{"teal":111,"source":"contracts/validatorRegistry.algo.ts:94","pc":[105,106]},{"teal":112,"source":"contracts/validatorRegistry.algo.ts:94","pc":[107]},{"teal":113,"source":"contracts/validatorRegistry.algo.ts:94","pc":[108]},{"teal":114,"source":"contracts/validatorRegistry.algo.ts:94","pc":[109]},{"teal":115,"source":"contracts/validatorRegistry.algo.ts:94","pc":[110]},{"teal":116,"source":"contracts/validatorRegistry.algo.ts:94","pc":[111]},{"teal":120,"source":"contracts/validatorRegistry.algo.ts:95","pc":[112,113]},{"teal":121,"source":"contracts/validatorRegistry.algo.ts:95","pc":[114,115]},{"teal":122,"source":"contracts/validatorRegistry.algo.ts:95","pc":[116,117]},{"teal":123,"source":"contracts/validatorRegistry.algo.ts:95","pc":[118]},{"teal":124,"source":"contracts/validatorRegistry.algo.ts:93","pc":[119]},{"teal":129,"source":"contracts/validatorRegistry.algo.ts:98","pc":[120,121,122]},{"teal":130,"source":"contracts/validatorRegistry.algo.ts:98","pc":[123]},{"teal":131,"source":"contracts/validatorRegistry.algo.ts:98","pc":[124]},{"teal":135,"source":"contracts/validatorRegistry.algo.ts:98","pc":[125,126,127]},{"teal":139,"source":"contracts/validatorRegistry.algo.ts:99","pc":[128,129]},{"teal":140,"source":"contracts/validatorRegistry.algo.ts:99","pc":[130]},{"teal":141,"source":"contracts/validatorRegistry.algo.ts:99","pc":[131,132]},{"teal":142,"source":"contracts/validatorRegistry.algo.ts:99","pc":[133]},{"teal":143,"source":"contracts/validatorRegistry.algo.ts:99","pc":[134,135]},{"teal":144,"source":"contracts/validatorRegistry.algo.ts:99","pc":[136]},{"teal":145,"source":"contracts/validatorRegistry.algo.ts:99","pc":[137]},{"teal":146,"source":"contracts/validatorRegistry.algo.ts:98","pc":[138]},{"teal":151,"source":"contracts/validatorRegistry.algo.ts:105","pc":[139,140,141]},{"teal":152,"source":"contracts/validatorRegistry.algo.ts:105","pc":[142]},{"teal":153,"source":"contracts/validatorRegistry.algo.ts:105","pc":[143]},{"teal":159,"source":"contracts/validatorRegistry.algo.ts:105","pc":[144,145,146]},{"teal":160,"source":"contracts/validatorRegistry.algo.ts:105","pc":[147]},{"teal":165,"source":"contracts/validatorRegistry.algo.ts:116","pc":[148]},{"teal":168,"source":"contracts/validatorRegistry.algo.ts:116","pc":[149,150,151]},{"teal":169,"source":"contracts/validatorRegistry.algo.ts:116","pc":[152]},{"teal":170,"source":"contracts/validatorRegistry.algo.ts:116","pc":[153]},{"teal":171,"source":"contracts/validatorRegistry.algo.ts:116","pc":[154]},{"teal":172,"source":"contracts/validatorRegistry.algo.ts:116","pc":[155]},{"teal":184,"source":"contracts/validatorRegistry.algo.ts:116","pc":[156,157,158]},{"teal":209,"source":"contracts/validatorRegistry.algo.ts:121","pc":[159,160,161]},{"teal":210,"source":"contracts/validatorRegistry.algo.ts:121","pc":[162,163,164]},{"teal":211,"source":"contracts/validatorRegistry.algo.ts:121","pc":[165]},{"teal":212,"source":"contracts/validatorRegistry.algo.ts:131","pc":[166,167]},{"teal":213,"source":"contracts/validatorRegistry.algo.ts:130","pc":[168,169]},{"teal":214,"source":"contracts/validatorRegistry.algo.ts:129","pc":[170]},{"teal":215,"source":"contracts/validatorRegistry.algo.ts:129","pc":[171,172]},{"teal":216,"source":"contracts/validatorRegistry.algo.ts:126","pc":[173,174]},{"teal":217,"source":"contracts/validatorRegistry.algo.ts:123","pc":[175]},{"teal":218,"source":"contracts/validatorRegistry.algo.ts:122","pc":[176,177,178]},{"teal":219,"source":"contracts/validatorRegistry.algo.ts:122","pc":[179]},{"teal":220,"source":"contracts/validatorRegistry.algo.ts:122","pc":[180]},{"teal":221,"source":"contracts/validatorRegistry.algo.ts:134","pc":[181,182]},{"teal":222,"source":"contracts/validatorRegistry.algo.ts:135","pc":[183,184,185]},{"teal":223,"source":"contracts/validatorRegistry.algo.ts:135","pc":[186,187,188]},{"teal":224,"source":"contracts/validatorRegistry.algo.ts:134","pc":[189]},{"teal":225,"source":"contracts/validatorRegistry.algo.ts:134","pc":[190]},{"teal":226,"source":"contracts/validatorRegistry.algo.ts:134","pc":[191]},{"teal":227,"source":"contracts/validatorRegistry.algo.ts:139","pc":[192,193,194]},{"teal":228,"source":"contracts/validatorRegistry.algo.ts:138","pc":[195,196,197]},{"teal":229,"source":"contracts/validatorRegistry.algo.ts:138","pc":[198]},{"teal":230,"source":"contracts/validatorRegistry.algo.ts:138","pc":[199]},{"teal":231,"source":"contracts/validatorRegistry.algo.ts:116","pc":[200]},{"teal":236,"source":"contracts/validatorRegistry.algo.ts:147","pc":[201]},{"teal":239,"source":"contracts/validatorRegistry.algo.ts:147","pc":[202,203,204]},{"teal":240,"source":"contracts/validatorRegistry.algo.ts:147","pc":[205]},{"teal":241,"source":"contracts/validatorRegistry.algo.ts:147","pc":[206]},{"teal":242,"source":"contracts/validatorRegistry.algo.ts:147","pc":[207]},{"teal":243,"source":"contracts/validatorRegistry.algo.ts:147","pc":[208]},{"teal":249,"source":"contracts/validatorRegistry.algo.ts:147","pc":[209,210,211]},{"teal":265,"source":"contracts/validatorRegistry.algo.ts:154","pc":[212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253]},{"teal":266,"source":"contracts/validatorRegistry.algo.ts:155","pc":[254,255,256]},{"teal":267,"source":"contracts/validatorRegistry.algo.ts:155","pc":[257]},{"teal":268,"source":"contracts/validatorRegistry.algo.ts:155","pc":[258]},{"teal":269,"source":"contracts/validatorRegistry.algo.ts:156","pc":[259,260,261]},{"teal":270,"source":"contracts/validatorRegistry.algo.ts:156","pc":[262]},{"teal":271,"source":"contracts/validatorRegistry.algo.ts:156","pc":[263]},{"teal":272,"source":"contracts/validatorRegistry.algo.ts:157","pc":[264,265,266]},{"teal":273,"source":"contracts/validatorRegistry.algo.ts:157","pc":[267]},{"teal":274,"source":"contracts/validatorRegistry.algo.ts:157","pc":[268]},{"teal":275,"source":"contracts/validatorRegistry.algo.ts:158","pc":[269,270,271,272,273,274,275,276,277,278]},{"teal":276,"source":"contracts/validatorRegistry.algo.ts:158","pc":[279]},{"teal":277,"source":"contracts/validatorRegistry.algo.ts:159","pc":[280,281,282,283,284,285,286,287,288,289]},{"teal":278,"source":"contracts/validatorRegistry.algo.ts:159","pc":[290]},{"teal":279,"source":"contracts/validatorRegistry.algo.ts:160","pc":[291,292,293,294,295,296,297,298,299,300]},{"teal":280,"source":"contracts/validatorRegistry.algo.ts:160","pc":[301]},{"teal":281,"source":"contracts/validatorRegistry.algo.ts:147","pc":[302]},{"teal":286,"source":"contracts/validatorRegistry.algo.ts:167","pc":[303]},{"teal":289,"source":"contracts/validatorRegistry.algo.ts:167","pc":[304,305,306]},{"teal":290,"source":"contracts/validatorRegistry.algo.ts:167","pc":[307]},{"teal":291,"source":"contracts/validatorRegistry.algo.ts:167","pc":[308]},{"teal":292,"source":"contracts/validatorRegistry.algo.ts:167","pc":[309]},{"teal":293,"source":"contracts/validatorRegistry.algo.ts:167","pc":[310]},{"teal":294,"source":"contracts/validatorRegistry.algo.ts:167","pc":[311]},{"teal":300,"source":"contracts/validatorRegistry.algo.ts:167","pc":[312,313,314]},{"teal":304,"source":"contracts/validatorRegistry.algo.ts:169","pc":[315,316]},{"teal":305,"source":"contracts/validatorRegistry.algo.ts:169","pc":[317]},{"teal":306,"source":"contracts/validatorRegistry.algo.ts:167","pc":[318]},{"teal":311,"source":"contracts/validatorRegistry.algo.ts:172","pc":[319]},{"teal":314,"source":"contracts/validatorRegistry.algo.ts:173","pc":[320,321,322]},{"teal":315,"source":"contracts/validatorRegistry.algo.ts:173","pc":[323]},{"teal":318,"source":"contracts/validatorRegistry.algo.ts:172","pc":[324,325,326]},{"teal":319,"source":"contracts/validatorRegistry.algo.ts:172","pc":[327]},{"teal":320,"source":"contracts/validatorRegistry.algo.ts:172","pc":[328]},{"teal":321,"source":"contracts/validatorRegistry.algo.ts:172","pc":[329]},{"teal":322,"source":"contracts/validatorRegistry.algo.ts:172","pc":[330]},{"teal":326,"source":"contracts/validatorRegistry.algo.ts:172","pc":[331,332,333]},{"teal":330,"source":"contracts/validatorRegistry.algo.ts:174","pc":[334]},{"teal":331,"source":"contracts/validatorRegistry.algo.ts:174","pc":[335,336]},{"teal":332,"source":"contracts/validatorRegistry.algo.ts:174","pc":[337]},{"teal":333,"source":"contracts/validatorRegistry.algo.ts:174","pc":[338,339]},{"teal":334,"source":"contracts/validatorRegistry.algo.ts:174","pc":[340]},{"teal":335,"source":"contracts/validatorRegistry.algo.ts:174","pc":[341]},{"teal":336,"source":"contracts/validatorRegistry.algo.ts:174","pc":[342,343]},{"teal":337,"source":"contracts/validatorRegistry.algo.ts:174","pc":[344]},{"teal":338,"source":"contracts/validatorRegistry.algo.ts:172","pc":[345]},{"teal":343,"source":"contracts/validatorRegistry.algo.ts:177","pc":[346]},{"teal":346,"source":"contracts/validatorRegistry.algo.ts:178","pc":[347,348,349]},{"teal":347,"source":"contracts/validatorRegistry.algo.ts:178","pc":[350]},{"teal":350,"source":"contracts/validatorRegistry.algo.ts:177","pc":[351,352,353]},{"teal":351,"source":"contracts/validatorRegistry.algo.ts:177","pc":[354]},{"teal":352,"source":"contracts/validatorRegistry.algo.ts:177","pc":[355]},{"teal":353,"source":"contracts/validatorRegistry.algo.ts:177","pc":[356]},{"teal":354,"source":"contracts/validatorRegistry.algo.ts:177","pc":[357]},{"teal":358,"source":"contracts/validatorRegistry.algo.ts:177","pc":[358,359,360]},{"teal":362,"source":"contracts/validatorRegistry.algo.ts:179","pc":[361,362]},{"teal":363,"source":"contracts/validatorRegistry.algo.ts:179","pc":[363,364]},{"teal":364,"source":"contracts/validatorRegistry.algo.ts:179","pc":[365]},{"teal":365,"source":"contracts/validatorRegistry.algo.ts:179","pc":[366,367]},{"teal":366,"source":"contracts/validatorRegistry.algo.ts:179","pc":[368]},{"teal":367,"source":"contracts/validatorRegistry.algo.ts:179","pc":[369]},{"teal":368,"source":"contracts/validatorRegistry.algo.ts:179","pc":[370,371]},{"teal":369,"source":"contracts/validatorRegistry.algo.ts:179","pc":[372]},{"teal":370,"source":"contracts/validatorRegistry.algo.ts:177","pc":[373]},{"teal":375,"source":"contracts/validatorRegistry.algo.ts:182","pc":[374]},{"teal":378,"source":"contracts/validatorRegistry.algo.ts:183","pc":[375,376,377]},{"teal":379,"source":"contracts/validatorRegistry.algo.ts:183","pc":[378]},{"teal":382,"source":"contracts/validatorRegistry.algo.ts:182","pc":[379,380,381]},{"teal":383,"source":"contracts/validatorRegistry.algo.ts:182","pc":[382]},{"teal":384,"source":"contracts/validatorRegistry.algo.ts:182","pc":[383]},{"teal":385,"source":"contracts/validatorRegistry.algo.ts:182","pc":[384]},{"teal":386,"source":"contracts/validatorRegistry.algo.ts:182","pc":[385]},{"teal":390,"source":"contracts/validatorRegistry.algo.ts:182","pc":[386,387,388]},{"teal":397,"source":"contracts/validatorRegistry.algo.ts:185","pc":[389]},{"teal":398,"source":"contracts/validatorRegistry.algo.ts:185","pc":[390,391]},{"teal":399,"source":"contracts/validatorRegistry.algo.ts:185","pc":[392]},{"teal":400,"source":"contracts/validatorRegistry.algo.ts:185","pc":[393,394]},{"teal":401,"source":"contracts/validatorRegistry.algo.ts:185","pc":[395]},{"teal":402,"source":"contracts/validatorRegistry.algo.ts:185","pc":[396]},{"teal":403,"source":"contracts/validatorRegistry.algo.ts:185","pc":[397,398]},{"teal":404,"source":"contracts/validatorRegistry.algo.ts:185","pc":[399]},{"teal":405,"source":"contracts/validatorRegistry.algo.ts:186","pc":[400,401]},{"teal":406,"source":"contracts/validatorRegistry.algo.ts:186","pc":[402,403]},{"teal":407,"source":"contracts/validatorRegistry.algo.ts:186","pc":[404]},{"teal":408,"source":"contracts/validatorRegistry.algo.ts:186","pc":[405,406]},{"teal":409,"source":"contracts/validatorRegistry.algo.ts:186","pc":[407]},{"teal":410,"source":"contracts/validatorRegistry.algo.ts:186","pc":[408]},{"teal":411,"source":"contracts/validatorRegistry.algo.ts:186","pc":[409,410]},{"teal":412,"source":"contracts/validatorRegistry.algo.ts:186","pc":[411]},{"teal":413,"source":"contracts/validatorRegistry.algo.ts:186","pc":[412]},{"teal":414,"source":"contracts/validatorRegistry.algo.ts:182","pc":[413]},{"teal":419,"source":"contracts/validatorRegistry.algo.ts:196","pc":[414]},{"teal":422,"source":"contracts/validatorRegistry.algo.ts:197","pc":[415,416,417]},{"teal":423,"source":"contracts/validatorRegistry.algo.ts:197","pc":[418]},{"teal":426,"source":"contracts/validatorRegistry.algo.ts:196","pc":[419,420,421]},{"teal":427,"source":"contracts/validatorRegistry.algo.ts:196","pc":[422]},{"teal":428,"source":"contracts/validatorRegistry.algo.ts:196","pc":[423]},{"teal":429,"source":"contracts/validatorRegistry.algo.ts:196","pc":[424,425]},{"teal":430,"source":"contracts/validatorRegistry.algo.ts:196","pc":[426]},{"teal":431,"source":"contracts/validatorRegistry.algo.ts:196","pc":[427]},{"teal":432,"source":"contracts/validatorRegistry.algo.ts:196","pc":[428,429,430]},{"teal":433,"source":"contracts/validatorRegistry.algo.ts:196","pc":[431]},{"teal":434,"source":"contracts/validatorRegistry.algo.ts:196","pc":[432]},{"teal":435,"source":"contracts/validatorRegistry.algo.ts:196","pc":[433]},{"teal":436,"source":"contracts/validatorRegistry.algo.ts:196","pc":[434]},{"teal":437,"source":"contracts/validatorRegistry.algo.ts:196","pc":[435]},{"teal":438,"source":"contracts/validatorRegistry.algo.ts:196","pc":[436]},{"teal":447,"source":"contracts/validatorRegistry.algo.ts:196","pc":[437,438,439]},{"teal":450,"source":"contracts/validatorRegistry.algo.ts:196","pc":[440]},{"teal":451,"source":"contracts/validatorRegistry.algo.ts:196","pc":[441,442]},{"teal":455,"source":"contracts/validatorRegistry.algo.ts:198","pc":[443]},{"teal":456,"source":"contracts/validatorRegistry.algo.ts:198","pc":[444,445]},{"teal":460,"source":"contracts/validatorRegistry.algo.ts:199","pc":[446,447]},{"teal":461,"source":"contracts/validatorRegistry.algo.ts:199","pc":[448,449]},{"teal":462,"source":"contracts/validatorRegistry.algo.ts:199","pc":[450]},{"teal":463,"source":"contracts/validatorRegistry.algo.ts:199","pc":[451,452]},{"teal":464,"source":"contracts/validatorRegistry.algo.ts:199","pc":[453]},{"teal":465,"source":"contracts/validatorRegistry.algo.ts:199","pc":[454]},{"teal":466,"source":"contracts/validatorRegistry.algo.ts:199","pc":[455,456]},{"teal":467,"source":"contracts/validatorRegistry.algo.ts:199","pc":[457]},{"teal":468,"source":"contracts/validatorRegistry.algo.ts:199","pc":[458,459]},{"teal":472,"source":"contracts/validatorRegistry.algo.ts:200","pc":[460]},{"teal":473,"source":"contracts/validatorRegistry.algo.ts:200","pc":[461,462]},{"teal":478,"source":"contracts/validatorRegistry.algo.ts:200","pc":[463,464]},{"teal":479,"source":"contracts/validatorRegistry.algo.ts:200","pc":[465]},{"teal":480,"source":"contracts/validatorRegistry.algo.ts:200","pc":[466]},{"teal":481,"source":"contracts/validatorRegistry.algo.ts:200","pc":[467,468,469]},{"teal":486,"source":"contracts/validatorRegistry.algo.ts:201","pc":[470,471]},{"teal":487,"source":"contracts/validatorRegistry.algo.ts:201","pc":[472,473]},{"teal":488,"source":"contracts/validatorRegistry.algo.ts:201","pc":[474,475]},{"teal":489,"source":"contracts/validatorRegistry.algo.ts:201","pc":[476]},{"teal":490,"source":"contracts/validatorRegistry.algo.ts:201","pc":[477]},{"teal":491,"source":"contracts/validatorRegistry.algo.ts:201","pc":[478]},{"teal":492,"source":"contracts/validatorRegistry.algo.ts:201","pc":[479]},{"teal":493,"source":"contracts/validatorRegistry.algo.ts:201","pc":[480]},{"teal":494,"source":"contracts/validatorRegistry.algo.ts:201","pc":[481]},{"teal":495,"source":"contracts/validatorRegistry.algo.ts:201","pc":[482]},{"teal":496,"source":"contracts/validatorRegistry.algo.ts:201","pc":[483]},{"teal":497,"source":"contracts/validatorRegistry.algo.ts:201","pc":[484,485,486]},{"teal":500,"source":"contracts/validatorRegistry.algo.ts:203","pc":[487,488,489]},{"teal":505,"source":"contracts/validatorRegistry.algo.ts:205","pc":[490,491]},{"teal":506,"source":"contracts/validatorRegistry.algo.ts:205","pc":[492,493]},{"teal":507,"source":"contracts/validatorRegistry.algo.ts:205","pc":[494,495]},{"teal":508,"source":"contracts/validatorRegistry.algo.ts:205","pc":[496,497]},{"teal":509,"source":"contracts/validatorRegistry.algo.ts:205","pc":[498]},{"teal":510,"source":"contracts/validatorRegistry.algo.ts:205","pc":[499,500]},{"teal":511,"source":"contracts/validatorRegistry.algo.ts:205","pc":[501]},{"teal":512,"source":"contracts/validatorRegistry.algo.ts:205","pc":[502]},{"teal":513,"source":"contracts/validatorRegistry.algo.ts:205","pc":[503,504]},{"teal":518,"source":"contracts/validatorRegistry.algo.ts:200","pc":[505,506]},{"teal":519,"source":"contracts/validatorRegistry.algo.ts:200","pc":[507]},{"teal":520,"source":"contracts/validatorRegistry.algo.ts:200","pc":[508]},{"teal":521,"source":"contracts/validatorRegistry.algo.ts:200","pc":[509,510]},{"teal":522,"source":"contracts/validatorRegistry.algo.ts:200","pc":[511,512,513]},{"teal":527,"source":"contracts/validatorRegistry.algo.ts:207","pc":[514,515]},{"teal":530,"source":"contracts/validatorRegistry.algo.ts:196","pc":[516,517]},{"teal":533,"source":"contracts/validatorRegistry.algo.ts:196","pc":[518,519]},{"teal":534,"source":"contracts/validatorRegistry.algo.ts:196","pc":[520]},{"teal":539,"source":"contracts/validatorRegistry.algo.ts:215","pc":[521]},{"teal":542,"source":"contracts/validatorRegistry.algo.ts:216","pc":[522,523,524]},{"teal":543,"source":"contracts/validatorRegistry.algo.ts:216","pc":[525]},{"teal":546,"source":"contracts/validatorRegistry.algo.ts:216","pc":[526,527,528]},{"teal":547,"source":"contracts/validatorRegistry.algo.ts:216","pc":[529]},{"teal":550,"source":"contracts/validatorRegistry.algo.ts:215","pc":[530,531,532]},{"teal":551,"source":"contracts/validatorRegistry.algo.ts:215","pc":[533]},{"teal":552,"source":"contracts/validatorRegistry.algo.ts:215","pc":[534]},{"teal":553,"source":"contracts/validatorRegistry.algo.ts:215","pc":[535]},{"teal":554,"source":"contracts/validatorRegistry.algo.ts:215","pc":[536]},{"teal":555,"source":"contracts/validatorRegistry.algo.ts:215","pc":[537]},{"teal":563,"source":"contracts/validatorRegistry.algo.ts:215","pc":[538,539,540]},{"teal":570,"source":"contracts/validatorRegistry.algo.ts:218","pc":[541,542]},{"teal":571,"source":"contracts/validatorRegistry.algo.ts:218","pc":[543]},{"teal":572,"source":"contracts/validatorRegistry.algo.ts:218","pc":[544]},{"teal":573,"source":"contracts/validatorRegistry.algo.ts:218","pc":[545]},{"teal":574,"source":"contracts/validatorRegistry.algo.ts:218","pc":[546,547,548]},{"teal":575,"source":"contracts/validatorRegistry.algo.ts:218","pc":[549,550]},{"teal":576,"source":"contracts/validatorRegistry.algo.ts:218","pc":[551]},{"teal":577,"source":"contracts/validatorRegistry.algo.ts:218","pc":[552]},{"teal":578,"source":"contracts/validatorRegistry.algo.ts:218","pc":[553]},{"teal":582,"source":"contracts/validatorRegistry.algo.ts:217","errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[554]},{"teal":586,"source":"contracts/validatorRegistry.algo.ts:221","pc":[555,556]},{"teal":587,"source":"contracts/validatorRegistry.algo.ts:221","pc":[557,558]},{"teal":588,"source":"contracts/validatorRegistry.algo.ts:221","pc":[559]},{"teal":589,"source":"contracts/validatorRegistry.algo.ts:221","pc":[560]},{"teal":590,"source":"contracts/validatorRegistry.algo.ts:221","pc":[561,562]},{"teal":591,"source":"contracts/validatorRegistry.algo.ts:221","pc":[563]},{"teal":592,"source":"contracts/validatorRegistry.algo.ts:221","pc":[564]},{"teal":593,"source":"contracts/validatorRegistry.algo.ts:221","pc":[565]},{"teal":594,"source":"contracts/validatorRegistry.algo.ts:221","pc":[566]},{"teal":595,"source":"contracts/validatorRegistry.algo.ts:221","pc":[567]},{"teal":596,"source":"contracts/validatorRegistry.algo.ts:221","pc":[568]},{"teal":597,"source":"contracts/validatorRegistry.algo.ts:221","pc":[569,570]},{"teal":598,"source":"contracts/validatorRegistry.algo.ts:221","pc":[571]},{"teal":599,"source":"contracts/validatorRegistry.algo.ts:221","pc":[572]},{"teal":600,"source":"contracts/validatorRegistry.algo.ts:221","pc":[573,574]},{"teal":601,"source":"contracts/validatorRegistry.algo.ts:221","pc":[575]},{"teal":602,"source":"contracts/validatorRegistry.algo.ts:221","pc":[576]},{"teal":603,"source":"contracts/validatorRegistry.algo.ts:215","pc":[577]},{"teal":608,"source":"contracts/validatorRegistry.algo.ts:224","pc":[578]},{"teal":611,"source":"contracts/validatorRegistry.algo.ts:225","pc":[579,580,581]},{"teal":612,"source":"contracts/validatorRegistry.algo.ts:225","pc":[582]},{"teal":613,"source":"contracts/validatorRegistry.algo.ts:225","pc":[583]},{"teal":614,"source":"contracts/validatorRegistry.algo.ts:225","pc":[584]},{"teal":615,"source":"contracts/validatorRegistry.algo.ts:225","pc":[585]},{"teal":618,"source":"contracts/validatorRegistry.algo.ts:225","errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[586]},{"teal":621,"source":"contracts/validatorRegistry.algo.ts:224","pc":[587,588,589]},{"teal":622,"source":"contracts/validatorRegistry.algo.ts:224","pc":[590]},{"teal":623,"source":"contracts/validatorRegistry.algo.ts:224","pc":[591]},{"teal":624,"source":"contracts/validatorRegistry.algo.ts:224","pc":[592]},{"teal":625,"source":"contracts/validatorRegistry.algo.ts:224","pc":[593]},{"teal":629,"source":"contracts/validatorRegistry.algo.ts:224","pc":[594,595,596]},{"teal":633,"source":"contracts/validatorRegistry.algo.ts:226","pc":[597,598]},{"teal":634,"source":"contracts/validatorRegistry.algo.ts:226","pc":[599,600]},{"teal":635,"source":"contracts/validatorRegistry.algo.ts:226","pc":[601,602,603]},{"teal":636,"source":"contracts/validatorRegistry.algo.ts:226","pc":[604]},{"teal":637,"source":"contracts/validatorRegistry.algo.ts:226","pc":[605]},{"teal":638,"source":"contracts/validatorRegistry.algo.ts:226","pc":[606]},{"teal":639,"source":"contracts/validatorRegistry.algo.ts:226","pc":[607,608]},{"teal":640,"source":"contracts/validatorRegistry.algo.ts:226","pc":[609]},{"teal":641,"source":"contracts/validatorRegistry.algo.ts:226","pc":[610]},{"teal":642,"source":"contracts/validatorRegistry.algo.ts:226","pc":[611,612]},{"teal":643,"source":"contracts/validatorRegistry.algo.ts:226","pc":[613]},{"teal":644,"source":"contracts/validatorRegistry.algo.ts:226","pc":[614,615]},{"teal":645,"source":"contracts/validatorRegistry.algo.ts:226","pc":[616,617,618]},{"teal":646,"source":"contracts/validatorRegistry.algo.ts:226","pc":[619]},{"teal":647,"source":"contracts/validatorRegistry.algo.ts:226","pc":[620]},{"teal":648,"source":"contracts/validatorRegistry.algo.ts:226","pc":[621]},{"teal":649,"source":"contracts/validatorRegistry.algo.ts:226","pc":[622,623]},{"teal":650,"source":"contracts/validatorRegistry.algo.ts:226","pc":[624]},{"teal":651,"source":"contracts/validatorRegistry.algo.ts:224","pc":[625]},{"teal":656,"source":"contracts/validatorRegistry.algo.ts:236","pc":[626]},{"teal":659,"source":"contracts/validatorRegistry.algo.ts:237","pc":[627,628,629]},{"teal":660,"source":"contracts/validatorRegistry.algo.ts:237","pc":[630]},{"teal":663,"source":"contracts/validatorRegistry.algo.ts:236","pc":[631,632,633]},{"teal":664,"source":"contracts/validatorRegistry.algo.ts:236","pc":[634]},{"teal":665,"source":"contracts/validatorRegistry.algo.ts:236","pc":[635]},{"teal":666,"source":"contracts/validatorRegistry.algo.ts:236","pc":[636]},{"teal":667,"source":"contracts/validatorRegistry.algo.ts:236","pc":[637]},{"teal":668,"source":"contracts/validatorRegistry.algo.ts:236","pc":[638]},{"teal":678,"source":"contracts/validatorRegistry.algo.ts:236","pc":[639,640,641]},{"teal":681,"source":"contracts/validatorRegistry.algo.ts:236","pc":[642]},{"teal":682,"source":"contracts/validatorRegistry.algo.ts:236","pc":[643,644]},{"teal":686,"source":"contracts/validatorRegistry.algo.ts:238","pc":[645,646]},{"teal":687,"source":"contracts/validatorRegistry.algo.ts:238","pc":[647,648]},{"teal":688,"source":"contracts/validatorRegistry.algo.ts:238","pc":[649]},{"teal":689,"source":"contracts/validatorRegistry.algo.ts:238","pc":[650,651]},{"teal":690,"source":"contracts/validatorRegistry.algo.ts:238","pc":[652]},{"teal":691,"source":"contracts/validatorRegistry.algo.ts:238","pc":[653]},{"teal":692,"source":"contracts/validatorRegistry.algo.ts:238","pc":[654,655]},{"teal":693,"source":"contracts/validatorRegistry.algo.ts:238","pc":[656]},{"teal":694,"source":"contracts/validatorRegistry.algo.ts:238","pc":[657]},{"teal":695,"source":"contracts/validatorRegistry.algo.ts:238","pc":[658,659]},{"teal":699,"source":"contracts/validatorRegistry.algo.ts:239","pc":[660,661,662]},{"teal":700,"source":"contracts/validatorRegistry.algo.ts:239","pc":[663,664]},{"teal":701,"source":"contracts/validatorRegistry.algo.ts:239","pc":[665]},{"teal":702,"source":"contracts/validatorRegistry.algo.ts:239","pc":[666,667]},{"teal":706,"source":"contracts/validatorRegistry.algo.ts:240","pc":[668,669,670]},{"teal":707,"source":"contracts/validatorRegistry.algo.ts:240","pc":[671]},{"teal":708,"source":"contracts/validatorRegistry.algo.ts:240","pc":[672]},{"teal":709,"source":"contracts/validatorRegistry.algo.ts:240","pc":[673,674]},{"teal":710,"source":"contracts/validatorRegistry.algo.ts:240","pc":[675]},{"teal":711,"source":"contracts/validatorRegistry.algo.ts:240","pc":[676]},{"teal":712,"source":"contracts/validatorRegistry.algo.ts:240","pc":[677,678]},{"teal":713,"source":"contracts/validatorRegistry.algo.ts:240","pc":[679]},{"teal":714,"source":"contracts/validatorRegistry.algo.ts:240","pc":[680]},{"teal":715,"source":"contracts/validatorRegistry.algo.ts:240","pc":[681,682]},{"teal":720,"source":"contracts/validatorRegistry.algo.ts:241","pc":[683,684]},{"teal":721,"source":"contracts/validatorRegistry.algo.ts:241","pc":[685]},{"teal":722,"source":"contracts/validatorRegistry.algo.ts:241","pc":[686]},{"teal":723,"source":"contracts/validatorRegistry.algo.ts:241","pc":[687,688,689]},{"teal":728,"source":"contracts/validatorRegistry.algo.ts:242","pc":[690,691,692]},{"teal":729,"source":"contracts/validatorRegistry.algo.ts:242","pc":[693,694]},{"teal":735,"source":"contracts/validatorRegistry.algo.ts:244","pc":[695,696]},{"teal":736,"source":"contracts/validatorRegistry.algo.ts:244","pc":[697,698]},{"teal":737,"source":"contracts/validatorRegistry.algo.ts:244","pc":[699]},{"teal":738,"source":"contracts/validatorRegistry.algo.ts:244","pc":[700,701,702]},{"teal":743,"source":"contracts/validatorRegistry.algo.ts:245","pc":[703,704]},{"teal":744,"source":"contracts/validatorRegistry.algo.ts:245","pc":[705,706]},{"teal":749,"source":"contracts/validatorRegistry.algo.ts:247","pc":[707,708]},{"teal":752,"source":"contracts/validatorRegistry.algo.ts:236","pc":[709,710]},{"teal":755,"source":"contracts/validatorRegistry.algo.ts:236","pc":[711,712]},{"teal":756,"source":"contracts/validatorRegistry.algo.ts:236","pc":[713]},{"teal":761,"source":"contracts/validatorRegistry.algo.ts:254","pc":[714]},{"teal":764,"source":"contracts/validatorRegistry.algo.ts:255","pc":[715,716,717]},{"teal":765,"source":"contracts/validatorRegistry.algo.ts:255","pc":[718]},{"teal":766,"source":"contracts/validatorRegistry.algo.ts:255","pc":[719]},{"teal":767,"source":"contracts/validatorRegistry.algo.ts:255","pc":[720,721]},{"teal":768,"source":"contracts/validatorRegistry.algo.ts:255","pc":[722]},{"teal":771,"source":"contracts/validatorRegistry.algo.ts:255","errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[723]},{"teal":774,"source":"contracts/validatorRegistry.algo.ts:254","pc":[724,725,726]},{"teal":775,"source":"contracts/validatorRegistry.algo.ts:254","pc":[727,728]},{"teal":776,"source":"contracts/validatorRegistry.algo.ts:254","pc":[729]},{"teal":777,"source":"contracts/validatorRegistry.algo.ts:254","pc":[730,731]},{"teal":778,"source":"contracts/validatorRegistry.algo.ts:254","pc":[732]},{"teal":779,"source":"contracts/validatorRegistry.algo.ts:254","pc":[733]},{"teal":780,"source":"contracts/validatorRegistry.algo.ts:254","pc":[734]},{"teal":781,"source":"contracts/validatorRegistry.algo.ts:254","pc":[735]},{"teal":782,"source":"contracts/validatorRegistry.algo.ts:254","pc":[736]},{"teal":789,"source":"contracts/validatorRegistry.algo.ts:254","pc":[737,738,739]},{"teal":793,"source":"contracts/validatorRegistry.algo.ts:256","pc":[740]},{"teal":794,"source":"contracts/validatorRegistry.algo.ts:256","pc":[741,742]},{"teal":795,"source":"contracts/validatorRegistry.algo.ts:256","pc":[743]},{"teal":796,"source":"contracts/validatorRegistry.algo.ts:256","pc":[744]},{"teal":797,"source":"contracts/validatorRegistry.algo.ts:256","pc":[745]},{"teal":798,"source":"contracts/validatorRegistry.algo.ts:256","pc":[746]},{"teal":799,"source":"contracts/validatorRegistry.algo.ts:256","pc":[747]},{"teal":800,"source":"contracts/validatorRegistry.algo.ts:254","pc":[748]},{"teal":805,"source":"contracts/validatorRegistry.algo.ts:265","pc":[749]},{"teal":808,"source":"contracts/validatorRegistry.algo.ts:266","pc":[750,751,752]},{"teal":809,"source":"contracts/validatorRegistry.algo.ts:266","pc":[753]},{"teal":810,"source":"contracts/validatorRegistry.algo.ts:266","pc":[754]},{"teal":811,"source":"contracts/validatorRegistry.algo.ts:266","pc":[755,756]},{"teal":812,"source":"contracts/validatorRegistry.algo.ts:266","pc":[757]},{"teal":815,"source":"contracts/validatorRegistry.algo.ts:266","errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[758]},{"teal":818,"source":"contracts/validatorRegistry.algo.ts:265","pc":[759,760,761]},{"teal":819,"source":"contracts/validatorRegistry.algo.ts:265","pc":[762]},{"teal":820,"source":"contracts/validatorRegistry.algo.ts:265","pc":[763]},{"teal":821,"source":"contracts/validatorRegistry.algo.ts:265","pc":[764]},{"teal":822,"source":"contracts/validatorRegistry.algo.ts:265","pc":[765]},{"teal":823,"source":"contracts/validatorRegistry.algo.ts:265","pc":[766]},{"teal":824,"source":"contracts/validatorRegistry.algo.ts:265","pc":[767,768,769]},{"teal":825,"source":"contracts/validatorRegistry.algo.ts:265","pc":[770]},{"teal":826,"source":"contracts/validatorRegistry.algo.ts:265","pc":[771]},{"teal":827,"source":"contracts/validatorRegistry.algo.ts:265","pc":[772]},{"teal":828,"source":"contracts/validatorRegistry.algo.ts:265","pc":[773]},{"teal":829,"source":"contracts/validatorRegistry.algo.ts:265","pc":[774]},{"teal":830,"source":"contracts/validatorRegistry.algo.ts:265","pc":[775]},{"teal":839,"source":"contracts/validatorRegistry.algo.ts:265","pc":[776,777,778]},{"teal":842,"source":"contracts/validatorRegistry.algo.ts:265","pc":[779]},{"teal":843,"source":"contracts/validatorRegistry.algo.ts:265","pc":[780,781]},{"teal":848,"source":"contracts/validatorRegistry.algo.ts:267","pc":[782]},{"teal":849,"source":"contracts/validatorRegistry.algo.ts:267","pc":[783,784]},{"teal":850,"source":"contracts/validatorRegistry.algo.ts:267","pc":[785]},{"teal":851,"source":"contracts/validatorRegistry.algo.ts:267","pc":[786]},{"teal":852,"source":"contracts/validatorRegistry.algo.ts:267","pc":[787]},{"teal":853,"source":"contracts/validatorRegistry.algo.ts:267","pc":[788]},{"teal":854,"source":"contracts/validatorRegistry.algo.ts:267","pc":[789]},{"teal":855,"source":"contracts/validatorRegistry.algo.ts:267","pc":[790,791,792]},{"teal":860,"source":"contracts/validatorRegistry.algo.ts:268","pc":[793]},{"teal":861,"source":"contracts/validatorRegistry.algo.ts:268","pc":[794,795,796]},{"teal":866,"source":"contracts/validatorRegistry.algo.ts:270","pc":[797]},{"teal":867,"source":"contracts/validatorRegistry.algo.ts:270","pc":[798,799]},{"teal":871,"source":"contracts/validatorRegistry.algo.ts:271","pc":[800]},{"teal":872,"source":"contracts/validatorRegistry.algo.ts:271","pc":[801,802]},{"teal":873,"source":"contracts/validatorRegistry.algo.ts:271","pc":[803]},{"teal":874,"source":"contracts/validatorRegistry.algo.ts:271","pc":[804]},{"teal":877,"source":"contracts/validatorRegistry.algo.ts:271","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[805]},{"teal":878,"source":"contracts/validatorRegistry.algo.ts:271","pc":[806,807]},{"teal":882,"source":"contracts/validatorRegistry.algo.ts:272","pc":[808]},{"teal":883,"source":"contracts/validatorRegistry.algo.ts:272","pc":[809,810]},{"teal":888,"source":"contracts/validatorRegistry.algo.ts:272","pc":[811,812]},{"teal":889,"source":"contracts/validatorRegistry.algo.ts:272","pc":[813,814]},{"teal":890,"source":"contracts/validatorRegistry.algo.ts:272","pc":[815]},{"teal":891,"source":"contracts/validatorRegistry.algo.ts:272","pc":[816,817,818]},{"teal":896,"source":"contracts/validatorRegistry.algo.ts:273","pc":[819,820]},{"teal":897,"source":"contracts/validatorRegistry.algo.ts:273","pc":[821,822]},{"teal":898,"source":"contracts/validatorRegistry.algo.ts:273","pc":[823]},{"teal":899,"source":"contracts/validatorRegistry.algo.ts:273","pc":[824]},{"teal":900,"source":"contracts/validatorRegistry.algo.ts:273","pc":[825]},{"teal":901,"source":"contracts/validatorRegistry.algo.ts:273","pc":[826]},{"teal":902,"source":"contracts/validatorRegistry.algo.ts:273","pc":[827]},{"teal":903,"source":"contracts/validatorRegistry.algo.ts:273","pc":[828]},{"teal":904,"source":"contracts/validatorRegistry.algo.ts:273","pc":[829]},{"teal":905,"source":"contracts/validatorRegistry.algo.ts:273","pc":[830]},{"teal":906,"source":"contracts/validatorRegistry.algo.ts:273","pc":[831]},{"teal":907,"source":"contracts/validatorRegistry.algo.ts:273","pc":[832,833,834]},{"teal":912,"source":"contracts/validatorRegistry.algo.ts:274","pc":[835,836]},{"teal":913,"source":"contracts/validatorRegistry.algo.ts:274","pc":[837,838]},{"teal":914,"source":"contracts/validatorRegistry.algo.ts:274","pc":[839,840]},{"teal":915,"source":"contracts/validatorRegistry.algo.ts:274","pc":[841]},{"teal":916,"source":"contracts/validatorRegistry.algo.ts:274","pc":[842]},{"teal":917,"source":"contracts/validatorRegistry.algo.ts:274","pc":[843]},{"teal":918,"source":"contracts/validatorRegistry.algo.ts:274","pc":[844]},{"teal":919,"source":"contracts/validatorRegistry.algo.ts:274","pc":[845]},{"teal":920,"source":"contracts/validatorRegistry.algo.ts:274","pc":[846,847]},{"teal":927,"source":"contracts/validatorRegistry.algo.ts:272","pc":[848,849]},{"teal":928,"source":"contracts/validatorRegistry.algo.ts:272","pc":[850]},{"teal":929,"source":"contracts/validatorRegistry.algo.ts:272","pc":[851]},{"teal":930,"source":"contracts/validatorRegistry.algo.ts:272","pc":[852,853]},{"teal":931,"source":"contracts/validatorRegistry.algo.ts:272","pc":[854,855,856]},{"teal":936,"source":"contracts/validatorRegistry.algo.ts:277","pc":[857,858]},{"teal":940,"source":"contracts/validatorRegistry.algo.ts:265","pc":[859,860]},{"teal":943,"source":"contracts/validatorRegistry.algo.ts:265","pc":[861,862]},{"teal":944,"source":"contracts/validatorRegistry.algo.ts:265","pc":[863]},{"teal":949,"source":"contracts/validatorRegistry.algo.ts:287","pc":[864]},{"teal":952,"source":"contracts/validatorRegistry.algo.ts:288","pc":[865,866,867]},{"teal":953,"source":"contracts/validatorRegistry.algo.ts:288","pc":[868]},{"teal":956,"source":"contracts/validatorRegistry.algo.ts:287","pc":[869,870,871]},{"teal":957,"source":"contracts/validatorRegistry.algo.ts:287","pc":[872]},{"teal":958,"source":"contracts/validatorRegistry.algo.ts:287","pc":[873]},{"teal":959,"source":"contracts/validatorRegistry.algo.ts:287","pc":[874]},{"teal":960,"source":"contracts/validatorRegistry.algo.ts:287","pc":[875]},{"teal":970,"source":"contracts/validatorRegistry.algo.ts:287","pc":[876,877,878]},{"teal":974,"source":"contracts/validatorRegistry.algo.ts:289","pc":[879,880]},{"teal":975,"source":"contracts/validatorRegistry.algo.ts:289","pc":[881,882]},{"teal":976,"source":"contracts/validatorRegistry.algo.ts:289","pc":[883]},{"teal":977,"source":"contracts/validatorRegistry.algo.ts:289","pc":[884,885]},{"teal":978,"source":"contracts/validatorRegistry.algo.ts:289","pc":[886]},{"teal":979,"source":"contracts/validatorRegistry.algo.ts:289","pc":[887]},{"teal":980,"source":"contracts/validatorRegistry.algo.ts:289","pc":[888,889]},{"teal":981,"source":"contracts/validatorRegistry.algo.ts:289","pc":[890]},{"teal":982,"source":"contracts/validatorRegistry.algo.ts:287","pc":[891]},{"teal":987,"source":"contracts/validatorRegistry.algo.ts:292","pc":[892]},{"teal":990,"source":"contracts/validatorRegistry.algo.ts:293","pc":[893,894,895]},{"teal":991,"source":"contracts/validatorRegistry.algo.ts:293","pc":[896]},{"teal":994,"source":"contracts/validatorRegistry.algo.ts:292","pc":[897,898,899]},{"teal":995,"source":"contracts/validatorRegistry.algo.ts:292","pc":[900]},{"teal":996,"source":"contracts/validatorRegistry.algo.ts:292","pc":[901]},{"teal":997,"source":"contracts/validatorRegistry.algo.ts:292","pc":[902]},{"teal":998,"source":"contracts/validatorRegistry.algo.ts:292","pc":[903]},{"teal":1002,"source":"contracts/validatorRegistry.algo.ts:292","pc":[904,905,906]},{"teal":1006,"source":"contracts/validatorRegistry.algo.ts:294","pc":[907]},{"teal":1007,"source":"contracts/validatorRegistry.algo.ts:294","pc":[908,909]},{"teal":1008,"source":"contracts/validatorRegistry.algo.ts:294","pc":[910]},{"teal":1009,"source":"contracts/validatorRegistry.algo.ts:294","pc":[911]},{"teal":1010,"source":"contracts/validatorRegistry.algo.ts:294","pc":[912]},{"teal":1011,"source":"contracts/validatorRegistry.algo.ts:294","pc":[913]},{"teal":1012,"source":"contracts/validatorRegistry.algo.ts:294","pc":[914]},{"teal":1015,"source":"contracts/validatorRegistry.algo.ts:294","errorMessage":"the specified validator id doesn't exist","pc":[915]},{"teal":1019,"source":"contracts/validatorRegistry.algo.ts:296","pc":[916,917]},{"teal":1020,"source":"contracts/validatorRegistry.algo.ts:296","pc":[918,919]},{"teal":1021,"source":"contracts/validatorRegistry.algo.ts:296","pc":[920]},{"teal":1022,"source":"contracts/validatorRegistry.algo.ts:296","pc":[921,922]},{"teal":1023,"source":"contracts/validatorRegistry.algo.ts:296","pc":[923]},{"teal":1024,"source":"contracts/validatorRegistry.algo.ts:296","pc":[924]},{"teal":1025,"source":"contracts/validatorRegistry.algo.ts:296","pc":[925,926]},{"teal":1026,"source":"contracts/validatorRegistry.algo.ts:296","pc":[927]},{"teal":1027,"source":"contracts/validatorRegistry.algo.ts:292","pc":[928]},{"teal":1032,"source":"contracts/validatorRegistry.algo.ts:299","pc":[929]},{"teal":1035,"source":"contracts/validatorRegistry.algo.ts:299","pc":[930,931,932]},{"teal":1036,"source":"contracts/validatorRegistry.algo.ts:299","pc":[933]},{"teal":1037,"source":"contracts/validatorRegistry.algo.ts:299","pc":[934]},{"teal":1038,"source":"contracts/validatorRegistry.algo.ts:299","pc":[935]},{"teal":1039,"source":"contracts/validatorRegistry.algo.ts:299","pc":[936]},{"teal":1040,"source":"contracts/validatorRegistry.algo.ts:299","pc":[937]},{"teal":1044,"source":"contracts/validatorRegistry.algo.ts:299","pc":[938,939,940]},{"teal":1048,"source":"contracts/validatorRegistry.algo.ts:301","pc":[941,942]},{"teal":1049,"source":"contracts/validatorRegistry.algo.ts:299","pc":[943]},{"teal":1054,"source":"contracts/validatorRegistry.algo.ts:312","pc":[944]},{"teal":1057,"source":"contracts/validatorRegistry.algo.ts:312","pc":[945,946,947]},{"teal":1058,"source":"contracts/validatorRegistry.algo.ts:312","pc":[948]},{"teal":1059,"source":"contracts/validatorRegistry.algo.ts:312","pc":[949]},{"teal":1060,"source":"contracts/validatorRegistry.algo.ts:312","pc":[950,951]},{"teal":1061,"source":"contracts/validatorRegistry.algo.ts:312","pc":[952]},{"teal":1064,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[953]},{"teal":1067,"source":"contracts/validatorRegistry.algo.ts:312","pc":[954,955,956]},{"teal":1068,"source":"contracts/validatorRegistry.algo.ts:312","pc":[957,958,959]},{"teal":1071,"source":"contracts/validatorRegistry.algo.ts:312","pc":[960,961]},{"teal":1072,"source":"contracts/validatorRegistry.algo.ts:312","pc":[962]},{"teal":1073,"source":"contracts/validatorRegistry.algo.ts:312","pc":[963]},{"teal":1074,"source":"contracts/validatorRegistry.algo.ts:312","pc":[964]},{"teal":1075,"source":"contracts/validatorRegistry.algo.ts:312","pc":[965,966]},{"teal":1076,"source":"contracts/validatorRegistry.algo.ts:312","pc":[967]},{"teal":1077,"source":"contracts/validatorRegistry.algo.ts:312","pc":[968]},{"teal":1080,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[969]},{"teal":1083,"source":"contracts/validatorRegistry.algo.ts:312","pc":[970,971,972]},{"teal":1084,"source":"contracts/validatorRegistry.algo.ts:312","pc":[973]},{"teal":1085,"source":"contracts/validatorRegistry.algo.ts:312","pc":[974]},{"teal":1086,"source":"contracts/validatorRegistry.algo.ts:312","pc":[975]},{"teal":1087,"source":"contracts/validatorRegistry.algo.ts:312","pc":[976]},{"teal":1088,"source":"contracts/validatorRegistry.algo.ts:312","pc":[977]},{"teal":1100,"source":"contracts/validatorRegistry.algo.ts:312","pc":[978,979,980]},{"teal":1103,"source":"contracts/validatorRegistry.algo.ts:312","pc":[981]},{"teal":1107,"source":"contracts/validatorRegistry.algo.ts:313","pc":[982,983]},{"teal":1108,"source":"contracts/validatorRegistry.algo.ts:313","pc":[984,985,986]},{"teal":1113,"source":"contracts/validatorRegistry.algo.ts:315","pc":[987,988]},{"teal":1114,"source":"contracts/validatorRegistry.algo.ts:315","pc":[989,990]},{"teal":1115,"source":"contracts/validatorRegistry.algo.ts:315","pc":[991,992]},{"teal":1116,"source":"contracts/validatorRegistry.algo.ts:315","pc":[993]},{"teal":1119,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[994]},{"teal":1122,"source":"contracts/validatorRegistry.algo.ts:315","pc":[995,996]},{"teal":1123,"source":"contracts/validatorRegistry.algo.ts:315","pc":[997,998]},{"teal":1124,"source":"contracts/validatorRegistry.algo.ts:315","pc":[999,1000,1001]},{"teal":1125,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1002,1003,1004]},{"teal":1126,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1005]},{"teal":1127,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1006]},{"teal":1130,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1007]},{"teal":1134,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1008,1009]},{"teal":1135,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1010,1011]},{"teal":1136,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1012,1013,1014,1015,1016]},{"teal":1137,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1017]},{"teal":1140,"source":"contracts/validatorRegistry.algo.ts:317","errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1018]},{"teal":1144,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1019,1020]},{"teal":1145,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1021]},{"teal":1146,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1022]},{"teal":1147,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1023]},{"teal":1148,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1024,1025]},{"teal":1152,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1026,1027]},{"teal":1153,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1028,1029]},{"teal":1154,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1030]},{"teal":1158,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1031]},{"teal":1159,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1032,1033]},{"teal":1160,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1034]},{"teal":1161,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1035]},{"teal":1162,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1036,1037,1038]},{"teal":1163,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1039]},{"teal":1164,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1040]},{"teal":1168,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1041]},{"teal":1169,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1042,1043]},{"teal":1170,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1044]},{"teal":1171,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1045,1046]},{"teal":1172,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1047]},{"teal":1173,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1048]},{"teal":1174,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1049,1050]},{"teal":1175,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1051]},{"teal":1179,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1052]},{"teal":1180,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1053,1054]},{"teal":1181,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1055]},{"teal":1182,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1056]},{"teal":1183,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1057,1058]},{"teal":1184,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1059]},{"teal":1185,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1060]},{"teal":1186,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1061,1062]},{"teal":1187,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1063]},{"teal":1192,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1064,1065]},{"teal":1193,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1066,1067,1068]},{"teal":1194,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1069]},{"teal":1195,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1070]},{"teal":1196,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1071]},{"teal":1197,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1072,1073,1074]},{"teal":1202,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1075,1076]},{"teal":1203,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1077,1078,1079]},{"teal":1204,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1080]},{"teal":1205,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1081,1082,1083]},{"teal":1208,"source":"contracts/validatorRegistry.algo.ts:330","errorMessage":"provided NFD must be valid","pc":[1084]},{"teal":1215,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1085,1086]},{"teal":1216,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1087,1088]},{"teal":1217,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1089,1090,1091]},{"teal":1218,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1092]},{"teal":1219,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1093,1094]},{"teal":1220,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1095]},{"teal":1223,"source":"contracts/validatorRegistry.algo.ts:333","errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1096]},{"teal":1224,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1097]},{"teal":1227,"source":"contracts/validatorRegistry.algo.ts:332","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1098]},{"teal":1234,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1099,1100]},{"teal":1235,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1101,1102,1103]},{"teal":1236,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1104]},{"teal":1237,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1105,1106]},{"teal":1238,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1107]},{"teal":1239,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1108]},{"teal":1240,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1109,1110,1111]},{"teal":1241,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1112,1113]},{"teal":1242,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1114,1115,1116]},{"teal":1243,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1117]},{"teal":1244,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1118,1119]},{"teal":1245,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1120]},{"teal":1246,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1121]},{"teal":1249,"source":"contracts/validatorRegistry.algo.ts:337","pc":[1122,1123,1124]},{"teal":1257,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1125,1126]},{"teal":1258,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1127,1128,1129]},{"teal":1259,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1130]},{"teal":1260,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1131,1132,1133]},{"teal":1263,"source":"contracts/validatorRegistry.algo.ts:342","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1134]},{"teal":1268,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1135,1136,1137,1138,1139,1140]},{"teal":1269,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1141,1142]},{"teal":1270,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1143]},{"teal":1271,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1144,1145]},{"teal":1272,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1146,1147,1148]},{"teal":1273,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1149]},{"teal":1274,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1150,1151]},{"teal":1275,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1152,1153,1154]},{"teal":1276,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1155]},{"teal":1277,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1156]},{"teal":1278,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1157]},{"teal":1282,"source":"contracts/validatorRegistry.algo.ts:348","pc":[1158,1159]},{"teal":1285,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1160,1161]},{"teal":1286,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1162]},{"teal":1291,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1163,1164,1165]},{"teal":1292,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1166]},{"teal":1293,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1167]},{"teal":1294,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1168,1169]},{"teal":1295,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1170]},{"teal":1298,"source":"contracts/validatorRegistry.algo.ts:358","errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1171]},{"teal":1301,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1172,1173,1174]},{"teal":1302,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1175]},{"teal":1305,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1176,1177,1178]},{"teal":1306,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1179]},{"teal":1307,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1180]},{"teal":1317,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1181,1182,1183]},{"teal":1321,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1184,1185]},{"teal":1322,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1186,1187,1188]},{"teal":1326,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1189,1190]},{"teal":1327,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1191,1192]},{"teal":1328,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1193]},{"teal":1331,"source":"contracts/validatorRegistry.algo.ts:360","errorMessage":"needs to at least be valid address","pc":[1194]},{"teal":1335,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1195,1196]},{"teal":1336,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1197,1198]},{"teal":1337,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1199]},{"teal":1338,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1200,1201]},{"teal":1339,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1202]},{"teal":1340,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1203]},{"teal":1341,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1204,1205]},{"teal":1342,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1206]},{"teal":1343,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1207]},{"teal":1348,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1208,1209,1210]},{"teal":1349,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1211]},{"teal":1352,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1212,1213,1214]},{"teal":1353,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1215]},{"teal":1356,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1216,1217,1218]},{"teal":1357,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1219]},{"teal":1360,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1220,1221,1222]},{"teal":1361,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1223]},{"teal":1362,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1224]},{"teal":1373,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1225,1226,1227]},{"teal":1377,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1228,1229]},{"teal":1378,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1230,1231,1232]},{"teal":1382,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1233,1234]},{"teal":1383,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1235,1236]},{"teal":1384,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1237]},{"teal":1385,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1238]},{"teal":1386,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1239,1240]},{"teal":1387,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1241]},{"teal":1388,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1242]},{"teal":1389,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1243,1244]},{"teal":1390,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1245]},{"teal":1394,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1246,1247,1248]},{"teal":1395,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1249,1250]},{"teal":1396,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1251]},{"teal":1397,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1252]},{"teal":1398,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1253,1254]},{"teal":1399,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1255]},{"teal":1400,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1256]},{"teal":1401,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1257,1258]},{"teal":1402,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1259]},{"teal":1403,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1260]},{"teal":1408,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1261,1262,1263]},{"teal":1409,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1264,1265,1266]},{"teal":1412,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1267,1268,1269]},{"teal":1413,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1270]},{"teal":1416,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1271,1272,1273]},{"teal":1417,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1274]},{"teal":1420,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1275,1276,1277]},{"teal":1421,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1278]},{"teal":1422,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1279]},{"teal":1433,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1280,1281,1282]},{"teal":1437,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1283,1284]},{"teal":1438,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1285,1286,1287]},{"teal":1442,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1288,1289]},{"teal":1443,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1290,1291,1292]},{"teal":1446,"source":"contracts/validatorRegistry.algo.ts:389","errorMessage":"provided NFD must be valid","pc":[1293]},{"teal":1453,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1294,1295]},{"teal":1454,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1296,1297]},{"teal":1455,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1298,1299]},{"teal":1456,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1300]},{"teal":1459,"source":"contracts/validatorRegistry.algo.ts:392","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1301]},{"teal":1460,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1302]},{"teal":1463,"source":"contracts/validatorRegistry.algo.ts:391","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1303]},{"teal":1467,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1304,1305]},{"teal":1468,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1306,1307]},{"teal":1469,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1308]},{"teal":1470,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1309]},{"teal":1471,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1310,1311]},{"teal":1472,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1312]},{"teal":1473,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1313]},{"teal":1474,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1314,1315]},{"teal":1475,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1316]},{"teal":1476,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1317]},{"teal":1481,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1318,1319,1320]},{"teal":1482,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1321]},{"teal":1483,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1322]},{"teal":1484,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1323,1324]},{"teal":1485,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1325]},{"teal":1488,"source":"contracts/validatorRegistry.algo.ts:402","errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1326]},{"teal":1491,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1327,1328,1329]},{"teal":1492,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1330]},{"teal":1495,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1331,1332,1333]},{"teal":1496,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1334]},{"teal":1497,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1335]},{"teal":1504,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1336,1337,1338]},{"teal":1508,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1339,1340]},{"teal":1509,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1341,1342,1343]},{"teal":1513,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1344,1345]},{"teal":1514,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1346,1347]},{"teal":1515,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1348]},{"teal":1516,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1349]},{"teal":1520,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1350,1351,1352]},{"teal":1521,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1353,1354]},{"teal":1522,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1355]},{"teal":1523,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1356,1357]},{"teal":1524,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1358]},{"teal":1525,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1359]},{"teal":1526,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1360,1361]},{"teal":1527,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1362]},{"teal":1528,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1363]},{"teal":1533,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1364,1365,1366]},{"teal":1534,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1367]},{"teal":1537,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1368,1369,1370]},{"teal":1538,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1371]},{"teal":1541,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1372,1373,1374]},{"teal":1542,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1375]},{"teal":1543,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1376]},{"teal":1544,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1377,1378]},{"teal":1545,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1379]},{"teal":1548,"source":"contracts/validatorRegistry.algo.ts:416","errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1380]},{"teal":1551,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1381,1382,1383]},{"teal":1552,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1384]},{"teal":1553,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1385]},{"teal":1554,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1386,1387]},{"teal":1555,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1388]},{"teal":1558,"source":"contracts/validatorRegistry.algo.ts:415","errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1389]},{"teal":1561,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1390,1391,1392]},{"teal":1562,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1393]},{"teal":1563,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1394]},{"teal":1564,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1395]},{"teal":1565,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1396]},{"teal":1568,"source":"contracts/validatorRegistry.algo.ts:414","errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1397]},{"teal":1569,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1398]},{"teal":1572,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1399,1400,1401]},{"teal":1573,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1402]},{"teal":1576,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1403,1404,1405]},{"teal":1577,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1406]},{"teal":1578,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1407]},{"teal":1585,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1408,1409,1410]},{"teal":1589,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1411,1412]},{"teal":1590,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1413,1414,1415]},{"teal":1597,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1416,1417]},{"teal":1598,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1418]},{"teal":1599,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1419]},{"teal":1600,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1420]},{"teal":1601,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1421,1422,1423]},{"teal":1602,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1424,1425]},{"teal":1603,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1426,1427]},{"teal":1604,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1428]},{"teal":1605,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1429]},{"teal":1609,"source":"contracts/validatorRegistry.algo.ts:422","errorMessage":"invalid Entry gating type","pc":[1430]},{"teal":1614,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1431,1432]},{"teal":1615,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1433]},{"teal":1616,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1434]},{"teal":1617,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1435,1436,1437]},{"teal":1622,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1438,1439]},{"teal":1623,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1440,1441]},{"teal":1624,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1442]},{"teal":1625,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1443]},{"teal":1632,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1444,1445]},{"teal":1633,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1446,1447]},{"teal":1634,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1448]},{"teal":1635,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1449]},{"teal":1636,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1450,1451,1452]},{"teal":1637,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1453,1454]},{"teal":1638,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1455,1456]},{"teal":1639,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1457]},{"teal":1640,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1458]},{"teal":1643,"source":"contracts/validatorRegistry.algo.ts:429","pc":[1459,1460,1461]},{"teal":1648,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1462,1463]},{"teal":1649,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1464,1465,1466]},{"teal":1650,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1467]},{"teal":1651,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1468,1469,1470]},{"teal":1654,"source":"contracts/validatorRegistry.algo.ts:433","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1471]},{"teal":1659,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1472,1473]},{"teal":1660,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1474,1475]},{"teal":1661,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1476]},{"teal":1662,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1477,1478,1479]},{"teal":1663,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1480]},{"teal":1664,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1481,1482]},{"teal":1665,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1483]},{"teal":1666,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1484]},{"teal":1667,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1485,1486]},{"teal":1668,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1487]},{"teal":1672,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1488,1489]},{"teal":1673,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1490,1491]},{"teal":1674,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1492]},{"teal":1675,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1493,1494]},{"teal":1676,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1495]},{"teal":1677,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1496]},{"teal":1678,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1497,1498]},{"teal":1679,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1499]},{"teal":1683,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1500,1501]},{"teal":1684,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1502,1503]},{"teal":1685,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1504]},{"teal":1686,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1505,1506]},{"teal":1687,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1507]},{"teal":1688,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1508]},{"teal":1689,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1509,1510]},{"teal":1690,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1511]},{"teal":1694,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1512,1513]},{"teal":1695,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1514,1515]},{"teal":1696,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1516]},{"teal":1697,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1517]},{"teal":1698,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1518,1519]},{"teal":1699,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1520]},{"teal":1700,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1521]},{"teal":1701,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1522,1523]},{"teal":1702,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1524]},{"teal":1706,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1525,1526,1527]},{"teal":1707,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1528,1529]},{"teal":1708,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1530]},{"teal":1709,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1531]},{"teal":1710,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1532,1533]},{"teal":1711,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1534]},{"teal":1712,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1535]},{"teal":1713,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1536,1537]},{"teal":1714,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1538]},{"teal":1715,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1539]},{"teal":1720,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1540]},{"teal":1723,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1541,1542,1543]},{"teal":1724,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1544]},{"teal":1727,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1545,1546,1547]},{"teal":1728,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1548]},{"teal":1731,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1549,1550]},{"teal":1732,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1551]},{"teal":1733,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1552]},{"teal":1734,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1553]},{"teal":1735,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1554,1555]},{"teal":1736,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1556]},{"teal":1737,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1557]},{"teal":1740,"source":"contracts/validatorRegistry.algo.ts:453","errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1558]},{"teal":1743,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1559,1560,1561]},{"teal":1744,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1562]},{"teal":1745,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1563]},{"teal":1746,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1564]},{"teal":1747,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1565]},{"teal":1760,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1566,1567,1568]},{"teal":1763,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1569]},{"teal":1764,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1570]},{"teal":1768,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1571,1572]},{"teal":1769,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1573,1574,1575]},{"teal":1774,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1576,1577]},{"teal":1775,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1578,1579]},{"teal":1776,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1580,1581]},{"teal":1777,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1582]},{"teal":1780,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1583]},{"teal":1783,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1584,1585]},{"teal":1784,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1586,1587]},{"teal":1785,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1588,1589,1590]},{"teal":1786,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1591,1592,1593]},{"teal":1787,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1594]},{"teal":1788,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1595]},{"teal":1791,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1596]},{"teal":1795,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1597]},{"teal":1796,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1598,1599]},{"teal":1797,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1600]},{"teal":1798,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1601]},{"teal":1799,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1602]},{"teal":1800,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1603]},{"teal":1801,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1604]},{"teal":1804,"source":"contracts/validatorRegistry.algo.ts:459","errorMessage":"specified validator id isn't valid","pc":[1605]},{"teal":1808,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1606,1607]},{"teal":1809,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1608,1609]},{"teal":1810,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1610]},{"teal":1811,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1611,1612]},{"teal":1812,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1613]},{"teal":1813,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1614]},{"teal":1814,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1615,1616]},{"teal":1815,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1617]},{"teal":1816,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1618]},{"teal":1817,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1619,1620]},{"teal":1822,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1621,1622]},{"teal":1823,"source":"contracts/constants.algo.ts:30","pc":[1623]},{"teal":1824,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1624]},{"teal":1825,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1625,1626,1627]},{"teal":1829,"source":"contracts/validatorRegistry.algo.ts:463","errorMessage":"already at max pool size","pc":[1628]},{"teal":1834,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1629,1630]},{"teal":1835,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1631]},{"teal":1836,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1632]},{"teal":1837,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1633,1634]},{"teal":1859,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1635]},{"teal":1860,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1636,1637]},{"teal":1861,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1638,1639]},{"teal":1865,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1640]},{"teal":1866,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1641,1642]},{"teal":1873,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1643,1644]},{"teal":1874,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1645]},{"teal":1875,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1646,1647]},{"teal":1876,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1648]},{"teal":1877,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1649,1650]},{"teal":1878,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1651,1652]},{"teal":1879,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1653,1654]},{"teal":1880,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1655,1656]},{"teal":1881,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1657]},{"teal":1884,"source":"contracts/validatorRegistry.algo.ts:472","errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1658]},{"teal":1885,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1659,1660]},{"teal":1886,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1661]},{"teal":1887,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1662]},{"teal":1888,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1663,1664]},{"teal":1892,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1665,1666,1667]},{"teal":1893,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1668,1669]},{"teal":1897,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1670,1671]},{"teal":1898,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1672,1673]},{"teal":1902,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1674,1675]},{"teal":1903,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1676,1677]},{"teal":1907,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1678,1679]},{"teal":1908,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1680,1681]},{"teal":1919,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1682,1683,1684,1685,1686,1687]},{"teal":1920,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1688,1689]},{"teal":1921,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1690,1691,1692]},{"teal":1922,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1693]},{"teal":1923,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1694,1695]},{"teal":1924,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1696,1697]},{"teal":1925,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1698]},{"teal":1926,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1699,1700]},{"teal":1927,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1701,1702]},{"teal":1928,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1703]},{"teal":1929,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1704,1705]},{"teal":1930,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1706,1707]},{"teal":1931,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1708]},{"teal":1932,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1709]},{"teal":1933,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1710,1711]},{"teal":1934,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1712]},{"teal":1935,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1713]},{"teal":1936,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1714,1715]},{"teal":1937,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1716]},{"teal":1938,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1717]},{"teal":1939,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1718]},{"teal":1940,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1719,1720]},{"teal":1943,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1721]},{"teal":1944,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1722,1723]},{"teal":1947,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1724]},{"teal":1951,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1725,1726]},{"teal":1952,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1727,1728]},{"teal":1953,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1729]},{"teal":1954,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1730,1731,1732]},{"teal":1955,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1733]},{"teal":1956,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1734,1735]},{"teal":1957,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1736]},{"teal":1958,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1737]},{"teal":1959,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1738,1739]},{"teal":1960,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1740]},{"teal":1964,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1741,1742]},{"teal":1965,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1743,1744]},{"teal":1969,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1745,1746]},{"teal":1970,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1747,1748]},{"teal":1971,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1749]},{"teal":1972,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1750]},{"teal":1973,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1751,1752]},{"teal":1974,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1753]},{"teal":1975,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1754]},{"teal":1976,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1755]},{"teal":1977,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1756]},{"teal":1978,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1757,1758]},{"teal":1979,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1759]},{"teal":1980,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1760]},{"teal":1981,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1761,1762]},{"teal":1982,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1763]},{"teal":1983,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1764]},{"teal":1984,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1765,1766]},{"teal":1985,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1767]},{"teal":1989,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1768,1769]},{"teal":1990,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1770,1771]},{"teal":1991,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1772,1773]},{"teal":1992,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1774,1775,1776]},{"teal":2000,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1777,1778,1779,1780,1781,1782]},{"teal":2001,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1783,1784]},{"teal":2002,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1785]},{"teal":2003,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1786,1787]},{"teal":2004,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1788]},{"teal":2005,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1789]},{"teal":2006,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1790]},{"teal":2007,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1791,1792]},{"teal":2008,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1793]},{"teal":2011,"source":"contracts/validatorRegistry.algo.ts:497","errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1794]},{"teal":2012,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1795,1796,1797]},{"teal":2013,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1798]},{"teal":2014,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1799,1800]},{"teal":2015,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1801]},{"teal":2016,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1802]},{"teal":2017,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1803]},{"teal":2018,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1804]},{"teal":2022,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1805,1806]},{"teal":2023,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1807]},{"teal":2024,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1808,1809]},{"teal":2025,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1810]},{"teal":2026,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1811]},{"teal":2027,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1812,1813]},{"teal":2028,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1814]},{"teal":2029,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1815]},{"teal":2032,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1816,1817]},{"teal":2035,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1818,1819]},{"teal":2036,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1820]},{"teal":2041,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1821]},{"teal":2044,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1822,1823,1824]},{"teal":2045,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1825]},{"teal":2048,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1826,1827,1828]},{"teal":2049,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1829]},{"teal":2052,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1830,1831]},{"teal":2053,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1832]},{"teal":2054,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1833]},{"teal":2055,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1834]},{"teal":2056,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1835,1836]},{"teal":2057,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1837]},{"teal":2058,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1838]},{"teal":2061,"source":"contracts/validatorRegistry.algo.ts:513","errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[1839]},{"teal":2064,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1840,1841,1842]},{"teal":2065,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1843]},{"teal":2066,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1844]},{"teal":2067,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1845]},{"teal":2068,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1846]},{"teal":2080,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1847,1848,1849]},{"teal":2083,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1850]},{"teal":2084,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1851,1852]},{"teal":2088,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1853]},{"teal":2089,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1854,1855]},{"teal":2090,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1856]},{"teal":2091,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1857]},{"teal":2092,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1858]},{"teal":2093,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1859]},{"teal":2094,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1860]},{"teal":2097,"source":"contracts/validatorRegistry.algo.ts:514","errorMessage":"specified validator id isn't valid","pc":[1861]},{"teal":2102,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1862,1863]},{"teal":2103,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1864]},{"teal":2104,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1865]},{"teal":2105,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1866,1867]},{"teal":2106,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1868]},{"teal":2107,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1869]},{"teal":2108,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1870,1871]},{"teal":2109,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1872]},{"teal":2110,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1873]},{"teal":2111,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1874]},{"teal":2112,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1875]},{"teal":2113,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1876,1877,1878]},{"teal":2121,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1879,1880]},{"teal":2122,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1881]},{"teal":2123,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1882]},{"teal":2124,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1883,1884]},{"teal":2125,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1885]},{"teal":2126,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1886]},{"teal":2127,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1887,1888]},{"teal":2128,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1889]},{"teal":2129,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1890]},{"teal":2130,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1891,1892]},{"teal":2131,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1893]},{"teal":2134,"source":"contracts/validatorRegistry.algo.ts:519","errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[1894]},{"teal":2139,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1895,1896]},{"teal":2140,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1897,1898]},{"teal":2148,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1899,1900]},{"teal":2149,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1901,1902]},{"teal":2150,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1903,1904]},{"teal":2151,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1905]},{"teal":2154,"source":"contracts/validatorRegistry.algo.ts:530","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[1906]},{"teal":2157,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1907,1908]},{"teal":2158,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1909,1910]},{"teal":2159,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1911,1912]},{"teal":2160,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1913]},{"teal":2163,"source":"contracts/validatorRegistry.algo.ts:531","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1914]},{"teal":2167,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1915,1916]},{"teal":2168,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1917,1918]},{"teal":2169,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1919,1920,1921]},{"teal":2173,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1922,1923]},{"teal":2174,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1924,1925]},{"teal":2175,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1926,1927]},{"teal":2179,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1928]},{"teal":2180,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1929,1930]},{"teal":2185,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1931,1932]},{"teal":2186,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1933,1934,1935]},{"teal":2187,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1936,1937,1938]},{"teal":2192,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1939,1940,1941]},{"teal":2193,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1942,1943,1944]},{"teal":2194,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1945]},{"teal":2195,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1946,1947]},{"teal":2199,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1948,1949]},{"teal":2200,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1950,1951]},{"teal":2201,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1952]},{"teal":2202,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1953,1954]},{"teal":2206,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1955]},{"teal":2207,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1956,1957]},{"teal":2208,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1958]},{"teal":2209,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1959,1960,1961]},{"teal":2210,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1962]},{"teal":2211,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1963]},{"teal":2219,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1964,1965]},{"teal":2220,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1966]},{"teal":2221,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1967]},{"teal":2222,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1968,1969]},{"teal":2223,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1970]},{"teal":2224,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1971]},{"teal":2225,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1972,1973]},{"teal":2226,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1974]},{"teal":2227,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1975]},{"teal":2228,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1976,1977]},{"teal":2229,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1978]},{"teal":2230,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1979,1980,1981]},{"teal":2231,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1982]},{"teal":2234,"source":"contracts/validatorRegistry.algo.ts:551","errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[1983]},{"teal":2238,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1984,1985]},{"teal":2239,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1986,1987]},{"teal":2240,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1988,1989]},{"teal":2241,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1990,1991,1992]},{"teal":2242,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1993,1994]},{"teal":2248,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1995,1996]},{"teal":2249,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1997,1998]},{"teal":2250,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1999,2000]},{"teal":2251,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2001,2002]},{"teal":2252,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2003]},{"teal":2253,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2004,2005]},{"teal":2257,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2006,2007]},{"teal":2258,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2008,2009]},{"teal":2259,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2010,2011]},{"teal":2260,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2012,2013,2014]},{"teal":2261,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2015]},{"teal":2262,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2016,2017]},{"teal":2267,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2018,2019]},{"teal":2268,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2020,2021]},{"teal":2269,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2022,2023]},{"teal":2270,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2024,2025,2026]},{"teal":2271,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2027]},{"teal":2272,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2028]},{"teal":2273,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2029]},{"teal":2274,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2030,2031,2032]},{"teal":2278,"source":"contracts/validatorRegistry.algo.ts:563","errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2033]},{"teal":2283,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2034,2035]},{"teal":2284,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2036,2037]},{"teal":2285,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2038,2039]},{"teal":2286,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2040,2041,2042]},{"teal":2287,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2043,2044]},{"teal":2288,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2045,2046,2047]},{"teal":2298,"source":"contracts/validatorRegistry.algo.ts:575","pc":[2048,2049]},{"teal":2299,"source":"contracts/validatorRegistry.algo.ts:574","pc":[2050,2051]},{"teal":2300,"source":"contracts/validatorRegistry.algo.ts:573","pc":[2052,2053]},{"teal":2301,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2054,2055]},{"teal":2302,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2056,2057]},{"teal":2303,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2058,2059]},{"teal":2304,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2060,2061,2062]},{"teal":2305,"source":"contracts/validatorRegistry.algo.ts:571","pc":[2063,2064]},{"teal":2306,"source":"contracts/validatorRegistry.algo.ts:570","pc":[2065,2066,2067]},{"teal":2316,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2068,2069,2070,2071,2072,2073]},{"teal":2317,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2074,2075]},{"teal":2318,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2076]},{"teal":2319,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2077,2078]},{"teal":2320,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2079,2080]},{"teal":2321,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2081,2082]},{"teal":2322,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2083,2084,2085]},{"teal":2323,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2086]},{"teal":2324,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2087]},{"teal":2325,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2088]},{"teal":2326,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2089]},{"teal":2327,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2090,2091]},{"teal":2328,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2092]},{"teal":2331,"source":"contracts/validatorRegistry.algo.ts:579","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2093]},{"teal":2332,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2094,2095,2096]},{"teal":2333,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2097]},{"teal":2334,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2098,2099]},{"teal":2335,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2100,2101]},{"teal":2336,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2102,2103]},{"teal":2337,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2104,2105,2106]},{"teal":2338,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2107]},{"teal":2339,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2108]},{"teal":2340,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2109]},{"teal":2341,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2110,2111]},{"teal":2342,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2112]},{"teal":2343,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2113,2114]},{"teal":2344,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2115]},{"teal":2345,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2116]},{"teal":2346,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2117]},{"teal":2347,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2118]},{"teal":2351,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2119,2120]},{"teal":2352,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2121,2122]},{"teal":2353,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2123,2124]},{"teal":2354,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2125,2126,2127]},{"teal":2357,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2128,2129]},{"teal":2360,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2130,2131]},{"teal":2361,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2132]},{"teal":2366,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2133]},{"teal":2369,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2134,2135,2136]},{"teal":2370,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2137]},{"teal":2373,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2138,2139,2140]},{"teal":2374,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2141]},{"teal":2375,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2142]},{"teal":2376,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2143]},{"teal":2377,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2144]},{"teal":2395,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2145,2146,2147]},{"teal":2398,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2148]},{"teal":2399,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2149,2150]},{"teal":2403,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2151,2152]},{"teal":2404,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2153]},{"teal":2405,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2154]},{"teal":2406,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2155,2156]},{"teal":2407,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2157]},{"teal":2408,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2158]},{"teal":2409,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2159,2160]},{"teal":2410,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2161]},{"teal":2411,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2162]},{"teal":2412,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2163,2164]},{"teal":2416,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2165,2166]},{"teal":2417,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2167]},{"teal":2418,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2168]},{"teal":2419,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2169]},{"teal":2424,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2170,2171]},{"teal":2425,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2172,2173]},{"teal":2426,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2174,2175]},{"teal":2427,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2176]},{"teal":2428,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2177]},{"teal":2429,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2178,2179,2180]},{"teal":2434,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2181,2182]},{"teal":2435,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2183,2184]},{"teal":2436,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2185]},{"teal":2437,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2186,2187]},{"teal":2438,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2188]},{"teal":2439,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2189]},{"teal":2440,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2190,2191]},{"teal":2441,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2192]},{"teal":2442,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2193,2194,2195]},{"teal":2447,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2196,2197]},{"teal":2448,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2198,2199]},{"teal":2452,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2200,2201]},{"teal":2453,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2202]},{"teal":2454,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2203]},{"teal":2455,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2204,2205]},{"teal":2456,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2206]},{"teal":2457,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2207]},{"teal":2458,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2208,2209]},{"teal":2459,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2210]},{"teal":2460,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2211]},{"teal":2461,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2212,2213]},{"teal":2466,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2214,2215]},{"teal":2467,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2216]},{"teal":2468,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2217]},{"teal":2469,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2218,2219,2220]},{"teal":2475,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2221,2222]},{"teal":2476,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234]},{"teal":2477,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2235]},{"teal":2480,"source":"contracts/validatorRegistry.algo.ts:619","errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2236]},{"teal":2481,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2237,2238]},{"teal":2482,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2239]},{"teal":2483,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2240,2241,2242]},{"teal":2488,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2243,2244]},{"teal":2489,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2245,2246]},{"teal":2490,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2247]},{"teal":2491,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2248,2249]},{"teal":2492,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2250]},{"teal":2493,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2251]},{"teal":2494,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2252,2253]},{"teal":2495,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2254]},{"teal":2496,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2255,2256,2257]},{"teal":2501,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2258,2259,2260]},{"teal":2502,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2261,2262]},{"teal":2503,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2263]},{"teal":2504,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2264,2265]},{"teal":2505,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2266]},{"teal":2506,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2267]},{"teal":2507,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2268,2269]},{"teal":2508,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2270]},{"teal":2509,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2271]},{"teal":2510,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2272,2273]},{"teal":2514,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2274,2275]},{"teal":2515,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2276,2277]},{"teal":2516,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2278,2279]},{"teal":2517,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2280]},{"teal":2518,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2281]},{"teal":2519,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2282,2283]},{"teal":2524,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2284,2285]},{"teal":2525,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2286,2287]},{"teal":2526,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2288,2289]},{"teal":2527,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2290]},{"teal":2528,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2291]},{"teal":2529,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2292,2293]},{"teal":2530,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2294]},{"teal":2531,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2295,2296,2297]},{"teal":2536,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2298,2299]},{"teal":2537,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2300,2301]},{"teal":2538,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2302]},{"teal":2539,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2303,2304]},{"teal":2540,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2305]},{"teal":2541,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2306]},{"teal":2542,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2307,2308]},{"teal":2543,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2309]},{"teal":2544,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2310,2311,2312]},{"teal":2551,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2313,2314]},{"teal":2552,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2315,2316]},{"teal":2553,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2317]},{"teal":2554,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2318]},{"teal":2555,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2319,2320]},{"teal":2556,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2321]},{"teal":2557,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2322]},{"teal":2558,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2323,2324]},{"teal":2559,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2325]},{"teal":2563,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2326,2327]},{"teal":2564,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2328,2329]},{"teal":2565,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2330]},{"teal":2566,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2331,2332]},{"teal":2567,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2333]},{"teal":2568,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2334]},{"teal":2569,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2335,2336]},{"teal":2570,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2337]},{"teal":2571,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2338]},{"teal":2572,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2339,2340]},{"teal":2576,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2341,2342]},{"teal":2577,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2343]},{"teal":2578,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2344]},{"teal":2579,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2345,2346]},{"teal":2580,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2347]},{"teal":2581,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2348]},{"teal":2582,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2349,2350]},{"teal":2583,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2351]},{"teal":2584,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2352]},{"teal":2585,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2353,2354]},{"teal":2589,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2355]},{"teal":2590,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2356,2357]},{"teal":2595,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2358,2359]},{"teal":2596,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2360,2361]},{"teal":2597,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2362]},{"teal":2598,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2363,2364,2365]},{"teal":2605,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2366,2367]},{"teal":2606,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2368,2369]},{"teal":2607,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2370,2371]},{"teal":2608,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2372]},{"teal":2609,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2373]},{"teal":2610,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2374,2375]},{"teal":2611,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2376]},{"teal":2612,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2377]},{"teal":2613,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2378]},{"teal":2614,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2379,2380]},{"teal":2615,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2381]},{"teal":2616,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2382]},{"teal":2617,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2383,2384]},{"teal":2618,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2385]},{"teal":2619,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2386]},{"teal":2620,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2387,2388,2389,2390]},{"teal":2621,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2391]},{"teal":2622,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2392]},{"teal":2623,"source":"contracts/validatorRegistry.algo.ts:640","pc":[2393,2394]},{"teal":2624,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2395]},{"teal":2625,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2396]},{"teal":2626,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2397]},{"teal":2627,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2398]},{"teal":2628,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2399]},{"teal":2631,"source":"contracts/validatorRegistry.algo.ts:638","errorMessage":"wideRatio failed","pc":[2400]},{"teal":2632,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2401,2402]},{"teal":2636,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2403,2404]},{"teal":2637,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2405,2406]},{"teal":2638,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2407]},{"teal":2639,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2408]},{"teal":2640,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2409]},{"teal":2641,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2410,2411]},{"teal":2642,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2412]},{"teal":2643,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2413]},{"teal":2644,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2414,2415]},{"teal":2645,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2416]},{"teal":2646,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2417]},{"teal":2647,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2418,2419]},{"teal":2648,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2420]},{"teal":2653,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2421,2422]},{"teal":2654,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2423]},{"teal":2655,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2424]},{"teal":2656,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2425,2426]},{"teal":2657,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2427,2428,2429]},{"teal":2662,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2430,2431]},{"teal":2663,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2432,2433]},{"teal":2664,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2434]},{"teal":2665,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2435,2436]},{"teal":2666,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2437]},{"teal":2667,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2438]},{"teal":2668,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2439,2440]},{"teal":2669,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2441]},{"teal":2673,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2442,2443]},{"teal":2676,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2444,2445]},{"teal":2677,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2446]},{"teal":2682,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2447,2448,2449]},{"teal":2683,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2450]},{"teal":2686,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2451,2452,2453]},{"teal":2687,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2454]},{"teal":2690,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2455,2456,2457]},{"teal":2691,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2458]},{"teal":2694,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2459,2460,2461]},{"teal":2695,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2462]},{"teal":2698,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2463,2464,2465]},{"teal":2699,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2466]},{"teal":2700,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2467]},{"teal":2701,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2468]},{"teal":2702,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2469]},{"teal":2705,"source":"contracts/validatorRegistry.algo.ts:659","errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2470]},{"teal":2708,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2471,2472,2473]},{"teal":2709,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2474]},{"teal":2710,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2475]},{"teal":2724,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2476,2477,2478]},{"teal":2728,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2479,2480]},{"teal":2729,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2481,2482,2483]},{"teal":2733,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2484,2485]},{"teal":2734,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2486,2487]},{"teal":2735,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2488,2489,2490]},{"teal":2736,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2491]},{"teal":2737,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2492]},{"teal":2738,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2493]},{"teal":2739,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2494,2495]},{"teal":2740,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2496]},{"teal":2741,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2497]},{"teal":2742,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2498,2499]},{"teal":2743,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2500]},{"teal":2744,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2501,2502]},{"teal":2745,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2503,2504]},{"teal":2746,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2505,2506,2507]},{"teal":2747,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2508]},{"teal":2748,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2509]},{"teal":2749,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2510]},{"teal":2750,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2511,2512]},{"teal":2751,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2513]},{"teal":2752,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2514]},{"teal":2753,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2515,2516]},{"teal":2754,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2517]},{"teal":2755,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2518]},{"teal":2756,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2519]},{"teal":2757,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2520,2521]},{"teal":2758,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2522,2523,2524]},{"teal":2759,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2525]},{"teal":2760,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2526]},{"teal":2761,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2527]},{"teal":2762,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2528,2529]},{"teal":2763,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2530]},{"teal":2764,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2531]},{"teal":2765,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2532,2533]},{"teal":2766,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2534]},{"teal":2767,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2535]},{"teal":2768,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2536]},{"teal":2769,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2537,2538]},{"teal":2770,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2539,2540,2541]},{"teal":2771,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2542]},{"teal":2772,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2543]},{"teal":2773,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2544]},{"teal":2774,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2545,2546]},{"teal":2775,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2547]},{"teal":2779,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2548,2549]},{"teal":2780,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2550]},{"teal":2781,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2551]},{"teal":2782,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2552]},{"teal":2783,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2553,2554]},{"teal":2784,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2555,2556,2557]},{"teal":2785,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2558]},{"teal":2786,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2559]},{"teal":2787,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2560]},{"teal":2788,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2561,2562]},{"teal":2789,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2563]},{"teal":2790,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2564]},{"teal":2791,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2565,2566]},{"teal":2792,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2567]},{"teal":2793,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2568]},{"teal":2794,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2569]},{"teal":2795,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2570,2571]},{"teal":2796,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2572,2573,2574]},{"teal":2797,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2575]},{"teal":2798,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2576]},{"teal":2799,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2577]},{"teal":2800,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2578,2579]},{"teal":2801,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2580]},{"teal":2805,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2581,2582]},{"teal":2806,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2583]},{"teal":2807,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2584]},{"teal":2808,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2585]},{"teal":2809,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2586,2587]},{"teal":2810,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2588,2589,2590]},{"teal":2811,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2591]},{"teal":2812,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2592]},{"teal":2813,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2593]},{"teal":2814,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2594,2595]},{"teal":2815,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2596]},{"teal":2816,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2597]},{"teal":2817,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2598,2599]},{"teal":2818,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2600]},{"teal":2819,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2601]},{"teal":2820,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2602]},{"teal":2821,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2603,2604]},{"teal":2822,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2605,2606,2607]},{"teal":2823,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2608]},{"teal":2824,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2609]},{"teal":2825,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2610]},{"teal":2826,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2611,2612]},{"teal":2827,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2613]},{"teal":2831,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2614,2615]},{"teal":2832,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2616]},{"teal":2833,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2617,2618]},{"teal":2834,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2619]},{"teal":2835,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2620,2621]},{"teal":2836,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2622]},{"teal":2837,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2623]},{"teal":2841,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2624,2625]},{"teal":2842,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2626,2627,2628]},{"teal":2843,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2629]},{"teal":2844,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2630,2631,2632]},{"teal":2856,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2633,2634,2635,2636,2637,2638]},{"teal":2857,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2639,2640]},{"teal":2858,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2641,2642,2643]},{"teal":2859,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2644]},{"teal":2860,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2645]},{"teal":2861,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2646,2647]},{"teal":2862,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2648,2649,2650]},{"teal":2863,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2651]},{"teal":2864,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2652]},{"teal":2865,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2653]},{"teal":2866,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2654]},{"teal":2867,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2655,2656]},{"teal":2868,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2657]},{"teal":2871,"source":"contracts/validatorRegistry.algo.ts:679","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2658]},{"teal":2872,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2659,2660,2661]},{"teal":2873,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2662]},{"teal":2874,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2663,2664]},{"teal":2875,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2665,2666,2667]},{"teal":2876,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2668]},{"teal":2877,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2669]},{"teal":2878,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2670]},{"teal":2879,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2671,2672]},{"teal":2880,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2673]},{"teal":2881,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2674]},{"teal":2882,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2675,2676]},{"teal":2883,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2677]},{"teal":2884,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2678]},{"teal":2885,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2679,2680]},{"teal":2886,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2681]},{"teal":2887,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2682]},{"teal":2888,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2683,2684]},{"teal":2889,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2685]},{"teal":2890,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2686]},{"teal":2891,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2687]},{"teal":2892,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2688]},{"teal":2893,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2689]},{"teal":2898,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2690,2691,2692]},{"teal":2899,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2693]},{"teal":2900,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2694]},{"teal":2901,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2695]},{"teal":2902,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2696]},{"teal":2905,"source":"contracts/validatorRegistry.algo.ts:705","errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2697]},{"teal":2906,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2698]},{"teal":2907,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2699]},{"teal":2910,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2700,2701,2702]},{"teal":2911,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2703]},{"teal":2914,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2704,2705,2706]},{"teal":2915,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2707]},{"teal":2918,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2708,2709,2710]},{"teal":2919,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2711]},{"teal":2920,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2712]},{"teal":2921,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2713,2714]},{"teal":2922,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2715]},{"teal":2925,"source":"contracts/validatorRegistry.algo.ts:702","errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2716]},{"teal":2928,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2717,2718,2719]},{"teal":2929,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2720]},{"teal":2930,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2721]},{"teal":2931,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2722]},{"teal":2932,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2723]},{"teal":2935,"source":"contracts/validatorRegistry.algo.ts:701","errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2724]},{"teal":2938,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2725,2726,2727]},{"teal":2939,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2728]},{"teal":2940,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2729]},{"teal":2955,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2730,2731,2732]},{"teal":2958,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2733]},{"teal":2959,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2734,2735]},{"teal":2964,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2736,2737]},{"teal":2965,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2738,2739]},{"teal":2966,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2740]},{"teal":2967,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2741,2742,2743]},{"teal":2972,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2744]},{"teal":2973,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2745,2746]},{"teal":2974,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2747,2748]},{"teal":2975,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2749]},{"teal":2976,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2750,2751]},{"teal":2977,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2752,2753]},{"teal":2978,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2754]},{"teal":2979,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2755,2756]},{"teal":2980,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2757,2758]},{"teal":2981,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2759,2760]},{"teal":2982,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2761,2762]},{"teal":2983,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2763]},{"teal":2988,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2764,2765]},{"teal":2989,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2766,2767,2768]},{"teal":2993,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2769,2770]},{"teal":2994,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2771]},{"teal":2995,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2772]},{"teal":2996,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2773]},{"teal":2997,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2774,2775,2776]},{"teal":2998,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2777,2778]},{"teal":2999,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2779]},{"teal":3000,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2780]},{"teal":3001,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2781]},{"teal":3005,"source":"contracts/validatorRegistry.algo.ts:714","errorMessage":"should only be called if algo or reward was removed","pc":[2782]},{"teal":3009,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2783,2784]},{"teal":3010,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2785,2786]},{"teal":3011,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2787,2788,2789]},{"teal":3012,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2790]},{"teal":3013,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2791]},{"teal":3014,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2792]},{"teal":3015,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2793,2794]},{"teal":3016,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2795]},{"teal":3017,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2796]},{"teal":3018,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2797,2798]},{"teal":3019,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2799]},{"teal":3020,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2800,2801]},{"teal":3021,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2802,2803]},{"teal":3022,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2804,2805,2806]},{"teal":3023,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2807]},{"teal":3024,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2808]},{"teal":3025,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2809]},{"teal":3026,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2810,2811]},{"teal":3027,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2812]},{"teal":3028,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2813]},{"teal":3029,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2814,2815]},{"teal":3030,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2816]},{"teal":3031,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2817]},{"teal":3032,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2818]},{"teal":3033,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2819,2820]},{"teal":3034,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2821,2822,2823]},{"teal":3035,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2824]},{"teal":3036,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2825]},{"teal":3037,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2826]},{"teal":3038,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2827,2828]},{"teal":3039,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2829]},{"teal":3040,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2830]},{"teal":3041,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2831,2832]},{"teal":3042,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2833]},{"teal":3043,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2834]},{"teal":3044,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2835]},{"teal":3045,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2836,2837]},{"teal":3046,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2838,2839,2840]},{"teal":3047,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2841]},{"teal":3048,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2842]},{"teal":3049,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2843]},{"teal":3050,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2844,2845]},{"teal":3051,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2846]},{"teal":3055,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2847,2848]},{"teal":3056,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2849]},{"teal":3057,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2850]},{"teal":3058,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2851]},{"teal":3059,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2852,2853]},{"teal":3060,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2854,2855,2856]},{"teal":3061,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2857]},{"teal":3062,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2858]},{"teal":3063,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2859]},{"teal":3064,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2860,2861]},{"teal":3065,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2862]},{"teal":3066,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2863]},{"teal":3067,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2864,2865]},{"teal":3068,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2866]},{"teal":3069,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2867]},{"teal":3070,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2868]},{"teal":3071,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2869,2870]},{"teal":3072,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2871,2872,2873]},{"teal":3073,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2874]},{"teal":3074,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2875]},{"teal":3075,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2876]},{"teal":3076,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2877,2878]},{"teal":3077,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2879]},{"teal":3081,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2880,2881]},{"teal":3082,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2882]},{"teal":3083,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2883,2884]},{"teal":3084,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2885]},{"teal":3085,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2886,2887]},{"teal":3086,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2888]},{"teal":3087,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2889]},{"teal":3092,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2890,2891]},{"teal":3093,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2892]},{"teal":3094,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2893]},{"teal":3095,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2894,2895,2896]},{"teal":3100,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2897,2898]},{"teal":3101,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2899]},{"teal":3102,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2900]},{"teal":3103,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2901,2902]},{"teal":3104,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2903,2904,2905]},{"teal":3105,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2906]},{"teal":3106,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2907]},{"teal":3107,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2908]},{"teal":3108,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2909,2910]},{"teal":3109,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2911]},{"teal":3110,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2912]},{"teal":3111,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2913,2914]},{"teal":3115,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2915,2916]},{"teal":3116,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2917]},{"teal":3117,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2918]},{"teal":3120,"source":"contracts/validatorRegistry.algo.ts:723","errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[2919]},{"teal":3127,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2920,2921]},{"teal":3128,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2922]},{"teal":3129,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2923]},{"teal":3130,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2924,2925]},{"teal":3131,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2926,2927,2928]},{"teal":3132,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2929]},{"teal":3133,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2930]},{"teal":3134,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2931]},{"teal":3135,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2932,2933]},{"teal":3136,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2934]},{"teal":3137,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2935]},{"teal":3138,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2936,2937]},{"teal":3139,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2938]},{"teal":3142,"source":"contracts/validatorRegistry.algo.ts:724","errorMessage":"reward being removed must be covered by hold back amount","pc":[2939]},{"teal":3146,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2940,2941]},{"teal":3147,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2942]},{"teal":3148,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2943]},{"teal":3149,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2944]},{"teal":3150,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2945,2946]},{"teal":3151,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2947,2948,2949]},{"teal":3152,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2950]},{"teal":3153,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2951]},{"teal":3154,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2952]},{"teal":3155,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2953,2954]},{"teal":3156,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2955]},{"teal":3157,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2956]},{"teal":3158,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2957,2958]},{"teal":3159,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2959]},{"teal":3160,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2960]},{"teal":3161,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2961]},{"teal":3162,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2962,2963]},{"teal":3163,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2964,2965,2966]},{"teal":3164,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2967]},{"teal":3165,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2968]},{"teal":3166,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2969]},{"teal":3167,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2970,2971]},{"teal":3168,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2972]},{"teal":3173,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2973,2974]},{"teal":3174,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2975,2976,2977]},{"teal":3175,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2978]},{"teal":3176,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2979]},{"teal":3177,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2980]},{"teal":3178,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2981,2982,2983]},{"teal":3186,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2984]},{"teal":3187,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2985,2986]},{"teal":3188,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2987,2988]},{"teal":3189,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2989,2990]},{"teal":3190,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2991,2992]},{"teal":3194,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2993,2994]},{"teal":3195,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2995]},{"teal":3196,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2996]},{"teal":3197,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2997,2998]},{"teal":3198,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2999,3000,3001]},{"teal":3199,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3002]},{"teal":3200,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3003]},{"teal":3201,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3004]},{"teal":3202,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3005,3006]},{"teal":3203,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3007]},{"teal":3204,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3008]},{"teal":3205,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3009,3010]},{"teal":3209,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3011,3012]},{"teal":3210,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3013,3014]},{"teal":3211,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3015,3016]},{"teal":3212,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3017]},{"teal":3213,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3018,3019]},{"teal":3214,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3020,3021]},{"teal":3215,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3022]},{"teal":3216,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3023,3024]},{"teal":3219,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3025]},{"teal":3220,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3026,3027]},{"teal":3223,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3028]},{"teal":3236,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3029,3030]},{"teal":3237,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3031,3032]},{"teal":3238,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3033,3034,3035]},{"teal":3239,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3036]},{"teal":3240,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3037]},{"teal":3241,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3038,3039]},{"teal":3242,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3040,3041,3042]},{"teal":3243,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3043]},{"teal":3244,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3044]},{"teal":3245,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3045]},{"teal":3246,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3046]},{"teal":3247,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3047,3048]},{"teal":3248,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3049]},{"teal":3251,"source":"contracts/validatorRegistry.algo.ts:743","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3050]},{"teal":3252,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3051,3052,3053]},{"teal":3253,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3054]},{"teal":3254,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3055,3056]},{"teal":3255,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3057,3058,3059]},{"teal":3256,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3060]},{"teal":3257,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3061]},{"teal":3258,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3062]},{"teal":3259,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3063,3064]},{"teal":3260,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3065]},{"teal":3261,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3066,3067]},{"teal":3262,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3068]},{"teal":3263,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3069]},{"teal":3264,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3070,3071]},{"teal":3265,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3072]},{"teal":3266,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3073]},{"teal":3267,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3074,3075]},{"teal":3268,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3076]},{"teal":3269,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3077]},{"teal":3270,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3078]},{"teal":3271,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3079]},{"teal":3272,"source":"contracts/validatorRegistry.algo.ts:721","pc":[3080,3081,3082]},{"teal":3286,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3083,3084]},{"teal":3287,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3085,3086]},{"teal":3288,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3087,3088,3089]},{"teal":3289,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3090]},{"teal":3290,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3091]},{"teal":3291,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3092,3093]},{"teal":3292,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3094,3095,3096]},{"teal":3293,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3097]},{"teal":3294,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3098]},{"teal":3295,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3099]},{"teal":3296,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3100]},{"teal":3297,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3101,3102]},{"teal":3298,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3103]},{"teal":3301,"source":"contracts/validatorRegistry.algo.ts:753","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3104]},{"teal":3302,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3105,3106,3107]},{"teal":3303,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3108]},{"teal":3304,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3109,3110]},{"teal":3305,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3111,3112,3113]},{"teal":3306,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3114]},{"teal":3307,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3115]},{"teal":3308,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3116]},{"teal":3309,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3117,3118]},{"teal":3310,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3119]},{"teal":3311,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3120,3121]},{"teal":3312,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3122]},{"teal":3313,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3123]},{"teal":3314,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3124,3125]},{"teal":3315,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3126]},{"teal":3316,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3127,3128]},{"teal":3317,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3129]},{"teal":3318,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3130]},{"teal":3319,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3131]},{"teal":3325,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3132,3133]},{"teal":3326,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3134,3135,3136]},{"teal":3331,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3137,3138]},{"teal":3332,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3139,3140]},{"teal":3333,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3141,3142,3143]},{"teal":3334,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3144]},{"teal":3335,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3145]},{"teal":3336,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3146]},{"teal":3337,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3147,3148]},{"teal":3338,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3149]},{"teal":3339,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3150]},{"teal":3340,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3151]},{"teal":3341,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3152]},{"teal":3342,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3153,3154]},{"teal":3343,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3155,3156]},{"teal":3344,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3157,3158,3159]},{"teal":3345,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3160]},{"teal":3346,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3161]},{"teal":3347,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3162]},{"teal":3348,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3163,3164]},{"teal":3349,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3165]},{"teal":3350,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3166]},{"teal":3351,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3167]},{"teal":3352,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3168]},{"teal":3353,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3169,3170]},{"teal":3354,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3171]},{"teal":3355,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3172,3173]},{"teal":3356,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3174,3175,3176]},{"teal":3357,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3177]},{"teal":3358,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3178]},{"teal":3359,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3179]},{"teal":3360,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3180,3181]},{"teal":3361,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3182]},{"teal":3362,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3183]},{"teal":3363,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3184]},{"teal":3364,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3185]},{"teal":3365,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3186]},{"teal":3366,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3187,3188,3189]},{"teal":3367,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3190]},{"teal":3368,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3191,3192]},{"teal":3369,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3193,3194,3195]},{"teal":3370,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3196]},{"teal":3371,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3197]},{"teal":3372,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3198]},{"teal":3373,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3199,3200]},{"teal":3374,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3201]},{"teal":3382,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3202,3203]},{"teal":3383,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3204,3205,3206]},{"teal":3384,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3207]},{"teal":3385,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3208]},{"teal":3386,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3209,3210]},{"teal":3387,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3211,3212,3213]},{"teal":3388,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3214]},{"teal":3389,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3215]},{"teal":3390,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3216]},{"teal":3391,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3217,3218]},{"teal":3392,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3219,3220,3221]},{"teal":3393,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3222]},{"teal":3394,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3223]},{"teal":3395,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3224]},{"teal":3396,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3225,3226]},{"teal":3397,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3227,3228,3229]},{"teal":3398,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3230,3231]},{"teal":3402,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3232,3233]},{"teal":3403,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3234,3235]},{"teal":3404,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3236,3237]},{"teal":3405,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3238]},{"teal":3406,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3239]},{"teal":3407,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3240,3241]},{"teal":3411,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3242,3243]},{"teal":3412,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3244,3245]},{"teal":3413,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3246,3247]},{"teal":3414,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3248]},{"teal":3415,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3249]},{"teal":3416,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3250,3251]},{"teal":3421,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3252,3253]},{"teal":3422,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3254,3255,3256]},{"teal":3427,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3257,3258]},{"teal":3428,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3259]},{"teal":3429,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3260]},{"teal":3430,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3261]},{"teal":3431,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3262,3263]},{"teal":3432,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3264,3265,3266]},{"teal":3433,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3267]},{"teal":3434,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3268]},{"teal":3435,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3269]},{"teal":3436,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3270,3271]},{"teal":3437,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3272]},{"teal":3438,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3273]},{"teal":3439,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3274]},{"teal":3440,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3275]},{"teal":3441,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3276]},{"teal":3442,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3277]},{"teal":3443,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3278,3279]},{"teal":3444,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3280,3281,3282]},{"teal":3445,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3283]},{"teal":3446,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3284]},{"teal":3447,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3285]},{"teal":3448,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3286,3287]},{"teal":3449,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3288]},{"teal":3455,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3289,3290]},{"teal":3456,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3291,3292,3293]},{"teal":3461,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3294,3295]},{"teal":3462,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3296]},{"teal":3463,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3297]},{"teal":3464,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3298]},{"teal":3465,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3299,3300]},{"teal":3466,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3301]},{"teal":3467,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3302]},{"teal":3472,"source":"contracts/validatorRegistry.algo.ts:700","pc":[3303]},{"teal":3477,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3304]},{"teal":3480,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3305,3306,3307]},{"teal":3481,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3308]},{"teal":3484,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3309,3310,3311]},{"teal":3485,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3312]},{"teal":3486,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3313]},{"teal":3487,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3314,3315]},{"teal":3488,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3316]},{"teal":3491,"source":"contracts/validatorRegistry.algo.ts:799","errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3317]},{"teal":3494,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3318,3319,3320]},{"teal":3495,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3321]},{"teal":3498,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3322,3323,3324]},{"teal":3499,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3325]},{"teal":3500,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3326]},{"teal":3501,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3327]},{"teal":3502,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3328]},{"teal":3516,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3329,3330,3331]},{"teal":3519,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3332]},{"teal":3520,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3333,3334]},{"teal":3524,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3335]},{"teal":3525,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3336,3337]},{"teal":3529,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3338]},{"teal":3530,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3339,3340]},{"teal":3534,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3341,3342]},{"teal":3535,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3343,3344,3345]},{"teal":3536,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3346,3347]},{"teal":3541,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3348]},{"teal":3542,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3349,3350]},{"teal":3543,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3351]},{"teal":3544,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3352]},{"teal":3545,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3353]},{"teal":3546,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3354]},{"teal":3547,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3355,3356,3357]},{"teal":3552,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3358]},{"teal":3553,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3359,3360]},{"teal":3554,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3361]},{"teal":3555,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3362]},{"teal":3558,"source":"contracts/validatorRegistry.algo.ts:815","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3363]},{"teal":3559,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3364,3365]},{"teal":3563,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3366,3367]},{"teal":3564,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3368]},{"teal":3565,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3369]},{"teal":3566,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3370]},{"teal":3570,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3371]},{"teal":3571,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3372,3373]},{"teal":3576,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3374,3375]},{"teal":3577,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3376,3377]},{"teal":3578,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3378]},{"teal":3579,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3379,3380,3381]},{"teal":3584,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3382,3383]},{"teal":3585,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3384,3385]},{"teal":3586,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3386]},{"teal":3587,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3387,3388,3389]},{"teal":3592,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3390]},{"teal":3593,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3391,3392]},{"teal":3594,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3393,3394]},{"teal":3595,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3395]},{"teal":3596,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3396,3397]},{"teal":3597,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3398,3399]},{"teal":3598,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3400]},{"teal":3599,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3401,3402]},{"teal":3600,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3403,3404]},{"teal":3601,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3405,3406]},{"teal":3602,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3407,3408]},{"teal":3603,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3409]},{"teal":3609,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3410,3411]},{"teal":3610,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3412,3413]},{"teal":3611,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3414]},{"teal":3612,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3415]},{"teal":3613,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3416]},{"teal":3614,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3417]},{"teal":3615,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3418]},{"teal":3616,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3419]},{"teal":3617,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3420]},{"teal":3618,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3421]},{"teal":3619,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3422]},{"teal":3620,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3423,3424,3425]},{"teal":3623,"source":"contracts/validatorRegistry.algo.ts:822","pc":[3426,3427,3428]},{"teal":3628,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3429]},{"teal":3629,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3430,3431]},{"teal":3634,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3432,3433]},{"teal":3635,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3434,3435]},{"teal":3636,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3436]},{"teal":3637,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3437]},{"teal":3638,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3438]},{"teal":3639,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3439]},{"teal":3640,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3440]},{"teal":3641,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3441]},{"teal":3642,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3442]},{"teal":3643,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3443,3444]},{"teal":3644,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3445]},{"teal":3645,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3446,3447,3448]},{"teal":3650,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3449]},{"teal":3651,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3450,3451]},{"teal":3658,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3452,3453]},{"teal":3659,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3454,3455]},{"teal":3660,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3456,3457]},{"teal":3661,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3458]},{"teal":3662,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3459]},{"teal":3663,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3460]},{"teal":3664,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3461]},{"teal":3665,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3462]},{"teal":3666,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3463]},{"teal":3667,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3464]},{"teal":3668,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3465]},{"teal":3669,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3466]},{"teal":3670,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3467,3468]},{"teal":3671,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3469]},{"teal":3672,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3470]},{"teal":3673,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3471,3472]},{"teal":3674,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3473]},{"teal":3675,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3474]},{"teal":3676,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3475]},{"teal":3677,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3476,3477]},{"teal":3678,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3478]},{"teal":3679,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3479]},{"teal":3680,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3480,3481]},{"teal":3681,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3482]},{"teal":3682,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3483]},{"teal":3683,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3484,3485]},{"teal":3684,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3486]},{"teal":3685,"source":"contracts/validatorRegistry.algo.ts:831","pc":[3487,3488]},{"teal":3686,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3489]},{"teal":3687,"source":"contracts/validatorRegistry.algo.ts:828","pc":[3490,3491,3492]},{"teal":3692,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3493,3494]},{"teal":3693,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3495,3496]},{"teal":3694,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3497]},{"teal":3695,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3498]},{"teal":3696,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3499]},{"teal":3697,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3500]},{"teal":3698,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3501,3502]},{"teal":3699,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3503]},{"teal":3700,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3504,3505]},{"teal":3701,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3506]},{"teal":3702,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3507]},{"teal":3703,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3508,3509]},{"teal":3704,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3510]},{"teal":3705,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3511]},{"teal":3706,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3512,3513,3514]},{"teal":3715,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3515,3516]},{"teal":3716,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3517]},{"teal":3717,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3518]},{"teal":3718,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3519,3520]},{"teal":3719,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3521,3522,3523]},{"teal":3729,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3524,3525]},{"teal":3730,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3526,3527]},{"teal":3731,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3528]},{"teal":3732,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3529]},{"teal":3733,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3530,3531]},{"teal":3734,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3532]},{"teal":3735,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3533]},{"teal":3736,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3534,3535]},{"teal":3737,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3536]},{"teal":3738,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3537]},{"teal":3739,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3538]},{"teal":3742,"source":"contracts/validatorRegistry.algo.ts:840","errorMessage":"must stake at least the minimum for this pool","pc":[3539]},{"teal":3746,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3540,3541]},{"teal":3747,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3542,3543]},{"teal":3748,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3544]},{"teal":3749,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3545,3546]},{"teal":3750,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3547]},{"teal":3751,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3548]},{"teal":3752,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3549,3550]},{"teal":3753,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3551]},{"teal":3754,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3552,3553]},{"teal":3758,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3554,3555]},{"teal":3759,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3556,3557]},{"teal":3760,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3558]},{"teal":3761,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3559,3560]},{"teal":3762,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3561]},{"teal":3763,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3562]},{"teal":3764,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3563,3564]},{"teal":3765,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3565]},{"teal":3766,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3566]},{"teal":3767,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3567,3568]},{"teal":3771,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3569]},{"teal":3772,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3570,3571]},{"teal":3777,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3572,3573]},{"teal":3778,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3574,3575]},{"teal":3779,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3576]},{"teal":3780,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3577,3578,3579]},{"teal":3785,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3580,3581]},{"teal":3786,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3582,3583]},{"teal":3787,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3584,3585]},{"teal":3788,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3586]},{"teal":3789,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3587,3588]},{"teal":3790,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3589]},{"teal":3791,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3590]},{"teal":3792,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3591]},{"teal":3793,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3592]},{"teal":3794,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3593,3594]},{"teal":3795,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3595]},{"teal":3796,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3596,3597]},{"teal":3797,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3598]},{"teal":3798,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3599,3600,3601]},{"teal":3807,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3602,3603]},{"teal":3808,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3604]},{"teal":3809,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3605,3606]},{"teal":3810,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3607]},{"teal":3811,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3608]},{"teal":3812,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3609]},{"teal":3813,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3610]},{"teal":3814,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3611,3612]},{"teal":3815,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3613,3614]},{"teal":3816,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3615,3616]},{"teal":3817,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3617]},{"teal":3818,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3618]},{"teal":3819,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3619]},{"teal":3820,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3620]},{"teal":3821,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3621]},{"teal":3822,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3622]},{"teal":3823,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3623]},{"teal":3824,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3624]},{"teal":3825,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3625,3626]},{"teal":3826,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3627]},{"teal":3827,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3628,3629]},{"teal":3828,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3630]},{"teal":3829,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3631]},{"teal":3830,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3632,3633]},{"teal":3831,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3634]},{"teal":3832,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3635]},{"teal":3833,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3636,3637,3638]},{"teal":3840,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3639,3640]},{"teal":3841,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3641]},{"teal":3842,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3642]},{"teal":3843,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3643,3644]},{"teal":3844,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3645,3646,3647]},{"teal":3849,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3648,3649]},{"teal":3850,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3650]},{"teal":3851,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3651,3652]},{"teal":3852,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3653]},{"teal":3853,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3654,3655]},{"teal":3854,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3656]},{"teal":3855,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3657,3658]},{"teal":3856,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3659]},{"teal":3857,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3660,3661]},{"teal":3858,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3662]},{"teal":3859,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3663]},{"teal":3860,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3664,3665]},{"teal":3861,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3666]},{"teal":3862,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3667]},{"teal":3866,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3668,3669]},{"teal":3869,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3670,3671]},{"teal":3870,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3672]},{"teal":3875,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3673,3674,3675]},{"teal":3876,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3676]},{"teal":3879,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3677,3678,3679]},{"teal":3880,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3680]},{"teal":3883,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3681,3682,3683]},{"teal":3884,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3684]},{"teal":3887,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3685,3686,3687]},{"teal":3888,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3688]},{"teal":3889,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3689]},{"teal":3903,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3690,3691,3692]},{"teal":3906,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3693]},{"teal":3907,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3694,3695]},{"teal":3911,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3696,3697]},{"teal":3912,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3698,3699,3700]},{"teal":3916,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3701,3702]},{"teal":3917,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3703,3704]},{"teal":3918,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3705]},{"teal":3919,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3706,3707]},{"teal":3920,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3708]},{"teal":3921,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3709]},{"teal":3922,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3710,3711]},{"teal":3923,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3712]},{"teal":3924,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3713,3714]},{"teal":3928,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3715,3716]},{"teal":3929,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3717]},{"teal":3930,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3718]},{"teal":3931,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3719]},{"teal":3932,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3720,3721,3722]},{"teal":3933,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3723,3724]},{"teal":3934,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3725]},{"teal":3935,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3726]},{"teal":3936,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3727]},{"teal":3940,"source":"contracts/validatorRegistry.algo.ts:876","errorMessage":"node number out of allowable range","pc":[3728]},{"teal":3944,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3729]},{"teal":3945,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3730,3731]},{"teal":3950,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3732,3733]},{"teal":3951,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3734]},{"teal":3952,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3735]},{"teal":3953,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3736,3737,3738]},{"teal":3957,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3739]},{"teal":3958,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3740,3741]},{"teal":3963,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3742,3743]},{"teal":3964,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3744,3745]},{"teal":3965,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3746]},{"teal":3966,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3747,3748,3749]},{"teal":3971,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3750,3751]},{"teal":3972,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3752]},{"teal":3973,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3753,3754]},{"teal":3974,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3755]},{"teal":3975,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3756]},{"teal":3976,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3757]},{"teal":3977,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3758]},{"teal":3978,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3759]},{"teal":3979,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3760,3761]},{"teal":3980,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3762]},{"teal":3981,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3763]},{"teal":3982,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3764]},{"teal":3983,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3765]},{"teal":3984,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3766]},{"teal":3985,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3767]},{"teal":3986,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3768,3769]},{"teal":3987,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3770]},{"teal":3988,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3771,3772,3773]},{"teal":3993,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3774,3775]},{"teal":3994,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3776]},{"teal":3995,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3777]},{"teal":3996,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3778,3779]},{"teal":3997,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3780]},{"teal":4000,"source":"contracts/validatorRegistry.algo.ts:881","errorMessage":"can't move to same node","pc":[3781]},{"teal":4004,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3782,3783]},{"teal":4005,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3784,3785]},{"teal":4006,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3786]},{"teal":4007,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3787]},{"teal":4008,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3788]},{"teal":4009,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3789]},{"teal":4010,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3790]},{"teal":4011,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3791,3792]},{"teal":4012,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3793]},{"teal":4013,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3794]},{"teal":4014,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3795]},{"teal":4015,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3796,3797]},{"teal":4016,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3798]},{"teal":4017,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3799,3800]},{"teal":4018,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3801]},{"teal":4019,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3802]},{"teal":4020,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3803,3804]},{"teal":4021,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3805]},{"teal":4027,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3806]},{"teal":4028,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3807,3808]},{"teal":4029,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3809,3810]},{"teal":4030,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3811,3812,3813,3814,3815,3816]},{"teal":4031,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3817,3818]},{"teal":4035,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3819,3820]},{"teal":4036,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3821,3822]},{"teal":4039,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3823]},{"teal":4040,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3824,3825]},{"teal":4043,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3826]},{"teal":4047,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3827,3828]},{"teal":4048,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3829,3830]},{"teal":4049,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3831,3832]},{"teal":4050,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3833,3834,3835]},{"teal":4054,"source":"contracts/validatorRegistry.algo.ts:892","pc":[3836]},{"teal":4061,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3837,3838]},{"teal":4062,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3839]},{"teal":4063,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3840]},{"teal":4064,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3841,3842]},{"teal":4065,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3843,3844,3845]},{"teal":4072,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3846,3847]},{"teal":4073,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3848]},{"teal":4074,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3849]},{"teal":4075,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3850,3851]},{"teal":4076,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3852,3853,3854]},{"teal":4080,"source":"contracts/validatorRegistry.algo.ts:896","errorMessage":"couldn't find pool app id in nodes to move","pc":[3855]},{"teal":4081,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3856]},{"teal":4086,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3857]},{"teal":4089,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3858,3859,3860]},{"teal":4090,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3861]},{"teal":4091,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3862]},{"teal":4092,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3863,3864]},{"teal":4093,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3865]},{"teal":4096,"source":"contracts/validatorRegistry.algo.ts:910","errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[3866]},{"teal":4099,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3867,3868,3869]},{"teal":4100,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3870]},{"teal":4103,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3871,3872,3873]},{"teal":4104,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3874]},{"teal":4105,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3875]},{"teal":4106,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3876]},{"teal":4107,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3877]},{"teal":4108,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3878]},{"teal":4122,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3879,3880,3881]},{"teal":4125,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3882]},{"teal":4126,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3883,3884]},{"teal":4130,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3885,3886]},{"teal":4131,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3887,3888,3889]},{"teal":4135,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3890,3891]},{"teal":4136,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3892]},{"teal":4137,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3893]},{"teal":4138,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3894,3895]},{"teal":4139,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3896]},{"teal":4140,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3897]},{"teal":4141,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3898,3899]},{"teal":4142,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3900]},{"teal":4143,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3901]},{"teal":4144,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3902,3903]},{"teal":4148,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3904,3905]},{"teal":4149,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3906]},{"teal":4150,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3907]},{"teal":4151,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3908,3909]},{"teal":4152,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3910]},{"teal":4153,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3911]},{"teal":4154,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3912,3913]},{"teal":4155,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3914]},{"teal":4156,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3915]},{"teal":4157,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3916,3917]},{"teal":4161,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3918,3919]},{"teal":4162,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3920]},{"teal":4163,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3921]},{"teal":4166,"source":"contracts/validatorRegistry.algo.ts:914","errorMessage":"this validator doesn't have a reward token defined","pc":[3922]},{"teal":4170,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3923,3924]},{"teal":4171,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3925]},{"teal":4172,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3926]},{"teal":4173,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3927,3928]},{"teal":4174,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3929]},{"teal":4175,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3930]},{"teal":4176,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3931,3932]},{"teal":4177,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3933]},{"teal":4178,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3934]},{"teal":4179,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3935,3936]},{"teal":4184,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3937,3938]},{"teal":4185,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3939,3940]},{"teal":4186,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3941]},{"teal":4187,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3942,3943]},{"teal":4188,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3944,3945]},{"teal":4189,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3946]},{"teal":4190,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3947,3948]},{"teal":4191,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3949]},{"teal":4192,"source":"contracts/validatorRegistry.algo.ts:917","pc":[3950,3951]},{"teal":4199,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3952]},{"teal":4200,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3953,3954]},{"teal":4201,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3955,3956]},{"teal":4202,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3957,3958]},{"teal":4203,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3959,3960]},{"teal":4207,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3961,3962]},{"teal":4208,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3963,3964]},{"teal":4212,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3965,3966]},{"teal":4213,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3967,3968]},{"teal":4214,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3969,3970]},{"teal":4215,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3971]},{"teal":4216,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3972,3973]},{"teal":4217,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3974,3975]},{"teal":4218,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3976]},{"teal":4219,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3977,3978]},{"teal":4222,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3979]},{"teal":4223,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3980,3981]},{"teal":4226,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3982]},{"teal":4233,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3983,3984]},{"teal":4234,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3985,3986]},{"teal":4235,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3987]},{"teal":4236,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3988,3989]},{"teal":4237,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3990,3991]},{"teal":4238,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3992]},{"teal":4239,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3993,3994]},{"teal":4240,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3995]},{"teal":4243,"source":"contracts/validatorRegistry.algo.ts:925","errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[3996]},{"teal":4247,"source":"contracts/validatorRegistry.algo.ts:929","pc":[3997,3998]},{"teal":4250,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3999,4000]},{"teal":4253,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4001,4002]},{"teal":4254,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4003]},{"teal":4258,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4004,4005,4006]},{"teal":4265,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4007,4008]},{"teal":4266,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4009]},{"teal":4267,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4010,4011]},{"teal":4268,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4012]},{"teal":4269,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4013,4014]},{"teal":4270,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4015]},{"teal":4271,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4016]},{"teal":4272,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4017,4018]},{"teal":4273,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4019]},{"teal":4274,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4020]},{"teal":4277,"source":"contracts/validatorRegistry.algo.ts:1022","errorMessage":"can only be called by validator owner","pc":[4021]},{"teal":4278,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4022]},{"teal":4282,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4023,4024,4025]},{"teal":4290,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4026,4027]},{"teal":4291,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4028]},{"teal":4292,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4029,4030]},{"teal":4293,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4031]},{"teal":4294,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4032,4033]},{"teal":4295,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4034]},{"teal":4296,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4035]},{"teal":4297,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4036,4037]},{"teal":4298,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4038]},{"teal":4299,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4039]},{"teal":4300,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4040]},{"teal":4301,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4041,4042,4043]},{"teal":4302,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4044,4045]},{"teal":4303,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4046,4047]},{"teal":4304,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4048,4049]},{"teal":4305,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4050]},{"teal":4306,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4051,4052]},{"teal":4307,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4053]},{"teal":4308,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4054]},{"teal":4309,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4055,4056]},{"teal":4310,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4057]},{"teal":4311,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4058]},{"teal":4312,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4059]},{"teal":4316,"source":"contracts/validatorRegistry.algo.ts:1029","errorMessage":"can only be called by owner or manager of validator","pc":[4060]},{"teal":4317,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4061]},{"teal":4325,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4062,4063,4064]},{"teal":4329,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4065]},{"teal":4330,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4066,4067]},{"teal":4331,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4068,4069,4070]},{"teal":4332,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4071]},{"teal":4333,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4072]},{"teal":4334,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4073]},{"teal":4335,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4074]},{"teal":4336,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4075]},{"teal":4337,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4076]},{"teal":4340,"source":"contracts/validatorRegistry.algo.ts:1042","errorMessage":"the specified validator id isn't valid","pc":[4077]},{"teal":4344,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4078,4079]},{"teal":4345,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4080,4081,4082]},{"teal":4346,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4083]},{"teal":4347,"source":"contracts/constants.algo.ts:30","pc":[4084]},{"teal":4348,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4085]},{"teal":4351,"source":"contracts/validatorRegistry.algo.ts:1043","errorMessage":"pool id not in valid range","pc":[4086]},{"teal":4358,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4087,4088]},{"teal":4359,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4089,4090,4091]},{"teal":4360,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4092]},{"teal":4361,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4093]},{"teal":4362,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4094]},{"teal":4363,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4095]},{"teal":4364,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4096,4097,4098]},{"teal":4365,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4099,4100]},{"teal":4366,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4101,4102,4103]},{"teal":4367,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4104]},{"teal":4368,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4105,4106]},{"teal":4369,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4107,4108]},{"teal":4370,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4109]},{"teal":4371,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4110,4111]},{"teal":4372,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4112,4113,4114]},{"teal":4373,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4115]},{"teal":4374,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4116]},{"teal":4375,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4117]},{"teal":4376,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4118,4119]},{"teal":4377,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4120]},{"teal":4378,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4121]},{"teal":4379,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4122]},{"teal":4380,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4123]},{"teal":4384,"source":"contracts/validatorRegistry.algo.ts:1044","errorMessage":"pool id outside of range of pools created for this validator","pc":[4124]},{"teal":4391,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4125,4126]},{"teal":4392,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4127,4128,4129]},{"teal":4393,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4130]},{"teal":4394,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4131,4132]},{"teal":4395,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4133,4134]},{"teal":4396,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4135,4136,4137]},{"teal":4397,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4138]},{"teal":4398,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4139]},{"teal":4399,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4140]},{"teal":4400,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4141,4142]},{"teal":4401,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4143]},{"teal":4402,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4144]},{"teal":4403,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4145]},{"teal":4404,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4146]},{"teal":4405,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4147]},{"teal":4406,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4148]},{"teal":4407,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4149,4150]},{"teal":4408,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4151,4152,4153]},{"teal":4409,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4154]},{"teal":4410,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4155]},{"teal":4411,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4156]},{"teal":4412,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4157,4158]},{"teal":4413,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4159]},{"teal":4414,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4160]},{"teal":4415,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4161]},{"teal":4418,"source":"contracts/validatorRegistry.algo.ts:1050","errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4162]},{"teal":4422,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4163,4164]},{"teal":4423,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4165,4166]},{"teal":4424,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4167,4168,4169]},{"teal":4425,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4170]},{"teal":4426,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4171,4172]},{"teal":4427,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4173]},{"teal":4428,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4174]},{"teal":4429,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4175]},{"teal":4433,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4176,4177]},{"teal":4434,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4178,4179,4180]},{"teal":4435,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4181]},{"teal":4436,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4182,4183]},{"teal":4437,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4184,4185,4186]},{"teal":4438,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4187]},{"teal":4439,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200]},{"teal":4440,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4201]},{"teal":4443,"source":"contracts/validatorRegistry.algo.ts:1057","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4202]},{"teal":4444,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4203]},{"teal":4445,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4204]},{"teal":4449,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4205,4206]},{"teal":4450,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4207,4208,4209]},{"teal":4451,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4210]},{"teal":4452,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4211,4212]},{"teal":4453,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4213,4214,4215]},{"teal":4454,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4216]},{"teal":4455,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4217,4218,4219,4220,4221,4222,4223,4224]},{"teal":4456,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4225]},{"teal":4459,"source":"contracts/validatorRegistry.algo.ts:1058","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4226]},{"teal":4460,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4227]},{"teal":4461,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4228]},{"teal":4462,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4229]},{"teal":4471,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4230,4231,4232]},{"teal":4474,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4233]},{"teal":4475,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4234]},{"teal":4479,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4235]},{"teal":4480,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4236,4237]},{"teal":4481,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4238]},{"teal":4482,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4239]},{"teal":4483,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4240,4241]},{"teal":4488,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4242,4243]},{"teal":4489,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4244]},{"teal":4490,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4245]},{"teal":4491,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4246,4247]},{"teal":4492,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4248]},{"teal":4493,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4249]},{"teal":4494,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4250,4251]},{"teal":4495,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4252]},{"teal":4496,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4253]},{"teal":4497,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4254]},{"teal":4498,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4255]},{"teal":4499,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4256,4257,4258]},{"teal":4504,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4259,4260]},{"teal":4505,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4261]},{"teal":4506,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4262]},{"teal":4507,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4263,4264]},{"teal":4508,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4265]},{"teal":4509,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4266]},{"teal":4510,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4267,4268]},{"teal":4511,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4269]},{"teal":4512,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4270]},{"teal":4513,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4271,4272]},{"teal":4514,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4273]},{"teal":4517,"source":"contracts/validatorRegistry.algo.ts:1072","errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4274]},{"teal":4518,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4275,4276]},{"teal":4523,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4277]},{"teal":4524,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4278,4279]},{"teal":4525,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4280]},{"teal":4526,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4281,4282]},{"teal":4527,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4283]},{"teal":4528,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4284]},{"teal":4529,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4285,4286]},{"teal":4530,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4287]},{"teal":4531,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4288,4289]},{"teal":4532,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4290]},{"teal":4533,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4291]},{"teal":4534,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4292,4293,4294]},{"teal":4535,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4295,4296]},{"teal":4536,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4297,4298]},{"teal":4537,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4299]},{"teal":4538,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4300,4301]},{"teal":4539,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4302]},{"teal":4540,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4303]},{"teal":4541,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4304,4305]},{"teal":4542,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4306]},{"teal":4543,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4307,4308]},{"teal":4544,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4309]},{"teal":4545,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4310]},{"teal":4548,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4311,4312,4313]},{"teal":4553,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4314,4315]},{"teal":4554,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4316,4317]},{"teal":4555,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4318]},{"teal":4556,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4319,4320]},{"teal":4557,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4321]},{"teal":4558,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4322]},{"teal":4559,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4323,4324]},{"teal":4560,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4325]},{"teal":4565,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4326]},{"teal":4569,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4327,4328,4329]},{"teal":4573,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4330,4331]},{"teal":4574,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4332,4333,4334]},{"teal":4575,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4335,4336]},{"teal":4576,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4337]},{"teal":4577,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4338]},{"teal":4581,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4339,4340]},{"teal":4582,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4341,4342,4343]},{"teal":4583,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4344,4345]},{"teal":4584,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4346]},{"teal":4585,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4347]},{"teal":4589,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4348,4349]},{"teal":4590,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4350,4351]},{"teal":4591,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4352,4353,4354]},{"teal":4592,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4355]},{"teal":4595,"source":"contracts/validatorRegistry.algo.ts:1085","errorMessage":"sender must be owner to add new validator","pc":[4356]},{"teal":4602,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4357,4358]},{"teal":4603,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4359,4360,4361]},{"teal":4604,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4362]},{"teal":4605,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4363]},{"teal":4606,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4364]},{"teal":4607,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4365]},{"teal":4608,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4366,4367,4368]},{"teal":4609,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4369,4370]},{"teal":4610,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4371,4372,4373]},{"teal":4611,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4374]},{"teal":4612,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4375,4376]},{"teal":4613,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4377]},{"teal":4614,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4378]},{"teal":4618,"source":"contracts/validatorRegistry.algo.ts:1087","errorMessage":"gating type not valid","pc":[4379]},{"teal":4625,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4380,4381]},{"teal":4626,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4382,4383,4384]},{"teal":4627,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4385]},{"teal":4628,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4386]},{"teal":4629,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4387]},{"teal":4630,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4388]},{"teal":4631,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4389,4390,4391]},{"teal":4632,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4392,4393]},{"teal":4633,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4394,4395,4396]},{"teal":4634,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4397]},{"teal":4635,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4398,4399]},{"teal":4636,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4400]},{"teal":4637,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4401]},{"teal":4641,"source":"contracts/validatorRegistry.algo.ts:1091","errorMessage":"epoch length not in allowable range","pc":[4402]},{"teal":4648,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4403,4404]},{"teal":4649,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4405,4406,4407]},{"teal":4650,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4408]},{"teal":4651,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4409]},{"teal":4652,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4410]},{"teal":4653,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4411]},{"teal":4654,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4412,4413,4414]},{"teal":4655,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4415,4416]},{"teal":4656,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4417,4418,4419]},{"teal":4657,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4420]},{"teal":4658,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4421,4422]},{"teal":4659,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4423]},{"teal":4660,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4424]},{"teal":4664,"source":"contracts/validatorRegistry.algo.ts:1095","errorMessage":"commission percentage not valid","pc":[4425]},{"teal":4669,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4426,4427]},{"teal":4670,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4428,4429,4430]},{"teal":4671,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4431]},{"teal":4672,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4432]},{"teal":4673,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4433]},{"teal":4674,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4434,4435,4436]},{"teal":4682,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4437,4438]},{"teal":4683,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4439,4440,4441]},{"teal":4684,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4442,4443]},{"teal":4685,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4444]},{"teal":4688,"source":"contracts/validatorRegistry.algo.ts:1100","errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4445]},{"teal":4693,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4446,4447]},{"teal":4694,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4448,4449,4450]},{"teal":4695,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4451]},{"teal":4696,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4452,4453]},{"teal":4697,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4454]},{"teal":4700,"source":"contracts/validatorRegistry.algo.ts:1105","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4455]},{"teal":4707,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4456,4457]},{"teal":4708,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4458,4459,4460]},{"teal":4709,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4461]},{"teal":4710,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4462]},{"teal":4711,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4463]},{"teal":4712,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4464]},{"teal":4713,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4465,4466,4467]},{"teal":4714,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4468,4469]},{"teal":4715,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4470,4471,4472]},{"teal":4716,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4473]},{"teal":4717,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4474,4475]},{"teal":4718,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4476]},{"teal":4719,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4477]},{"teal":4723,"source":"contracts/validatorRegistry.algo.ts:1107","errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4478]},{"teal":4728,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4479,4480]},{"teal":4729,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4481,4482,4483]},{"teal":4730,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4484]},{"teal":4731,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4485]},{"teal":4732,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4486]},{"teal":4733,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4487,4488,4489]},{"teal":4738,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4490,4491]},{"teal":4739,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4492,4493,4494]},{"teal":4740,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4495]},{"teal":4741,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4496,4497]},{"teal":4742,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4498]},{"teal":4745,"source":"contracts/validatorRegistry.algo.ts:1112","errorMessage":"sunsettingOn must be later than now if set","pc":[4499]},{"teal":4748,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4500]},{"teal":4762,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4501,4502,4503]},{"teal":4765,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4504]},{"teal":4766,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4505,4506]},{"teal":4770,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4507,4508]},{"teal":4771,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4509,4510]},{"teal":4772,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4511,4512,4513]},{"teal":4773,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4514]},{"teal":4774,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4515]},{"teal":4775,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4516]},{"teal":4776,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4517,4518]},{"teal":4777,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4519]},{"teal":4778,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4520]},{"teal":4779,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4521]},{"teal":4780,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4522]},{"teal":4781,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4523]},{"teal":4782,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4524]},{"teal":4783,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4525,4526]},{"teal":4784,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4527,4528,4529]},{"teal":4785,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4530]},{"teal":4786,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4531]},{"teal":4787,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4532]},{"teal":4788,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4533,4534]},{"teal":4789,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4535]},{"teal":4790,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4536]},{"teal":4791,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4537,4538]},{"teal":4804,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4539]},{"teal":4805,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4540]},{"teal":4806,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4541,4542]},{"teal":4810,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4543,4544]},{"teal":4811,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4545,4546]},{"teal":4812,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4547,4548]},{"teal":4813,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4549]},{"teal":4814,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4550,4551]},{"teal":4818,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4552,4553]},{"teal":4819,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4554,4555]},{"teal":4820,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4556]},{"teal":4821,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4557,4558]},{"teal":4824,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4559]},{"teal":4825,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4560,4561]},{"teal":4826,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4562]},{"teal":4827,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4563,4564]},{"teal":4828,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4565,4566]},{"teal":4829,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4567,4568,4569,4570,4571,4572]},{"teal":4830,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4573,4574]},{"teal":4834,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4575,4576]},{"teal":4835,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4577,4578]},{"teal":4845,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4579,4580]},{"teal":4846,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4581,4582]},{"teal":4847,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4583,4584]},{"teal":4850,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4585]},{"teal":4851,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4586,4587]},{"teal":4854,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4588]},{"teal":4855,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4589,4590]},{"teal":4856,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4591]},{"teal":4857,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4592]},{"teal":4858,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4593,4594]},{"teal":4859,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4595,4596,4597]},{"teal":4860,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4598]},{"teal":4865,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4599,4600]},{"teal":4866,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4601,4602,4603]},{"teal":4867,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4604]},{"teal":4868,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4605,4606,4607]},{"teal":4873,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4608]},{"teal":4874,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4609,4610]},{"teal":4875,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4611,4612]},{"teal":4876,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4613]},{"teal":4877,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4614,4615]},{"teal":4878,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4616,4617]},{"teal":4879,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4618]},{"teal":4880,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4619,4620]},{"teal":4881,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4621,4622]},{"teal":4882,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4623,4624]},{"teal":4883,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4625,4626]},{"teal":4884,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4627]},{"teal":4889,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4628,4629]},{"teal":4890,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4630,4631]},{"teal":4891,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4632]},{"teal":4894,"source":"contracts/validatorRegistry.algo.ts:1153","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4633]},{"teal":4895,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4634,4635]},{"teal":4899,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4636,4637]},{"teal":4900,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4638,4639]},{"teal":4901,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4640]},{"teal":4904,"source":"contracts/validatorRegistry.algo.ts:1154","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4641]},{"teal":4905,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4642,4643]},{"teal":4909,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4644,4645]},{"teal":4910,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4646,4647]},{"teal":4911,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4648,4649,4650]},{"teal":4912,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4651]},{"teal":4913,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4652]},{"teal":4914,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4653]},{"teal":4915,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4654,4655]},{"teal":4916,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4656]},{"teal":4917,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4657]},{"teal":4918,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4658]},{"teal":4919,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4659]},{"teal":4920,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4660,4661]},{"teal":4921,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4662]},{"teal":4922,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4663,4664,4665]},{"teal":4923,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4666]},{"teal":4924,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4667,4668]},{"teal":4925,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4669,4670,4671]},{"teal":4926,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4672]},{"teal":4927,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4673]},{"teal":4928,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4674]},{"teal":4929,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4675,4676]},{"teal":4930,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4677]},{"teal":4934,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4678,4679]},{"teal":4935,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4680,4681]},{"teal":4936,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4682,4683,4684]},{"teal":4937,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4685]},{"teal":4938,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4686]},{"teal":4939,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4687]},{"teal":4940,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4688,4689]},{"teal":4941,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4690]},{"teal":4942,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4691]},{"teal":4943,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4692,4693]},{"teal":4944,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4694]},{"teal":4945,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4695,4696]},{"teal":4946,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4697]},{"teal":4947,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4698]},{"teal":4948,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4699,4700]},{"teal":4949,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4701,4702,4703]},{"teal":4950,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4704]},{"teal":4951,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4705]},{"teal":4952,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4706]},{"teal":4953,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4707,4708]},{"teal":4954,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4709]},{"teal":4959,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4710,4711]},{"teal":4960,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4712,4713,4714]},{"teal":4965,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4715,4716]},{"teal":4966,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4717]},{"teal":4967,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4718]},{"teal":4968,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4719]},{"teal":4969,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4720,4721]},{"teal":4970,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4722,4723,4724]},{"teal":4971,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4725]},{"teal":4972,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4726]},{"teal":4973,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4727]},{"teal":4974,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4728,4729]},{"teal":4975,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4730]},{"teal":4976,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4731]},{"teal":4977,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4732]},{"teal":4978,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4733]},{"teal":4979,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4734]},{"teal":4980,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4735]},{"teal":4981,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4736,4737]},{"teal":4982,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4738,4739,4740]},{"teal":4983,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4741]},{"teal":4984,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4742]},{"teal":4985,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4743]},{"teal":4986,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4744,4745]},{"teal":4987,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4746]},{"teal":4993,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4747,4748]},{"teal":4994,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4749,4750,4751]},{"teal":4999,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4752,4753]},{"teal":5000,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4754]},{"teal":5001,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4755]},{"teal":5002,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4756]},{"teal":5003,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4757,4758]},{"teal":5004,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4759]},{"teal":5005,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4760]},{"teal":5010,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4761,4762]},{"teal":5011,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4763]},{"teal":5012,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4764]},{"teal":5013,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4765]},{"teal":5014,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4766,4767]},{"teal":5015,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4768,4769,4770]},{"teal":5016,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4771]},{"teal":5017,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4772]},{"teal":5018,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4773]},{"teal":5019,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4774,4775]},{"teal":5020,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4776]},{"teal":5021,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4777]},{"teal":5022,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4778,4779]},{"teal":5023,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4780,4781]},{"teal":5024,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4782,4783]},{"teal":5025,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4784]},{"teal":5026,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4785]},{"teal":5027,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4786]},{"teal":5028,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4787]},{"teal":5029,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4788,4789]},{"teal":5030,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4790,4791,4792]},{"teal":5031,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4793]},{"teal":5032,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4794]},{"teal":5033,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4795]},{"teal":5034,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4796,4797]},{"teal":5035,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4798]},{"teal":5039,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4799,4800]},{"teal":5040,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4801]},{"teal":5041,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4802,4803]},{"teal":5042,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4804,4805]},{"teal":5043,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4806,4807]},{"teal":5044,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4808]},{"teal":5045,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4809]},{"teal":5046,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4810,4811]},{"teal":5047,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4812]},{"teal":5048,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4813]},{"teal":5049,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4814]},{"teal":5053,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4815,4816,4817]},{"teal":5056,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4818]},{"teal":5057,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4819,4820]},{"teal":5061,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4821]},{"teal":5062,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4822,4823]},{"teal":5063,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4824]},{"teal":5064,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4825]},{"teal":5065,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4826]},{"teal":5066,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4827]},{"teal":5067,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4828]},{"teal":5071,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4829]},{"teal":5072,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4830,4831]},{"teal":5073,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4832]},{"teal":5074,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4833]},{"teal":5077,"source":"contracts/validatorRegistry.algo.ts:1172","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4834]},{"teal":5078,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4835,4836]},{"teal":5082,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4837]},{"teal":5083,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4838,4839]},{"teal":5087,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4840]},{"teal":5088,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4841,4842]},{"teal":5093,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4843,4844]},{"teal":5094,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4845,4846]},{"teal":5095,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4847]},{"teal":5096,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4848,4849,4850]},{"teal":5101,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4851,4852]},{"teal":5102,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4853,4854]},{"teal":5103,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4855]},{"teal":5104,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4856]},{"teal":5105,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4857]},{"teal":5106,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4858]},{"teal":5107,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4859,4860]},{"teal":5108,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4861]},{"teal":5109,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4862,4863,4864]},{"teal":5114,"source":"contracts/validatorRegistry.algo.ts:1177","pc":[4865]},{"teal":5120,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4866,4867]},{"teal":5121,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4868]},{"teal":5122,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4869]},{"teal":5123,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4870]},{"teal":5124,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4871,4872,4873]},{"teal":5125,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4874,4875]},{"teal":5126,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4876,4877]},{"teal":5127,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4878]},{"teal":5128,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4879]},{"teal":5129,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4880]},{"teal":5130,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4881]},{"teal":5131,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4882]},{"teal":5132,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4883]},{"teal":5133,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4884]},{"teal":5134,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4885]},{"teal":5135,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4886]},{"teal":5136,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4887]},{"teal":5139,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4888,4889,4890]},{"teal":5144,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4891,4892]},{"teal":5145,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4893]},{"teal":5146,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4894]},{"teal":5147,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4895,4896]},{"teal":5154,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4897,4898]},{"teal":5155,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4899]},{"teal":5156,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4900]},{"teal":5157,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4901,4902]},{"teal":5158,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4903,4904,4905]},{"teal":5164,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4906,4907]},{"teal":5165,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4908]},{"teal":5166,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4909]},{"teal":5167,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4910,4911,4912]},{"teal":5171,"source":"contracts/validatorRegistry.algo.ts:1184","errorMessage":"No empty slot available in the staker pool set","pc":[4913]},{"teal":5176,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4914,4915]},{"teal":5177,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4916]},{"teal":5178,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4917]},{"teal":5179,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4918]},{"teal":5180,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4919]},{"teal":5181,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4920,4921]},{"teal":5182,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4922]},{"teal":5183,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4923,4924]},{"teal":5184,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4925]},{"teal":5185,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4926,4927]},{"teal":5186,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4928]},{"teal":5187,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4929]},{"teal":5198,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4930,4931,4932]},{"teal":5201,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4933]},{"teal":5202,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4934,4935]},{"teal":5206,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4936]},{"teal":5207,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4937,4938]},{"teal":5211,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4939]},{"teal":5212,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4940,4941]},{"teal":5216,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4942]},{"teal":5217,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4943,4944]},{"teal":5221,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4945]},{"teal":5222,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4946,4947]},{"teal":5223,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4948]},{"teal":5224,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4949]},{"teal":5227,"source":"contracts/validatorRegistry.algo.ts:1203","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4950]},{"teal":5228,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4951,4952]},{"teal":5232,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4953]},{"teal":5233,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4954,4955]},{"teal":5238,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4956,4957]},{"teal":5239,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4958,4959]},{"teal":5240,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4960]},{"teal":5241,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4961,4962,4963]},{"teal":5246,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4964,4965]},{"teal":5247,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4966,4967]},{"teal":5248,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4968]},{"teal":5249,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4969]},{"teal":5250,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4970]},{"teal":5251,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4971]},{"teal":5252,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4972]},{"teal":5253,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4973]},{"teal":5254,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4974]},{"teal":5255,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4975]},{"teal":5256,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4976]},{"teal":5257,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4977,4978,4979]},{"teal":5260,"source":"contracts/validatorRegistry.algo.ts:1206","pc":[4980,4981,4982]},{"teal":5265,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4983,4984]},{"teal":5266,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4985]},{"teal":5267,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4986]},{"teal":5268,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4987,4988]},{"teal":5273,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4989,4990]},{"teal":5274,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4991,4992]},{"teal":5275,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4993]},{"teal":5276,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4994]},{"teal":5277,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4995]},{"teal":5278,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4996]},{"teal":5279,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4997]},{"teal":5280,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4998]},{"teal":5281,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4999]},{"teal":5282,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5000,5001]},{"teal":5283,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5002,5003,5004]},{"teal":5284,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5005]},{"teal":5285,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5006]},{"teal":5286,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5007,5008,5009]},{"teal":5292,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5010,5011]},{"teal":5293,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5012,5013]},{"teal":5294,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5014]},{"teal":5295,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5015]},{"teal":5296,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5016]},{"teal":5297,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5017]},{"teal":5298,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5018,5019]},{"teal":5299,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5020]},{"teal":5300,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5021,5022,5023]},{"teal":5305,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5024]},{"teal":5306,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5025,5026]},{"teal":5310,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5027,5028]},{"teal":5311,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5029]},{"teal":5312,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5030]},{"teal":5313,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056]},{"teal":5314,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5057]},{"teal":5315,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5058,5059]},{"teal":5316,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5060]},{"teal":5317,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5061,5062]},{"teal":5318,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5063]},{"teal":5319,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5064,5065,5066]},{"teal":5324,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5067,5068]},{"teal":5325,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5069]},{"teal":5326,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5070]},{"teal":5327,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5071,5072]},{"teal":5336,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5073,5074]},{"teal":5337,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5075]},{"teal":5338,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5076]},{"teal":5339,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5077,5078]},{"teal":5340,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5079,5080,5081]},{"teal":5346,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5082,5083]},{"teal":5347,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5084]},{"teal":5348,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5085,5086,5087]},{"teal":5352,"source":"contracts/validatorRegistry.algo.ts:1220","errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5088]},{"teal":5357,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5089,5090]},{"teal":5358,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5091]},{"teal":5359,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5092,5093]},{"teal":5360,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5094]},{"teal":5361,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5095]},{"teal":5362,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5096]},{"teal":5363,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5097]},{"teal":5364,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5098,5099]},{"teal":5365,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5100]},{"teal":5366,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5101]},{"teal":5367,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5102]},{"teal":5370,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5103,5104]},{"teal":5373,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5105,5106]},{"teal":5374,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5107]},{"teal":5378,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5108,5109,5110]},{"teal":5381,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5111]},{"teal":5382,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5112,5113]},{"teal":5386,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5114,5115]},{"teal":5387,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5116,5117]},{"teal":5388,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5118]},{"teal":5389,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5119,5120]},{"teal":5390,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5121]},{"teal":5391,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5122]},{"teal":5392,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5123,5124]},{"teal":5393,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5125]},{"teal":5394,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5126,5127]},{"teal":5398,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5128,5129,5130]},{"teal":5399,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5131]},{"teal":5400,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5132]},{"teal":5401,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5133,5134]},{"teal":5402,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5135]},{"teal":5403,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5136]},{"teal":5404,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5137,5138]},{"teal":5405,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5139]},{"teal":5406,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5140]},{"teal":5407,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5141,5142]},{"teal":5411,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5143,5144]},{"teal":5412,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5145]},{"teal":5413,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5146]},{"teal":5414,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5147]},{"teal":5415,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5148,5149,5150]},{"teal":5416,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5151,5152]},{"teal":5417,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5153]},{"teal":5418,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5154]},{"teal":5419,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5155]},{"teal":5423,"source":"contracts/validatorRegistry.algo.ts:1230","errorMessage":"node number not in valid range","pc":[5156]},{"teal":5427,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5157]},{"teal":5428,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5158,5159]},{"teal":5433,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5160,5161]},{"teal":5434,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5162,5163]},{"teal":5435,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5164]},{"teal":5436,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5165,5166,5167]},{"teal":5441,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5168,5169]},{"teal":5442,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5170]},{"teal":5443,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5171,5172]},{"teal":5444,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5173]},{"teal":5445,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5174]},{"teal":5446,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5175]},{"teal":5447,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5176]},{"teal":5448,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5177]},{"teal":5449,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5178]},{"teal":5450,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5179]},{"teal":5451,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5180,5181]},{"teal":5452,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5182]},{"teal":5453,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5183]},{"teal":5454,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5184]},{"teal":5455,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5185]},{"teal":5456,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5186]},{"teal":5457,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5187]},{"teal":5458,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5188]},{"teal":5459,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5189]},{"teal":5460,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5190,5191,5192]},{"teal":5465,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5193,5194]},{"teal":5466,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5195,5196]},{"teal":5467,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5197]},{"teal":5468,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5198]},{"teal":5469,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5199]},{"teal":5470,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5200]},{"teal":5471,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5201]},{"teal":5472,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5202]},{"teal":5473,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5203]},{"teal":5474,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5204,5205]},{"teal":5475,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5206]},{"teal":5476,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5207]},{"teal":5477,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5208]},{"teal":5478,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5209,5210]},{"teal":5479,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5211]},{"teal":5480,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5212]},{"teal":5481,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5213,5214]},{"teal":5482,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5215]},{"teal":5483,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5216]},{"teal":5484,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5217,5218]},{"teal":5485,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5219]},{"teal":5489,"source":"contracts/validatorRegistry.algo.ts:1236","pc":[5220]},{"teal":5496,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5221,5222]},{"teal":5497,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5223]},{"teal":5498,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5224]},{"teal":5499,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5225,5226]},{"teal":5500,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5227,5228,5229]},{"teal":5504,"source":"contracts/validatorRegistry.algo.ts:1239","errorMessage":"no available space in specified node for this pool","pc":[5230]},{"teal":5505,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5231]},{"teal":5515,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5232,5233,5234]},{"teal":5518,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5235]},{"teal":5519,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5236,5237]},{"teal":5523,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5238,5239]},{"teal":5524,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5240]},{"teal":5525,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5241]},{"teal":5526,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5242,5243]},{"teal":5527,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5244]},{"teal":5528,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5245]},{"teal":5529,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5246,5247]},{"teal":5530,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5248]},{"teal":5531,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5249]},{"teal":5532,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5250,5251]},{"teal":5537,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5252,5253]},{"teal":5538,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5254]},{"teal":5539,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5255]},{"teal":5540,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5256,5257,5258]},{"teal":5545,"source":"contracts/validatorRegistry.algo.ts:1252","pc":[5259]},{"teal":5550,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5260,5261]},{"teal":5551,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5262,5263]},{"teal":5555,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5264]},{"teal":5556,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5265,5266]},{"teal":5557,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5267]},{"teal":5558,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5268,5269]},{"teal":5559,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5270]},{"teal":5560,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5271]},{"teal":5561,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5272,5273]},{"teal":5562,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5274]},{"teal":5563,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5275,5276]},{"teal":5570,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5277,5278]},{"teal":5571,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5279]},{"teal":5572,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5280]},{"teal":5573,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5281]},{"teal":5574,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5282,5283,5284]},{"teal":5575,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5285,5286]},{"teal":5576,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5287,5288]},{"teal":5577,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5289]},{"teal":5578,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5290]},{"teal":5581,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5291]},{"teal":5582,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5292,5293,5294]},{"teal":5583,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5295,5296]},{"teal":5584,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5297,5298]},{"teal":5585,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5299]},{"teal":5586,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5300]},{"teal":5589,"source":"contracts/validatorRegistry.algo.ts:1258","pc":[5301,5302,5303]},{"teal":5594,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5304,5305]},{"teal":5595,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5306]},{"teal":5596,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5307]},{"teal":5597,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5308]},{"teal":5601,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5309,5310]},{"teal":5602,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5311]},{"teal":5603,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5312]},{"teal":5604,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5313,5314]},{"teal":5605,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5315]},{"teal":5606,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5316]},{"teal":5607,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5317,5318]},{"teal":5608,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5319]},{"teal":5609,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5320]},{"teal":5610,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5321,5322]},{"teal":5615,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5323,5324]},{"teal":5616,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5325]},{"teal":5617,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5326]},{"teal":5618,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5327,5328,5329]},{"teal":5623,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5330]},{"teal":5624,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5331,5332]},{"teal":5632,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5333,5334]},{"teal":5633,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5335,5336]},{"teal":5634,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5337,5338]},{"teal":5635,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5339]},{"teal":5636,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5340,5341]},{"teal":5637,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5342]},{"teal":5640,"source":"contracts/validatorRegistry.algo.ts:1268","errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5343]},{"teal":5646,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5344,5345]},{"teal":5647,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5346]},{"teal":5648,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5347]},{"teal":5649,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5348,5349,5350]},{"teal":5657,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5351,5352]},{"teal":5658,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5353,5354]},{"teal":5659,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5355]},{"teal":5660,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5356,5357]},{"teal":5661,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5358,5359,5360]},{"teal":5662,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5361]},{"teal":5665,"source":"contracts/validatorRegistry.algo.ts:1274","errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5362]},{"teal":5671,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5363,5364]},{"teal":5672,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5365,5366]},{"teal":5673,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5367]},{"teal":5674,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5368,5369,5370]},{"teal":5679,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5371]},{"teal":5680,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5372,5373]},{"teal":5684,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5374,5375]},{"teal":5685,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5376,5377,5378]},{"teal":5686,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5379]},{"teal":5687,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5380,5381]},{"teal":5688,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5382,5383,5384]},{"teal":5689,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5385]},{"teal":5690,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5386,5387]},{"teal":5691,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5388]},{"teal":5692,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5389,5390]},{"teal":5698,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5391,5392]},{"teal":5699,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5393,5394]},{"teal":5700,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5395]},{"teal":5701,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5396,5397,5398]},{"teal":5706,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5399]},{"teal":5707,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5400,5401]},{"teal":5708,"source":"contracts/validatorRegistry.algo.ts:1284","pc":[5402,5403,5404]},{"teal":5714,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5405,5406]},{"teal":5715,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5407]},{"teal":5716,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5408]},{"teal":5717,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5409]},{"teal":5718,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5410,5411]},{"teal":5719,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5412]},{"teal":5720,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5413,5414,5415]},{"teal":5721,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5416,5417]},{"teal":5722,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5418,5419]},{"teal":5723,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5420,5421]},{"teal":5724,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5422]},{"teal":5725,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5423]},{"teal":5726,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5424]},{"teal":5727,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5425,5426]},{"teal":5728,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5427,5428,5429]},{"teal":5733,"source":"contracts/validatorRegistry.algo.ts:1287","pc":[5430,5431]},{"teal":5736,"source":"contracts/validatorRegistry.algo.ts:1287","errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5432]},{"teal":5742,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5433,5434]},{"teal":5743,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5435,5436]},{"teal":5744,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5437]},{"teal":5745,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5438,5439,5440]},{"teal":5753,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5441,5442]},{"teal":5754,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5443,5444]},{"teal":5755,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5445]},{"teal":5756,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5446,5447]},{"teal":5757,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5448,5449,5450]},{"teal":5758,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5451]},{"teal":5759,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5452,5453,5454]},{"teal":5762,"source":"contracts/validatorRegistry.algo.ts:1292","errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5455]},{"teal":5768,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5456,5457]},{"teal":5769,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5458,5459]},{"teal":5770,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5460]},{"teal":5771,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5461,5462,5463]},{"teal":5776,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5464,5465]},{"teal":5777,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5466,5467]},{"teal":5781,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5468,5469]},{"teal":5782,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5470,5471,5472]},{"teal":5785,"source":"contracts/validatorRegistry.algo.ts:1300","errorMessage":"provided NFD must be valid","pc":[5473]},{"teal":5793,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5474,5475]},{"teal":5794,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5476,5477]},{"teal":5795,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5478]},{"teal":5798,"source":"contracts/validatorRegistry.algo.ts:1304","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5479]},{"teal":5799,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5480,5481]},{"teal":5800,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5482]},{"teal":5801,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5483]},{"teal":5802,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5484,5485,5486]},{"teal":5803,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5487,5488]},{"teal":5804,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5489,5490]},{"teal":5805,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5491,5492,5493]},{"teal":5806,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5494]},{"teal":5810,"source":"contracts/validatorRegistry.algo.ts:1303","errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5495]},{"teal":5818,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5496,5497]},{"teal":5819,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512]},{"teal":5820,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5513]},{"teal":5823,"source":"contracts/validatorRegistry.algo.ts:1311","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5514]},{"teal":5824,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5515]},{"teal":5825,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5516,5517]},{"teal":5826,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5518,5519,5520]},{"teal":5827,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5521]},{"teal":5828,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5522]},{"teal":5831,"source":"contracts/validatorRegistry.algo.ts:1310","errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5523]},{"teal":5834,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5524]},{"teal":5846,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5525,5526,5527]},{"teal":5849,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5528]},{"teal":5853,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5529,5530]},{"teal":5854,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5531,5532,5533,5534,5535,5536,5537,5538]},{"teal":5855,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5539]},{"teal":5858,"source":"contracts/validatorRegistry.algo.ts:1329","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5540]},{"teal":5859,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5541,5542]},{"teal":5867,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5543]},{"teal":5868,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5544,5545]},{"teal":5869,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5546,5547]},{"teal":5870,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5548,5549,5550,5551,5552,5553]},{"teal":5871,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5554,5555]},{"teal":5875,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5556,5557]},{"teal":5876,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5558,5559]},{"teal":5880,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5560,5561]},{"teal":5881,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5562]},{"teal":5882,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5563]},{"teal":5883,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5564]},{"teal":5884,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5565,5566,5567]},{"teal":5885,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5568]},{"teal":5886,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5569]},{"teal":5887,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5570,5571]},{"teal":5888,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5572,5573]},{"teal":5889,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5574]},{"teal":5890,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5575,5576]},{"teal":5893,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5577]},{"teal":5894,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5578,5579]},{"teal":5897,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5580]},{"teal":5898,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5581,5582]},{"teal":5899,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5583]},{"teal":5900,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5584]},{"teal":5901,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5585,5586]},{"teal":5902,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5587,5588,5589]},{"teal":5903,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5590]},{"teal":5904,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5591]},{"teal":5907,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5592,5593]},{"teal":5908,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5594]},{"teal":5919,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5595,5596,5597]},{"teal":5922,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5598]},{"teal":5923,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5599,5600]},{"teal":5930,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5601]},{"teal":5931,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5602,5603]},{"teal":5932,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5604,5605]},{"teal":5936,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5606,5607]},{"teal":5937,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5608,5609]},{"teal":5941,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624]},{"teal":5942,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5625,5626]},{"teal":5943,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641]},{"teal":5944,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5642,5643]},{"teal":5947,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5644]},{"teal":5948,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5645,5646]},{"teal":5951,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5647]},{"teal":5955,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5648,5649]},{"teal":5956,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5650,5651]},{"teal":5960,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5652]},{"teal":5961,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5653,5654]},{"teal":5966,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5655,5656]},{"teal":5967,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5657,5658]},{"teal":5968,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5659]},{"teal":5969,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5660]},{"teal":5970,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5661,5662,5663]},{"teal":5974,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5664,5665]},{"teal":5975,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5666,5667]},{"teal":5976,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5668,5669]},{"teal":5977,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5670]},{"teal":5978,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5671,5672]},{"teal":5983,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5673,5674]},{"teal":5984,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5675,5676]},{"teal":5985,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5677]},{"teal":5986,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5678]},{"teal":5987,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5679,5680,5681]},{"teal":5988,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5682,5683]},{"teal":5989,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5684,5685]},{"teal":5990,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5686]},{"teal":5991,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5687]},{"teal":5994,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5688,5689,5690]},{"teal":5999,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5691]},{"teal":6000,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5692,5693,5694]},{"teal":6007,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5695,5696]},{"teal":6008,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5697,5698]},{"teal":6009,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5699]},{"teal":6010,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5700,5701]},{"teal":6011,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5702,5703,5704]},{"teal":6016,"source":"contracts/validatorRegistry.algo.ts:1358","pc":[5705]},{"teal":6020,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5706,5707]},{"teal":6023,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5708,5709]},{"teal":6024,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5710]},{"teal":6032,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5711,5712,5713]},{"teal":6035,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5714]},{"teal":6039,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5715,5716,5717]},{"teal":6040,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5718,5719]},{"teal":6044,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5720,5721]},{"teal":6045,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5722,5723]},{"teal":6046,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5724]},{"teal":6047,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5725]},{"teal":6048,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5726,5727]},{"teal":6049,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5728]},{"teal":6050,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5729]},{"teal":6051,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5730]},{"teal":6052,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5731]},{"teal":6053,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5732]},{"teal":6056,"source":"contracts/validatorRegistry.algo.ts:1369","errorMessage":"wideRatio failed","pc":[5733]},{"teal":6059,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5734,5735]},{"teal":6060,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5736]},{"teal":6067,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5737,5738,5739]},{"teal":6070,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5740]},{"teal":6074,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5741,5742,5743]},{"teal":6075,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5744,5745]},{"teal":6079,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5746,5747]},{"teal":6080,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5748,5749,5750]},{"teal":6081,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5751]},{"teal":6082,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5752]},{"teal":6083,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5753,5754]},{"teal":6084,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5755]},{"teal":6085,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5756]},{"teal":6086,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5757]},{"teal":6087,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5758]},{"teal":6088,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5759]},{"teal":6091,"source":"contracts/validatorRegistry.algo.ts:1379","errorMessage":"wideRatio failed","pc":[5760]},{"teal":6094,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5761,5762]},{"teal":6095,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5763]},{"teal":6101,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5764,5765,5766]},{"teal":6105,"source":"contracts/validatorRegistry.algo.ts:1386","pc":[5767,5768]},{"teal":6106,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5769]},{"teal":6110,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5770,5771,5772]},{"teal":6114,"source":"contracts/validatorRegistry.algo.ts:1390","pc":[5773]},{"teal":6115,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5774]},{"teal":6119,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5775,5776,5777]},{"teal":6122,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5778]},{"teal":6126,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5779,5780]},{"teal":6127,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5781,5782]},{"teal":6131,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5783,5784]},{"teal":6132,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5785,5786]},{"teal":6133,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5787,5788]},{"teal":6134,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5789]},{"teal":6135,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5790]},{"teal":6136,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5791,5792]},{"teal":6140,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5793,5794]},{"teal":6141,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5795,5796]},{"teal":6142,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5797,5798]},{"teal":6143,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5799]},{"teal":6144,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5800]},{"teal":6145,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5801,5802]},{"teal":6149,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5803,5804]},{"teal":6150,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5805,5806]},{"teal":6151,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5807,5808]},{"teal":6152,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5809]},{"teal":6153,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5810]},{"teal":6154,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5811,5812]},{"teal":6158,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5813,5814]},{"teal":6159,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5815,5816]},{"teal":6160,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5817,5818]},{"teal":6161,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5819]},{"teal":6162,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5820]},{"teal":6163,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5821,5822]},{"teal":6167,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5823,5824]},{"teal":6168,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5825,5826]},{"teal":6169,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5827,5828]},{"teal":6170,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5829]},{"teal":6171,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5830]},{"teal":6172,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5831,5832]},{"teal":6176,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5833,5834]},{"teal":6177,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5835,5836]},{"teal":6178,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5837,5838]},{"teal":6179,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5839]},{"teal":6180,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5840]},{"teal":6181,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5841,5842]},{"teal":6185,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5843,5844]},{"teal":6186,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5845,5846]},{"teal":6187,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5847,5848]},{"teal":6188,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5849]},{"teal":6189,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5850]},{"teal":6190,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5851,5852]},{"teal":6194,"source":"contracts/validatorRegistry.algo.ts:1410","pc":[5853,5854]},{"teal":6197,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5855,5856]},{"teal":6198,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5857]},{"teal":6202,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5858,5859,5860]},{"teal":6206,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5861,5862,5863]},{"teal":6207,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5864,5865]},{"teal":6208,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5866,5867,5868]},{"teal":6209,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5869]},{"teal":6210,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5870]},{"teal":6211,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5871]},{"teal":6214,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5872,5873,5874,5875,5876,5877]},{"teal":6215,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5878,5879,5880]},{"teal":6216,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5881,5882,5883,5884]},{"teal":6219,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[5885]},{"teal":6222,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5886,5887,5888,5889,5890,5891]},{"teal":6223,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5892,5893,5894,5895,5896,5897]},{"teal":6224,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5898,5899,5900,5901,5902,5903]},{"teal":6225,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5904,5905,5906,5907,5908,5909]},{"teal":6226,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5910,5911,5912,5913,5914,5915]},{"teal":6227,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5916,5917,5918,5919,5920,5921]},{"teal":6228,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5922,5923,5924,5925,5926,5927]},{"teal":6229,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5928,5929,5930,5931,5932,5933]},{"teal":6230,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5934,5935,5936,5937,5938,5939]},{"teal":6231,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5940,5941,5942,5943,5944,5945]},{"teal":6232,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5946,5947,5948,5949,5950,5951]},{"teal":6233,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5952,5953,5954,5955,5956,5957]},{"teal":6234,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5958,5959,5960,5961,5962,5963]},{"teal":6235,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5964,5965,5966,5967,5968,5969]},{"teal":6236,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5970,5971,5972,5973,5974,5975]},{"teal":6237,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5976,5977,5978,5979,5980,5981]},{"teal":6238,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5982,5983,5984,5985,5986,5987]},{"teal":6239,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5988,5989,5990,5991,5992,5993]},{"teal":6240,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5994,5995,5996,5997,5998,5999]},{"teal":6241,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6000,6001,6002,6003,6004,6005]},{"teal":6242,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6006,6007,6008,6009,6010,6011]},{"teal":6243,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6012,6013,6014,6015,6016,6017]},{"teal":6244,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6018,6019,6020,6021,6022,6023]},{"teal":6245,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6024,6025,6026,6027,6028,6029]},{"teal":6246,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6030,6031,6032,6033,6034,6035]},{"teal":6247,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6036,6037,6038,6039,6040,6041]},{"teal":6248,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6042,6043,6044,6045,6046,6047]},{"teal":6249,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6048,6049,6050,6051,6052,6053]},{"teal":6250,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6054,6055,6056,6057,6058,6059]},{"teal":6251,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6060,6061,6062,6063,6064,6065]},{"teal":6252,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6066,6067,6068,6069,6070,6071]},{"teal":6253,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6072,6073,6074,6075,6076,6077]},{"teal":6254,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6078,6079,6080,6081,6082,6083]},{"teal":6255,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6084,6085,6086]},{"teal":6256,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154]},{"teal":6259,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6155]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA1LjUKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract +export const APP_SPEC: Arc56Contract = {"name":"ValidatorRegistry","desc":"","methods":[{"name":"createApplication","args":[],"returns":{"type":"void"},"actions":{"create":["NoOp"],"call":[]}},{"name":"initStakingContract","args":[{"name":"approvalProgramSize","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"loadStakingContractData","args":[{"name":"offset","type":"uint64"},{"name":"data","type":"byte[]"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"finalizeStakingContract","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"gas","desc":"gas is a dummy no-op call that can be used to pool-up resource references and opcode cost","args":[],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getMbrAmounts","desc":"Returns the MBR amounts needed for various actions:\n[\n addValidatorMbr: uint64 - mbr needed to add a new validator - paid to validator contract\n addPoolMbr: uint64 - mbr needed to add a new pool - paid to validator\n poolInitMbr: uint64 - mbr needed to initStorage() of pool - paid to pool itself\n addStakerMbr: uint64 - mbr staker needs to add to first staking payment (stays w/ validator)\n]","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64)","struct":"MbrAmounts"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getProtocolConstraints","desc":"Returns the protocol constraints so that UIs can limit what users specify for validator configuration parameters.","readonly":true,"args":[],"returns":{"type":"(uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64,uint64)","struct":"Constraints"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNumValidators","desc":"Returns the current number of validators","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorConfig","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","struct":"ValidatorConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorState","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(uint16,uint64,uint64,uint64)","struct":"ValidatorCurState"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getValidatorOwnerAndManager","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"(address,address)"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPools","desc":"Return list of all pools for this validator.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"PoolInfo[] - array of pools\nNot callable from other contracts because 1K return but can be called w/ simulate which bumps log returns"}],"returns":{"type":"(uint64,uint16,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolAppId","desc":"getPoolAppId is useful for callers to determine app to call for removing stake if they don't have staking or\nwant to get staker list for an account. The staking pool also uses it to get the app id of staking pool 1\n(which contains reward tokens if being used) so that the amount available can be determined.","readonly":true,"args":[{"name":"validatorId","type":"uint64"},{"name":"poolId","type":"uint64"}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getPoolInfo","readonly":true,"args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","struct":"ValidatorPoolKey"}],"returns":{"type":"(uint64,uint16,uint64)","struct":"PoolInfo"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getCurMaxStakePerPool","desc":"Calculate the maximum stake per pool for a given validator.\nNormally this would be maxAlgoPerPool, but it should also never go above MaxAllowedStake / numPools so\nas pools are added the max allowed per pool can reduce.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."}],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"doesStakerNeedToPayMBR","desc":"Helper callers can call w/ simulate to determine if 'AddStaker' MBR should be included w/ staking amount","readonly":true,"args":[{"name":"staker","type":"address"}],"returns":{"type":"bool"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getStakedPoolsForAccount","desc":"Retrieves the staked pools for an account.","readonly":true,"args":[{"name":"staker","type":"address","desc":"The account to retrieve staked pools for.\n ValidatorPoolKey[] - The array of staked pools for the account."}],"returns":{"type":"(uint64,uint64,uint64)[]"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getTokenPayoutRatio","desc":"Retrieves the token payout ratio for a given validator - returning the pool ratios of whole so that token\npayouts across pools can be based on a stable snaphost of stake.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator.\n PoolTokenPayoutRatio - The token payout ratio for the validator."}],"returns":{"type":"(uint64[24],uint64)","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNodePoolAssignments","readonly":true,"args":[{"name":"validatorId","type":"uint64"}],"returns":{"type":"((uint64[3])[8])","struct":"NodePoolAssignmentConfig"},"actions":{"create":[],"call":["NoOp"]}},{"name":"getNFDRegistryID","readonly":true,"args":[],"returns":{"type":"uint64"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addValidator","desc":"Adds a new validator\nRequires at least 10 ALGO as the 'fee' for the transaction to help dissuade spammed validator adds.","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of new validator storage"},{"name":"nfdName","type":"string","desc":"(Optional) Name of nfd (used as double-check against id specified in config)"},{"name":"config","type":"(uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","desc":"ValidatorConfig struct","struct":"ValidatorConfig"}],"returns":{"type":"uint64","desc":"uint64 validator id"},"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorManager","desc":"Changes the Validator manager for a specific Validator id.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to change the manager for."},{"name":"manager","type":"address","desc":"The new manager address."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorSunsetInfo","desc":"Updates the sunset information for a given validator.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"sunsettingOn","type":"uint64","desc":"The new sunset timestamp."},{"name":"sunsettingTo","type":"uint64","desc":"The new sunset to validator id."}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorNFD","desc":"Changes the NFD for a validator in the validatorList contract.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator to update."},{"name":"nfdAppID","type":"uint64","desc":"The application id of the NFD to assign to the validator."},{"name":"nfdName","type":"string","desc":"The name of the NFD (which must match)"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorCommissionAddress","desc":"Change the commission address that validator rewards are sent to.\n [ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"commissionAddress","type":"address"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"changeValidatorRewardInfo","desc":"Allow the additional rewards (gating entry, additional token rewards) information be changed at will.\n[ ONLY OWNER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64"},{"name":"EntryGatingType","type":"uint8"},{"name":"EntryGatingAddress","type":"address"},{"name":"EntryGatingAssets","type":"uint64[4]"},{"name":"GatingAssetMinBalance","type":"uint64"},{"name":"RewardPerPayout","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"addPool","desc":"Adds a new pool to a validator's pool set, returning the 'key' to reference the pool in the future for staking, etc.\nThe caller must pay the cost of the validators MBR increase as well as the MBR that will be needed for the pool itself.\n\n\n[ ONLY OWNER OR MANAGER CAN call ]","args":[{"name":"mbrPayment","type":"pay","desc":"payment from caller which covers mbr increase of adding a new pool"},{"name":"validatorId","type":"uint64","desc":"is id of validator to pool to (must be owner or manager)"},{"name":"nodeNum","type":"uint64","desc":"is node number to add to"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey pool key to created pool","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"addStake","desc":"Adds stake to a validator pool.","args":[{"name":"stakedAmountPayment","type":"pay","desc":"payment coming from staker to place into a pool"},{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"valueToVerify","type":"uint64","desc":"only if validator has gating to enter - this is asset id or nfd id that corresponds to gating.\nTxn sender is factored in as well if that is part of gating.\n*"}],"returns":{"type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey - The key of the validator pool.","struct":"ValidatorPoolKey"},"events":[{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"setTokenPayoutRatio","desc":"setTokenPayoutRatio is called by Staking Pool # 1 (ONLY) to ask the validator (us) to calculate the ratios\nof stake in the pools for subsequent token payouts (ie: 2 pools, '100' algo total staked, 60 in pool 1, and 40\nin pool 2) This is done so we have a stable snapshot of stake - taken once per epoch - only triggered by\npool 1 doing payout. pools other than 1 doing payout call pool 1 to ask it do it first.\nIt would be 60/40% in the poolPctOfWhole values. The token reward payouts then use these values instead of\ntheir 'current' stake which changes as part of the payouts themselves (and people could be changing stake\nduring the epoch updates across pools)\n\n\nMultiple pools will call us via pool 1 (pool2-pool1-validator, etc.) so don't assert on pool1 calling multiple\ntimes in same epoch. Just return.","args":[{"name":"validatorId","type":"uint64","desc":"validator id (and thus pool) calling us. Verified so that sender MUST be pool 1 of this validator."}],"returns":{"type":"(uint64[24],uint64)","desc":"PoolTokenPayoutRatio - the finished ratio data","struct":"PoolTokenPayoutRatio"},"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeUpdatedViaRewards","desc":"stakeUpdatedViaRewards is called by Staking pools to inform the validator (us) that a particular amount of total\nstake has been added to the specified pool. This is used to update the stats we have in our PoolInfo storage.\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"ValidatorPoolKey type","struct":"ValidatorPoolKey"},{"name":"algoToAdd","type":"uint64","desc":"amount this validator's total stake increased via rewards"},{"name":"rewardTokenAmountReserved","type":"uint64","desc":"amount this validator's total stake increased via rewards (that should be"},{"name":"validatorCommission","type":"uint64","desc":"the commission amount the validator was paid, if any"},{"name":"saturatedBurnToFeeSink","type":"uint64","desc":"if the pool was in saturated state, the amount sent back to the fee sink.\nseen as 'accounted for/pending spent')"}],"returns":{"type":"void"},"events":[{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."}],"actions":{"create":[],"call":["NoOp"]}},{"name":"stakeRemoved","desc":"stakeRemoved is called by Staking pools to inform the validator (us) that a particular amount of total stake has been removed\nfrom the specified pool. This is used to update the stats we have in our PoolInfo storage.\nIf any amount of rewardRemoved is specified, then that amount of reward is sent to the use\nThe calling App id is validated against our pool list as well.","args":[{"name":"poolKey","type":"(uint64,uint64,uint64)","desc":"calling us from which stake was removed","struct":"ValidatorPoolKey"},{"name":"staker","type":"address"},{"name":"amountRemoved","type":"uint64","desc":"algo amount removed"},{"name":"rewardRemoved","type":"uint64","desc":"if applicable, amount of token reward removed (by pool 1 caller) or TO remove and pay out (via pool 1 from different pool caller)"},{"name":"stakerRemoved","type":"bool"}],"returns":{"type":"void"},"events":[{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"actions":{"create":[],"call":["NoOp"]}},{"name":"findPoolForStaker","desc":"Finds the pool for a staker based on the provided validator id, staker address, and amount to stake.\nFirst checks the stakers 'already staked list' for the validator preferring those (adding if possible) then adds\nto new pool if necessary.","readonly":true,"args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"staker","type":"address","desc":"The address of the staker."},{"name":"amountToStake","type":"uint64","desc":"The amount to stake."}],"returns":{"type":"((uint64,uint64,uint64),bool,bool)","desc":"ValidatorPoolKey, boolean, boolean - The pool for the staker, true/false on whether the staker is 'new'\nto this VALIDATOR, and true/false if staker is new to the protocol."},"actions":{"create":[],"call":["NoOp"]}},{"name":"movePoolToNode","desc":"Find the specified pool (in any node number) and move it to the specified node.\nThe pool account is forced offline if moved so prior node will still run for 320 rounds but\nnew key goes online on new node soon after (320 rounds after it goes online)\nNo-op if success, asserts if not found or can't move (no space in target)\n[ ONLY OWNER OR MANAGER CAN CHANGE ]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"poolAppId","type":"uint64"},{"name":"nodeNum","type":"uint64"}],"returns":{"type":"void"},"actions":{"create":[],"call":["NoOp"]}},{"name":"emptyTokenRewards","desc":"Sends the reward tokens held in pool 1 to specified receiver.\nThis is intended to be used by the owner when they want to get reward tokens 'back' which they sent to\nthe first pool (likely because validator is sunsetting. Any tokens currently 'reserved' for stakers to claim will\nNOT be sent as they must be held back for stakers to later claim.\n[ ONLY OWNER CAN CALL]","args":[{"name":"validatorId","type":"uint64","desc":"The id of the validator."},{"name":"receiver","type":"address","desc":"the account to send the tokens to (must already be opted-in to the reward token)"}],"returns":{"type":"uint64","desc":"uint64 the amount of reward token sent"},"actions":{"create":[],"call":["NoOp"]}}],"events":[{"name":"retiOP_addedValidator","args":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"}],"desc":"Logs the addition of a new validator to the system, its initial owner and manager"},{"name":"retiOP_validatorAddedPool","args":[{"name":"id","type":"uint64"},{"name":"num","type":"uint16"},{"name":"poolAppId","type":"uint64"}],"desc":"Logs the addition of a new pool to a particular validator ID"},{"name":"retiOP_stakeAdded","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountStaked","type":"uint64"}],"desc":"Logs how much stake was added by a staker to a particular staking pool"},{"name":"retiOP_epochRewardUpdate","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"validatorCommission","type":"uint64"},{"name":"saturatedBurnToFeeSink","type":"uint64"},{"name":"algoAdded","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"desc":"Logs how much algo was detected as being added to a staking pool as part of epoch reward calculations.\nCommission amount to validator, excess burned if pool is saturated, and the amount of tokens held back are logged as well."},{"name":"retiOP_stakeRemoved","args":[{"name":"id","type":"uint64"},{"name":"poolNum","type":"uint16"},{"name":"poolAppId","type":"uint64"},{"name":"staker","type":"address"},{"name":"amountUnstaked","type":"uint64"},{"name":"rewardTokensReceived","type":"uint64"},{"name":"rewardTokenAssetId","type":"uint64"}],"desc":"Logs how much stake was removed by a staker from a particular staking pool"}],"arcs":[4,56],"structs":{"ValidatorInfo":[{"name":"config","type":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}]},{"name":"state","type":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}]},{"name":"pools","type":"(uint64,uint16,uint64)[24]"},{"name":"tokenPayoutRatio","type":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}]},{"name":"nodePoolAssignments","type":[{"name":"nodes","type":"(uint64[3])[8]"}]}],"MbrAmounts":[{"name":"addValidatorMbr","type":"uint64"},{"name":"addPoolMbr","type":"uint64"},{"name":"poolInitMbr","type":"uint64"},{"name":"addStakerMbr","type":"uint64"}],"Constraints":[{"name":"epochPayoutRoundsMin","type":"uint64"},{"name":"epochPayoutRoundsMax","type":"uint64"},{"name":"minPctToValidatorWFourDecimals","type":"uint64"},{"name":"maxPctToValidatorWFourDecimals","type":"uint64"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"maxAlgoPerValidator","type":"uint64"},{"name":"amtConsideredSaturated","type":"uint64"},{"name":"maxNodes","type":"uint64"},{"name":"maxPoolsPerNode","type":"uint64"},{"name":"maxStakersPerPool","type":"uint64"}],"ValidatorConfig":[{"name":"id","type":"uint64"},{"name":"owner","type":"address"},{"name":"manager","type":"address"},{"name":"nfdForInfo","type":"uint64"},{"name":"entryGatingType","type":"uint8"},{"name":"entryGatingAddress","type":"address"},{"name":"entryGatingAssets","type":"uint64[4]"},{"name":"gatingAssetMinBalance","type":"uint64"},{"name":"rewardTokenId","type":"uint64"},{"name":"rewardPerPayout","type":"uint64"},{"name":"epochRoundLength","type":"uint32"},{"name":"percentToValidator","type":"uint32"},{"name":"validatorCommissionAddress","type":"address"},{"name":"minEntryStake","type":"uint64"},{"name":"maxAlgoPerPool","type":"uint64"},{"name":"poolsPerNode","type":"uint8"},{"name":"sunsettingOn","type":"uint64"},{"name":"sunsettingTo","type":"uint64"}],"ValidatorCurState":[{"name":"numPools","type":"uint16"},{"name":"totalStakers","type":"uint64"},{"name":"totalAlgoStaked","type":"uint64"},{"name":"rewardTokenHeldBack","type":"uint64"}],"PoolInfo":[{"name":"poolAppId","type":"uint64"},{"name":"totalStakers","type":"uint16"},{"name":"totalAlgoStaked","type":"uint64"}],"ValidatorPoolKey":[{"name":"id","type":"uint64"},{"name":"poolId","type":"uint64"},{"name":"poolAppId","type":"uint64"}],"PoolTokenPayoutRatio":[{"name":"poolPctOfWhole","type":"uint64[24]"},{"name":"updatedForPayout","type":"uint64"}],"NodePoolAssignmentConfig":[{"name":"nodes","type":"(uint64[3])[8]"}]},"state":{"schema":{"global":{"bytes":1,"ints":3},"local":{"bytes":0,"ints":0}},"keys":{"global":{"stakingPoolInitialized":{"key":"aW5pdA==","keyType":"AVMBytes","valueType":"bool"},"numValidators":{"key":"bnVtVg==","keyType":"AVMBytes","valueType":"uint64"},"numStakers":{"key":"bnVtU3Rha2Vycw==","keyType":"AVMBytes","valueType":"uint64"},"totalAlgoStaked":{"key":"c3Rha2Vk","keyType":"AVMBytes","valueType":"uint64"}},"local":{},"box":{"stakingPoolApprovalProgram":{"key":"cG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcw==","keyType":"AVMBytes","valueType":"AVMBytes"}}},"maps":{"global":{},"local":{},"box":{"validatorList":{"keyType":"uint64","valueType":"ValidatorInfo","prefix":"v"},"stakerPoolSet":{"keyType":"address","valueType":"(uint64,uint64,uint64)[6]","prefix":"sps"}}}},"bareActions":{"create":[],"call":[]},"sourceInfo":{"approval":{"sourceInfo":[{"teal":15,"source":"contracts/validatorRegistry.algo.ts:50","pc":[1,2]},{"teal":16,"source":"contracts/validatorRegistry.algo.ts:50","pc":[3]},{"teal":17,"source":"contracts/validatorRegistry.algo.ts:50","pc":[4,5]},{"teal":18,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6]},{"teal":19,"source":"contracts/validatorRegistry.algo.ts:50","pc":[7,8]},{"teal":20,"source":"contracts/validatorRegistry.algo.ts:50","pc":[9]},{"teal":21,"source":"contracts/validatorRegistry.algo.ts:50","pc":[10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]},{"teal":25,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"The requested action is not implemented in this contract. Are you using the correct OnComplete? Did you set your app ID?","pc":[36]},{"teal":30,"source":"contracts/validatorRegistry.algo.ts:81","pc":[37,38,39]},{"teal":31,"source":"contracts/validatorRegistry.algo.ts:81","pc":[40]},{"teal":32,"source":"contracts/validatorRegistry.algo.ts:81","pc":[41]},{"teal":36,"source":"contracts/validatorRegistry.algo.ts:81","pc":[42,43,44]},{"teal":40,"source":"contracts/validatorRegistry.algo.ts:82","pc":[45,46]},{"teal":41,"source":"contracts/validatorRegistry.algo.ts:82","pc":[47]},{"teal":42,"source":"contracts/validatorRegistry.algo.ts:82","pc":[48,49]},{"teal":43,"source":"contracts/validatorRegistry.algo.ts:82","pc":[50]},{"teal":44,"source":"contracts/validatorRegistry.algo.ts:82","pc":[51,52]},{"teal":45,"source":"contracts/validatorRegistry.algo.ts:82","pc":[53]},{"teal":46,"source":"contracts/validatorRegistry.algo.ts:82","pc":[54]},{"teal":50,"source":"contracts/validatorRegistry.algo.ts:83","pc":[55,56]},{"teal":51,"source":"contracts/validatorRegistry.algo.ts:83","pc":[57]},{"teal":52,"source":"contracts/validatorRegistry.algo.ts:83","pc":[58]},{"teal":56,"source":"contracts/validatorRegistry.algo.ts:84","pc":[59,60]},{"teal":57,"source":"contracts/validatorRegistry.algo.ts:84","pc":[61]},{"teal":58,"source":"contracts/validatorRegistry.algo.ts:84","pc":[62]},{"teal":62,"source":"contracts/validatorRegistry.algo.ts:85","pc":[63,64]},{"teal":63,"source":"contracts/validatorRegistry.algo.ts:85","pc":[65]},{"teal":64,"source":"contracts/validatorRegistry.algo.ts:85","pc":[66]},{"teal":65,"source":"contracts/validatorRegistry.algo.ts:81","pc":[67]},{"teal":70,"source":"contracts/validatorRegistry.algo.ts:88","pc":[68,69,70]},{"teal":71,"source":"contracts/validatorRegistry.algo.ts:88","pc":[71]},{"teal":74,"source":"contracts/validatorRegistry.algo.ts:88","pc":[72,73,74]},{"teal":75,"source":"contracts/validatorRegistry.algo.ts:88","pc":[75]},{"teal":76,"source":"contracts/validatorRegistry.algo.ts:88","pc":[76]},{"teal":80,"source":"contracts/validatorRegistry.algo.ts:88","pc":[77,78,79]},{"teal":84,"source":"contracts/validatorRegistry.algo.ts:90","pc":[80,81]},{"teal":85,"source":"contracts/validatorRegistry.algo.ts:90","pc":[82,83]},{"teal":86,"source":"contracts/validatorRegistry.algo.ts:90","pc":[84]},{"teal":87,"source":"contracts/validatorRegistry.algo.ts:90","pc":[85]},{"teal":88,"source":"contracts/validatorRegistry.algo.ts:88","pc":[86]},{"teal":93,"source":"contracts/validatorRegistry.algo.ts:93","pc":[87,88,89]},{"teal":94,"source":"contracts/validatorRegistry.algo.ts:93","pc":[90,91,92]},{"teal":97,"source":"contracts/validatorRegistry.algo.ts:93","pc":[93,94,95]},{"teal":98,"source":"contracts/validatorRegistry.algo.ts:93","pc":[96]},{"teal":101,"source":"contracts/validatorRegistry.algo.ts:93","pc":[97,98,99]},{"teal":102,"source":"contracts/validatorRegistry.algo.ts:93","pc":[100]},{"teal":103,"source":"contracts/validatorRegistry.algo.ts:93","pc":[101]},{"teal":107,"source":"contracts/validatorRegistry.algo.ts:93","pc":[102,103,104]},{"teal":111,"source":"contracts/validatorRegistry.algo.ts:94","pc":[105,106]},{"teal":112,"source":"contracts/validatorRegistry.algo.ts:94","pc":[107]},{"teal":113,"source":"contracts/validatorRegistry.algo.ts:94","pc":[108]},{"teal":114,"source":"contracts/validatorRegistry.algo.ts:94","pc":[109]},{"teal":115,"source":"contracts/validatorRegistry.algo.ts:94","pc":[110]},{"teal":116,"source":"contracts/validatorRegistry.algo.ts:94","pc":[111]},{"teal":120,"source":"contracts/validatorRegistry.algo.ts:95","pc":[112,113]},{"teal":121,"source":"contracts/validatorRegistry.algo.ts:95","pc":[114,115]},{"teal":122,"source":"contracts/validatorRegistry.algo.ts:95","pc":[116,117]},{"teal":123,"source":"contracts/validatorRegistry.algo.ts:95","pc":[118]},{"teal":124,"source":"contracts/validatorRegistry.algo.ts:93","pc":[119]},{"teal":129,"source":"contracts/validatorRegistry.algo.ts:98","pc":[120,121,122]},{"teal":130,"source":"contracts/validatorRegistry.algo.ts:98","pc":[123]},{"teal":131,"source":"contracts/validatorRegistry.algo.ts:98","pc":[124]},{"teal":135,"source":"contracts/validatorRegistry.algo.ts:98","pc":[125,126,127]},{"teal":139,"source":"contracts/validatorRegistry.algo.ts:99","pc":[128,129]},{"teal":140,"source":"contracts/validatorRegistry.algo.ts:99","pc":[130]},{"teal":141,"source":"contracts/validatorRegistry.algo.ts:99","pc":[131,132]},{"teal":142,"source":"contracts/validatorRegistry.algo.ts:99","pc":[133]},{"teal":143,"source":"contracts/validatorRegistry.algo.ts:99","pc":[134,135]},{"teal":144,"source":"contracts/validatorRegistry.algo.ts:99","pc":[136]},{"teal":145,"source":"contracts/validatorRegistry.algo.ts:99","pc":[137]},{"teal":146,"source":"contracts/validatorRegistry.algo.ts:98","pc":[138]},{"teal":151,"source":"contracts/validatorRegistry.algo.ts:105","pc":[139,140,141]},{"teal":152,"source":"contracts/validatorRegistry.algo.ts:105","pc":[142]},{"teal":153,"source":"contracts/validatorRegistry.algo.ts:105","pc":[143]},{"teal":159,"source":"contracts/validatorRegistry.algo.ts:105","pc":[144,145,146]},{"teal":160,"source":"contracts/validatorRegistry.algo.ts:105","pc":[147]},{"teal":165,"source":"contracts/validatorRegistry.algo.ts:116","pc":[148]},{"teal":168,"source":"contracts/validatorRegistry.algo.ts:116","pc":[149,150,151]},{"teal":169,"source":"contracts/validatorRegistry.algo.ts:116","pc":[152]},{"teal":170,"source":"contracts/validatorRegistry.algo.ts:116","pc":[153]},{"teal":171,"source":"contracts/validatorRegistry.algo.ts:116","pc":[154]},{"teal":172,"source":"contracts/validatorRegistry.algo.ts:116","pc":[155]},{"teal":184,"source":"contracts/validatorRegistry.algo.ts:116","pc":[156,157,158]},{"teal":209,"source":"contracts/validatorRegistry.algo.ts:121","pc":[159,160,161]},{"teal":210,"source":"contracts/validatorRegistry.algo.ts:121","pc":[162,163,164]},{"teal":211,"source":"contracts/validatorRegistry.algo.ts:121","pc":[165]},{"teal":212,"source":"contracts/validatorRegistry.algo.ts:131","pc":[166,167]},{"teal":213,"source":"contracts/validatorRegistry.algo.ts:130","pc":[168,169]},{"teal":214,"source":"contracts/validatorRegistry.algo.ts:129","pc":[170]},{"teal":215,"source":"contracts/validatorRegistry.algo.ts:129","pc":[171,172]},{"teal":216,"source":"contracts/validatorRegistry.algo.ts:126","pc":[173,174]},{"teal":217,"source":"contracts/validatorRegistry.algo.ts:123","pc":[175]},{"teal":218,"source":"contracts/validatorRegistry.algo.ts:122","pc":[176,177,178]},{"teal":219,"source":"contracts/validatorRegistry.algo.ts:122","pc":[179]},{"teal":220,"source":"contracts/validatorRegistry.algo.ts:122","pc":[180]},{"teal":221,"source":"contracts/validatorRegistry.algo.ts:134","pc":[181,182]},{"teal":222,"source":"contracts/validatorRegistry.algo.ts:135","pc":[183,184,185]},{"teal":223,"source":"contracts/validatorRegistry.algo.ts:135","pc":[186,187,188]},{"teal":224,"source":"contracts/validatorRegistry.algo.ts:134","pc":[189]},{"teal":225,"source":"contracts/validatorRegistry.algo.ts:134","pc":[190]},{"teal":226,"source":"contracts/validatorRegistry.algo.ts:134","pc":[191]},{"teal":227,"source":"contracts/validatorRegistry.algo.ts:139","pc":[192,193,194]},{"teal":228,"source":"contracts/validatorRegistry.algo.ts:138","pc":[195,196,197]},{"teal":229,"source":"contracts/validatorRegistry.algo.ts:138","pc":[198]},{"teal":230,"source":"contracts/validatorRegistry.algo.ts:138","pc":[199]},{"teal":231,"source":"contracts/validatorRegistry.algo.ts:116","pc":[200]},{"teal":236,"source":"contracts/validatorRegistry.algo.ts:147","pc":[201]},{"teal":239,"source":"contracts/validatorRegistry.algo.ts:147","pc":[202,203,204]},{"teal":240,"source":"contracts/validatorRegistry.algo.ts:147","pc":[205]},{"teal":241,"source":"contracts/validatorRegistry.algo.ts:147","pc":[206]},{"teal":242,"source":"contracts/validatorRegistry.algo.ts:147","pc":[207]},{"teal":243,"source":"contracts/validatorRegistry.algo.ts:147","pc":[208]},{"teal":249,"source":"contracts/validatorRegistry.algo.ts:147","pc":[209,210,211]},{"teal":265,"source":"contracts/validatorRegistry.algo.ts:154","pc":[212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253]},{"teal":266,"source":"contracts/validatorRegistry.algo.ts:155","pc":[254,255,256]},{"teal":267,"source":"contracts/validatorRegistry.algo.ts:155","pc":[257]},{"teal":268,"source":"contracts/validatorRegistry.algo.ts:155","pc":[258]},{"teal":269,"source":"contracts/validatorRegistry.algo.ts:156","pc":[259,260,261]},{"teal":270,"source":"contracts/validatorRegistry.algo.ts:156","pc":[262]},{"teal":271,"source":"contracts/validatorRegistry.algo.ts:156","pc":[263]},{"teal":272,"source":"contracts/validatorRegistry.algo.ts:157","pc":[264,265,266]},{"teal":273,"source":"contracts/validatorRegistry.algo.ts:157","pc":[267]},{"teal":274,"source":"contracts/validatorRegistry.algo.ts:157","pc":[268]},{"teal":275,"source":"contracts/validatorRegistry.algo.ts:158","pc":[269,270,271,272,273,274,275,276,277,278]},{"teal":276,"source":"contracts/validatorRegistry.algo.ts:158","pc":[279]},{"teal":277,"source":"contracts/validatorRegistry.algo.ts:159","pc":[280,281,282,283,284,285,286,287,288,289]},{"teal":278,"source":"contracts/validatorRegistry.algo.ts:159","pc":[290]},{"teal":279,"source":"contracts/validatorRegistry.algo.ts:160","pc":[291,292,293,294,295,296,297,298,299,300]},{"teal":280,"source":"contracts/validatorRegistry.algo.ts:160","pc":[301]},{"teal":281,"source":"contracts/validatorRegistry.algo.ts:147","pc":[302]},{"teal":286,"source":"contracts/validatorRegistry.algo.ts:167","pc":[303]},{"teal":289,"source":"contracts/validatorRegistry.algo.ts:167","pc":[304,305,306]},{"teal":290,"source":"contracts/validatorRegistry.algo.ts:167","pc":[307]},{"teal":291,"source":"contracts/validatorRegistry.algo.ts:167","pc":[308]},{"teal":292,"source":"contracts/validatorRegistry.algo.ts:167","pc":[309]},{"teal":293,"source":"contracts/validatorRegistry.algo.ts:167","pc":[310]},{"teal":294,"source":"contracts/validatorRegistry.algo.ts:167","pc":[311]},{"teal":300,"source":"contracts/validatorRegistry.algo.ts:167","pc":[312,313,314]},{"teal":304,"source":"contracts/validatorRegistry.algo.ts:169","pc":[315,316]},{"teal":305,"source":"contracts/validatorRegistry.algo.ts:169","pc":[317]},{"teal":306,"source":"contracts/validatorRegistry.algo.ts:167","pc":[318]},{"teal":311,"source":"contracts/validatorRegistry.algo.ts:172","pc":[319]},{"teal":314,"source":"contracts/validatorRegistry.algo.ts:173","pc":[320,321,322]},{"teal":315,"source":"contracts/validatorRegistry.algo.ts:173","pc":[323]},{"teal":318,"source":"contracts/validatorRegistry.algo.ts:172","pc":[324,325,326]},{"teal":319,"source":"contracts/validatorRegistry.algo.ts:172","pc":[327]},{"teal":320,"source":"contracts/validatorRegistry.algo.ts:172","pc":[328]},{"teal":321,"source":"contracts/validatorRegistry.algo.ts:172","pc":[329]},{"teal":322,"source":"contracts/validatorRegistry.algo.ts:172","pc":[330]},{"teal":326,"source":"contracts/validatorRegistry.algo.ts:172","pc":[331,332,333]},{"teal":330,"source":"contracts/validatorRegistry.algo.ts:174","pc":[334]},{"teal":331,"source":"contracts/validatorRegistry.algo.ts:174","pc":[335,336]},{"teal":332,"source":"contracts/validatorRegistry.algo.ts:174","pc":[337]},{"teal":333,"source":"contracts/validatorRegistry.algo.ts:174","pc":[338,339]},{"teal":334,"source":"contracts/validatorRegistry.algo.ts:174","pc":[340]},{"teal":335,"source":"contracts/validatorRegistry.algo.ts:174","pc":[341]},{"teal":336,"source":"contracts/validatorRegistry.algo.ts:174","pc":[342,343]},{"teal":337,"source":"contracts/validatorRegistry.algo.ts:174","pc":[344]},{"teal":338,"source":"contracts/validatorRegistry.algo.ts:172","pc":[345]},{"teal":343,"source":"contracts/validatorRegistry.algo.ts:177","pc":[346]},{"teal":346,"source":"contracts/validatorRegistry.algo.ts:178","pc":[347,348,349]},{"teal":347,"source":"contracts/validatorRegistry.algo.ts:178","pc":[350]},{"teal":350,"source":"contracts/validatorRegistry.algo.ts:177","pc":[351,352,353]},{"teal":351,"source":"contracts/validatorRegistry.algo.ts:177","pc":[354]},{"teal":352,"source":"contracts/validatorRegistry.algo.ts:177","pc":[355]},{"teal":353,"source":"contracts/validatorRegistry.algo.ts:177","pc":[356]},{"teal":354,"source":"contracts/validatorRegistry.algo.ts:177","pc":[357]},{"teal":358,"source":"contracts/validatorRegistry.algo.ts:177","pc":[358,359,360]},{"teal":362,"source":"contracts/validatorRegistry.algo.ts:179","pc":[361,362]},{"teal":363,"source":"contracts/validatorRegistry.algo.ts:179","pc":[363,364]},{"teal":364,"source":"contracts/validatorRegistry.algo.ts:179","pc":[365]},{"teal":365,"source":"contracts/validatorRegistry.algo.ts:179","pc":[366,367]},{"teal":366,"source":"contracts/validatorRegistry.algo.ts:179","pc":[368]},{"teal":367,"source":"contracts/validatorRegistry.algo.ts:179","pc":[369]},{"teal":368,"source":"contracts/validatorRegistry.algo.ts:179","pc":[370,371]},{"teal":369,"source":"contracts/validatorRegistry.algo.ts:179","pc":[372]},{"teal":370,"source":"contracts/validatorRegistry.algo.ts:177","pc":[373]},{"teal":375,"source":"contracts/validatorRegistry.algo.ts:182","pc":[374]},{"teal":378,"source":"contracts/validatorRegistry.algo.ts:183","pc":[375,376,377]},{"teal":379,"source":"contracts/validatorRegistry.algo.ts:183","pc":[378]},{"teal":382,"source":"contracts/validatorRegistry.algo.ts:182","pc":[379,380,381]},{"teal":383,"source":"contracts/validatorRegistry.algo.ts:182","pc":[382]},{"teal":384,"source":"contracts/validatorRegistry.algo.ts:182","pc":[383]},{"teal":385,"source":"contracts/validatorRegistry.algo.ts:182","pc":[384]},{"teal":386,"source":"contracts/validatorRegistry.algo.ts:182","pc":[385]},{"teal":390,"source":"contracts/validatorRegistry.algo.ts:182","pc":[386,387,388]},{"teal":397,"source":"contracts/validatorRegistry.algo.ts:185","pc":[389]},{"teal":398,"source":"contracts/validatorRegistry.algo.ts:185","pc":[390,391]},{"teal":399,"source":"contracts/validatorRegistry.algo.ts:185","pc":[392]},{"teal":400,"source":"contracts/validatorRegistry.algo.ts:185","pc":[393,394]},{"teal":401,"source":"contracts/validatorRegistry.algo.ts:185","pc":[395]},{"teal":402,"source":"contracts/validatorRegistry.algo.ts:185","pc":[396]},{"teal":403,"source":"contracts/validatorRegistry.algo.ts:185","pc":[397,398]},{"teal":404,"source":"contracts/validatorRegistry.algo.ts:185","pc":[399]},{"teal":405,"source":"contracts/validatorRegistry.algo.ts:186","pc":[400,401]},{"teal":406,"source":"contracts/validatorRegistry.algo.ts:186","pc":[402,403]},{"teal":407,"source":"contracts/validatorRegistry.algo.ts:186","pc":[404]},{"teal":408,"source":"contracts/validatorRegistry.algo.ts:186","pc":[405,406]},{"teal":409,"source":"contracts/validatorRegistry.algo.ts:186","pc":[407]},{"teal":410,"source":"contracts/validatorRegistry.algo.ts:186","pc":[408]},{"teal":411,"source":"contracts/validatorRegistry.algo.ts:186","pc":[409,410]},{"teal":412,"source":"contracts/validatorRegistry.algo.ts:186","pc":[411]},{"teal":413,"source":"contracts/validatorRegistry.algo.ts:186","pc":[412]},{"teal":414,"source":"contracts/validatorRegistry.algo.ts:182","pc":[413]},{"teal":419,"source":"contracts/validatorRegistry.algo.ts:196","pc":[414]},{"teal":422,"source":"contracts/validatorRegistry.algo.ts:197","pc":[415,416,417]},{"teal":423,"source":"contracts/validatorRegistry.algo.ts:197","pc":[418]},{"teal":426,"source":"contracts/validatorRegistry.algo.ts:196","pc":[419,420,421]},{"teal":427,"source":"contracts/validatorRegistry.algo.ts:196","pc":[422]},{"teal":428,"source":"contracts/validatorRegistry.algo.ts:196","pc":[423]},{"teal":429,"source":"contracts/validatorRegistry.algo.ts:196","pc":[424,425]},{"teal":430,"source":"contracts/validatorRegistry.algo.ts:196","pc":[426]},{"teal":431,"source":"contracts/validatorRegistry.algo.ts:196","pc":[427]},{"teal":432,"source":"contracts/validatorRegistry.algo.ts:196","pc":[428,429,430]},{"teal":433,"source":"contracts/validatorRegistry.algo.ts:196","pc":[431]},{"teal":434,"source":"contracts/validatorRegistry.algo.ts:196","pc":[432]},{"teal":435,"source":"contracts/validatorRegistry.algo.ts:196","pc":[433]},{"teal":436,"source":"contracts/validatorRegistry.algo.ts:196","pc":[434]},{"teal":437,"source":"contracts/validatorRegistry.algo.ts:196","pc":[435]},{"teal":438,"source":"contracts/validatorRegistry.algo.ts:196","pc":[436]},{"teal":447,"source":"contracts/validatorRegistry.algo.ts:196","pc":[437,438,439]},{"teal":450,"source":"contracts/validatorRegistry.algo.ts:196","pc":[440]},{"teal":451,"source":"contracts/validatorRegistry.algo.ts:196","pc":[441,442]},{"teal":455,"source":"contracts/validatorRegistry.algo.ts:198","pc":[443]},{"teal":456,"source":"contracts/validatorRegistry.algo.ts:198","pc":[444,445]},{"teal":460,"source":"contracts/validatorRegistry.algo.ts:199","pc":[446,447]},{"teal":461,"source":"contracts/validatorRegistry.algo.ts:199","pc":[448,449]},{"teal":462,"source":"contracts/validatorRegistry.algo.ts:199","pc":[450]},{"teal":463,"source":"contracts/validatorRegistry.algo.ts:199","pc":[451,452]},{"teal":464,"source":"contracts/validatorRegistry.algo.ts:199","pc":[453]},{"teal":465,"source":"contracts/validatorRegistry.algo.ts:199","pc":[454]},{"teal":466,"source":"contracts/validatorRegistry.algo.ts:199","pc":[455,456]},{"teal":467,"source":"contracts/validatorRegistry.algo.ts:199","pc":[457]},{"teal":468,"source":"contracts/validatorRegistry.algo.ts:199","pc":[458,459]},{"teal":472,"source":"contracts/validatorRegistry.algo.ts:200","pc":[460]},{"teal":473,"source":"contracts/validatorRegistry.algo.ts:200","pc":[461,462]},{"teal":478,"source":"contracts/validatorRegistry.algo.ts:200","pc":[463,464]},{"teal":479,"source":"contracts/validatorRegistry.algo.ts:200","pc":[465]},{"teal":480,"source":"contracts/validatorRegistry.algo.ts:200","pc":[466]},{"teal":481,"source":"contracts/validatorRegistry.algo.ts:200","pc":[467,468,469]},{"teal":486,"source":"contracts/validatorRegistry.algo.ts:201","pc":[470,471]},{"teal":487,"source":"contracts/validatorRegistry.algo.ts:201","pc":[472,473]},{"teal":488,"source":"contracts/validatorRegistry.algo.ts:201","pc":[474,475]},{"teal":489,"source":"contracts/validatorRegistry.algo.ts:201","pc":[476]},{"teal":490,"source":"contracts/validatorRegistry.algo.ts:201","pc":[477]},{"teal":491,"source":"contracts/validatorRegistry.algo.ts:201","pc":[478]},{"teal":492,"source":"contracts/validatorRegistry.algo.ts:201","pc":[479]},{"teal":493,"source":"contracts/validatorRegistry.algo.ts:201","pc":[480]},{"teal":494,"source":"contracts/validatorRegistry.algo.ts:201","pc":[481]},{"teal":495,"source":"contracts/validatorRegistry.algo.ts:201","pc":[482]},{"teal":496,"source":"contracts/validatorRegistry.algo.ts:201","pc":[483]},{"teal":497,"source":"contracts/validatorRegistry.algo.ts:201","pc":[484,485,486]},{"teal":500,"source":"contracts/validatorRegistry.algo.ts:203","pc":[487,488,489]},{"teal":505,"source":"contracts/validatorRegistry.algo.ts:205","pc":[490,491]},{"teal":506,"source":"contracts/validatorRegistry.algo.ts:205","pc":[492,493]},{"teal":507,"source":"contracts/validatorRegistry.algo.ts:205","pc":[494,495]},{"teal":508,"source":"contracts/validatorRegistry.algo.ts:205","pc":[496,497]},{"teal":509,"source":"contracts/validatorRegistry.algo.ts:205","pc":[498]},{"teal":510,"source":"contracts/validatorRegistry.algo.ts:205","pc":[499,500]},{"teal":511,"source":"contracts/validatorRegistry.algo.ts:205","pc":[501]},{"teal":512,"source":"contracts/validatorRegistry.algo.ts:205","pc":[502]},{"teal":513,"source":"contracts/validatorRegistry.algo.ts:205","pc":[503,504]},{"teal":518,"source":"contracts/validatorRegistry.algo.ts:200","pc":[505,506]},{"teal":519,"source":"contracts/validatorRegistry.algo.ts:200","pc":[507]},{"teal":520,"source":"contracts/validatorRegistry.algo.ts:200","pc":[508]},{"teal":521,"source":"contracts/validatorRegistry.algo.ts:200","pc":[509,510]},{"teal":522,"source":"contracts/validatorRegistry.algo.ts:200","pc":[511,512,513]},{"teal":527,"source":"contracts/validatorRegistry.algo.ts:207","pc":[514,515]},{"teal":530,"source":"contracts/validatorRegistry.algo.ts:196","pc":[516,517]},{"teal":533,"source":"contracts/validatorRegistry.algo.ts:196","pc":[518,519]},{"teal":534,"source":"contracts/validatorRegistry.algo.ts:196","pc":[520]},{"teal":539,"source":"contracts/validatorRegistry.algo.ts:215","pc":[521]},{"teal":542,"source":"contracts/validatorRegistry.algo.ts:216","pc":[522,523,524]},{"teal":543,"source":"contracts/validatorRegistry.algo.ts:216","pc":[525]},{"teal":546,"source":"contracts/validatorRegistry.algo.ts:216","pc":[526,527,528]},{"teal":547,"source":"contracts/validatorRegistry.algo.ts:216","pc":[529]},{"teal":550,"source":"contracts/validatorRegistry.algo.ts:215","pc":[530,531,532]},{"teal":551,"source":"contracts/validatorRegistry.algo.ts:215","pc":[533]},{"teal":552,"source":"contracts/validatorRegistry.algo.ts:215","pc":[534]},{"teal":553,"source":"contracts/validatorRegistry.algo.ts:215","pc":[535]},{"teal":554,"source":"contracts/validatorRegistry.algo.ts:215","pc":[536]},{"teal":555,"source":"contracts/validatorRegistry.algo.ts:215","pc":[537]},{"teal":563,"source":"contracts/validatorRegistry.algo.ts:215","pc":[538,539,540]},{"teal":570,"source":"contracts/validatorRegistry.algo.ts:218","pc":[541,542]},{"teal":571,"source":"contracts/validatorRegistry.algo.ts:218","pc":[543]},{"teal":572,"source":"contracts/validatorRegistry.algo.ts:218","pc":[544]},{"teal":573,"source":"contracts/validatorRegistry.algo.ts:218","pc":[545]},{"teal":574,"source":"contracts/validatorRegistry.algo.ts:218","pc":[546,547,548]},{"teal":575,"source":"contracts/validatorRegistry.algo.ts:218","pc":[549,550]},{"teal":576,"source":"contracts/validatorRegistry.algo.ts:218","pc":[551]},{"teal":577,"source":"contracts/validatorRegistry.algo.ts:218","pc":[552]},{"teal":578,"source":"contracts/validatorRegistry.algo.ts:218","pc":[553]},{"teal":582,"source":"contracts/validatorRegistry.algo.ts:217","errorMessage":"pool id must be between 1 and number of pools for this validator","pc":[554]},{"teal":586,"source":"contracts/validatorRegistry.algo.ts:221","pc":[555,556]},{"teal":587,"source":"contracts/validatorRegistry.algo.ts:221","pc":[557,558]},{"teal":588,"source":"contracts/validatorRegistry.algo.ts:221","pc":[559]},{"teal":589,"source":"contracts/validatorRegistry.algo.ts:221","pc":[560]},{"teal":590,"source":"contracts/validatorRegistry.algo.ts:221","pc":[561,562]},{"teal":591,"source":"contracts/validatorRegistry.algo.ts:221","pc":[563]},{"teal":592,"source":"contracts/validatorRegistry.algo.ts:221","pc":[564]},{"teal":593,"source":"contracts/validatorRegistry.algo.ts:221","pc":[565]},{"teal":594,"source":"contracts/validatorRegistry.algo.ts:221","pc":[566]},{"teal":595,"source":"contracts/validatorRegistry.algo.ts:221","pc":[567]},{"teal":596,"source":"contracts/validatorRegistry.algo.ts:221","pc":[568]},{"teal":597,"source":"contracts/validatorRegistry.algo.ts:221","pc":[569,570]},{"teal":598,"source":"contracts/validatorRegistry.algo.ts:221","pc":[571]},{"teal":599,"source":"contracts/validatorRegistry.algo.ts:221","pc":[572]},{"teal":600,"source":"contracts/validatorRegistry.algo.ts:221","pc":[573,574]},{"teal":601,"source":"contracts/validatorRegistry.algo.ts:221","pc":[575]},{"teal":602,"source":"contracts/validatorRegistry.algo.ts:221","pc":[576]},{"teal":603,"source":"contracts/validatorRegistry.algo.ts:215","pc":[577]},{"teal":608,"source":"contracts/validatorRegistry.algo.ts:224","pc":[578]},{"teal":611,"source":"contracts/validatorRegistry.algo.ts:225","pc":[579,580,581]},{"teal":612,"source":"contracts/validatorRegistry.algo.ts:225","pc":[582]},{"teal":613,"source":"contracts/validatorRegistry.algo.ts:225","pc":[583]},{"teal":614,"source":"contracts/validatorRegistry.algo.ts:225","pc":[584]},{"teal":615,"source":"contracts/validatorRegistry.algo.ts:225","pc":[585]},{"teal":618,"source":"contracts/validatorRegistry.algo.ts:225","errorMessage":"argument 0 (poolKey) for getPoolInfo must be a (uint64,uint64,uint64)","pc":[586]},{"teal":621,"source":"contracts/validatorRegistry.algo.ts:224","pc":[587,588,589]},{"teal":622,"source":"contracts/validatorRegistry.algo.ts:224","pc":[590]},{"teal":623,"source":"contracts/validatorRegistry.algo.ts:224","pc":[591]},{"teal":624,"source":"contracts/validatorRegistry.algo.ts:224","pc":[592]},{"teal":625,"source":"contracts/validatorRegistry.algo.ts:224","pc":[593]},{"teal":629,"source":"contracts/validatorRegistry.algo.ts:224","pc":[594,595,596]},{"teal":633,"source":"contracts/validatorRegistry.algo.ts:226","pc":[597,598]},{"teal":634,"source":"contracts/validatorRegistry.algo.ts:226","pc":[599,600]},{"teal":635,"source":"contracts/validatorRegistry.algo.ts:226","pc":[601,602,603]},{"teal":636,"source":"contracts/validatorRegistry.algo.ts:226","pc":[604]},{"teal":637,"source":"contracts/validatorRegistry.algo.ts:226","pc":[605]},{"teal":638,"source":"contracts/validatorRegistry.algo.ts:226","pc":[606]},{"teal":639,"source":"contracts/validatorRegistry.algo.ts:226","pc":[607,608]},{"teal":640,"source":"contracts/validatorRegistry.algo.ts:226","pc":[609]},{"teal":641,"source":"contracts/validatorRegistry.algo.ts:226","pc":[610]},{"teal":642,"source":"contracts/validatorRegistry.algo.ts:226","pc":[611,612]},{"teal":643,"source":"contracts/validatorRegistry.algo.ts:226","pc":[613]},{"teal":644,"source":"contracts/validatorRegistry.algo.ts:226","pc":[614,615]},{"teal":645,"source":"contracts/validatorRegistry.algo.ts:226","pc":[616,617,618]},{"teal":646,"source":"contracts/validatorRegistry.algo.ts:226","pc":[619]},{"teal":647,"source":"contracts/validatorRegistry.algo.ts:226","pc":[620]},{"teal":648,"source":"contracts/validatorRegistry.algo.ts:226","pc":[621]},{"teal":649,"source":"contracts/validatorRegistry.algo.ts:226","pc":[622,623]},{"teal":650,"source":"contracts/validatorRegistry.algo.ts:226","pc":[624]},{"teal":651,"source":"contracts/validatorRegistry.algo.ts:224","pc":[625]},{"teal":656,"source":"contracts/validatorRegistry.algo.ts:236","pc":[626]},{"teal":659,"source":"contracts/validatorRegistry.algo.ts:237","pc":[627,628,629]},{"teal":660,"source":"contracts/validatorRegistry.algo.ts:237","pc":[630]},{"teal":663,"source":"contracts/validatorRegistry.algo.ts:236","pc":[631,632,633]},{"teal":664,"source":"contracts/validatorRegistry.algo.ts:236","pc":[634]},{"teal":665,"source":"contracts/validatorRegistry.algo.ts:236","pc":[635]},{"teal":666,"source":"contracts/validatorRegistry.algo.ts:236","pc":[636]},{"teal":667,"source":"contracts/validatorRegistry.algo.ts:236","pc":[637]},{"teal":668,"source":"contracts/validatorRegistry.algo.ts:236","pc":[638]},{"teal":678,"source":"contracts/validatorRegistry.algo.ts:236","pc":[639,640,641]},{"teal":681,"source":"contracts/validatorRegistry.algo.ts:236","pc":[642]},{"teal":682,"source":"contracts/validatorRegistry.algo.ts:236","pc":[643,644]},{"teal":686,"source":"contracts/validatorRegistry.algo.ts:238","pc":[645,646]},{"teal":687,"source":"contracts/validatorRegistry.algo.ts:238","pc":[647,648]},{"teal":688,"source":"contracts/validatorRegistry.algo.ts:238","pc":[649]},{"teal":689,"source":"contracts/validatorRegistry.algo.ts:238","pc":[650,651]},{"teal":690,"source":"contracts/validatorRegistry.algo.ts:238","pc":[652]},{"teal":691,"source":"contracts/validatorRegistry.algo.ts:238","pc":[653]},{"teal":692,"source":"contracts/validatorRegistry.algo.ts:238","pc":[654,655]},{"teal":693,"source":"contracts/validatorRegistry.algo.ts:238","pc":[656]},{"teal":694,"source":"contracts/validatorRegistry.algo.ts:238","pc":[657]},{"teal":695,"source":"contracts/validatorRegistry.algo.ts:238","pc":[658,659]},{"teal":699,"source":"contracts/validatorRegistry.algo.ts:239","pc":[660,661,662]},{"teal":700,"source":"contracts/validatorRegistry.algo.ts:239","pc":[663,664]},{"teal":701,"source":"contracts/validatorRegistry.algo.ts:239","pc":[665]},{"teal":702,"source":"contracts/validatorRegistry.algo.ts:239","pc":[666,667]},{"teal":706,"source":"contracts/validatorRegistry.algo.ts:240","pc":[668,669,670]},{"teal":707,"source":"contracts/validatorRegistry.algo.ts:240","pc":[671]},{"teal":708,"source":"contracts/validatorRegistry.algo.ts:240","pc":[672]},{"teal":709,"source":"contracts/validatorRegistry.algo.ts:240","pc":[673,674]},{"teal":710,"source":"contracts/validatorRegistry.algo.ts:240","pc":[675]},{"teal":711,"source":"contracts/validatorRegistry.algo.ts:240","pc":[676]},{"teal":712,"source":"contracts/validatorRegistry.algo.ts:240","pc":[677,678]},{"teal":713,"source":"contracts/validatorRegistry.algo.ts:240","pc":[679]},{"teal":714,"source":"contracts/validatorRegistry.algo.ts:240","pc":[680]},{"teal":715,"source":"contracts/validatorRegistry.algo.ts:240","pc":[681,682]},{"teal":720,"source":"contracts/validatorRegistry.algo.ts:241","pc":[683,684]},{"teal":721,"source":"contracts/validatorRegistry.algo.ts:241","pc":[685]},{"teal":722,"source":"contracts/validatorRegistry.algo.ts:241","pc":[686]},{"teal":723,"source":"contracts/validatorRegistry.algo.ts:241","pc":[687,688,689]},{"teal":728,"source":"contracts/validatorRegistry.algo.ts:242","pc":[690,691,692]},{"teal":729,"source":"contracts/validatorRegistry.algo.ts:242","pc":[693,694]},{"teal":735,"source":"contracts/validatorRegistry.algo.ts:244","pc":[695,696]},{"teal":736,"source":"contracts/validatorRegistry.algo.ts:244","pc":[697,698]},{"teal":737,"source":"contracts/validatorRegistry.algo.ts:244","pc":[699]},{"teal":738,"source":"contracts/validatorRegistry.algo.ts:244","pc":[700,701,702]},{"teal":743,"source":"contracts/validatorRegistry.algo.ts:245","pc":[703,704]},{"teal":744,"source":"contracts/validatorRegistry.algo.ts:245","pc":[705,706]},{"teal":749,"source":"contracts/validatorRegistry.algo.ts:247","pc":[707,708]},{"teal":752,"source":"contracts/validatorRegistry.algo.ts:236","pc":[709,710]},{"teal":755,"source":"contracts/validatorRegistry.algo.ts:236","pc":[711,712]},{"teal":756,"source":"contracts/validatorRegistry.algo.ts:236","pc":[713]},{"teal":761,"source":"contracts/validatorRegistry.algo.ts:254","pc":[714]},{"teal":764,"source":"contracts/validatorRegistry.algo.ts:255","pc":[715,716,717]},{"teal":765,"source":"contracts/validatorRegistry.algo.ts:255","pc":[718]},{"teal":766,"source":"contracts/validatorRegistry.algo.ts:255","pc":[719]},{"teal":767,"source":"contracts/validatorRegistry.algo.ts:255","pc":[720,721]},{"teal":768,"source":"contracts/validatorRegistry.algo.ts:255","pc":[722]},{"teal":771,"source":"contracts/validatorRegistry.algo.ts:255","errorMessage":"argument 0 (staker) for doesStakerNeedToPayMBR must be a address","pc":[723]},{"teal":774,"source":"contracts/validatorRegistry.algo.ts:254","pc":[724,725,726]},{"teal":775,"source":"contracts/validatorRegistry.algo.ts:254","pc":[727,728]},{"teal":776,"source":"contracts/validatorRegistry.algo.ts:254","pc":[729]},{"teal":777,"source":"contracts/validatorRegistry.algo.ts:254","pc":[730,731]},{"teal":778,"source":"contracts/validatorRegistry.algo.ts:254","pc":[732]},{"teal":779,"source":"contracts/validatorRegistry.algo.ts:254","pc":[733]},{"teal":780,"source":"contracts/validatorRegistry.algo.ts:254","pc":[734]},{"teal":781,"source":"contracts/validatorRegistry.algo.ts:254","pc":[735]},{"teal":782,"source":"contracts/validatorRegistry.algo.ts:254","pc":[736]},{"teal":789,"source":"contracts/validatorRegistry.algo.ts:254","pc":[737,738,739]},{"teal":793,"source":"contracts/validatorRegistry.algo.ts:256","pc":[740]},{"teal":794,"source":"contracts/validatorRegistry.algo.ts:256","pc":[741,742]},{"teal":795,"source":"contracts/validatorRegistry.algo.ts:256","pc":[743]},{"teal":796,"source":"contracts/validatorRegistry.algo.ts:256","pc":[744]},{"teal":797,"source":"contracts/validatorRegistry.algo.ts:256","pc":[745]},{"teal":798,"source":"contracts/validatorRegistry.algo.ts:256","pc":[746]},{"teal":799,"source":"contracts/validatorRegistry.algo.ts:256","pc":[747]},{"teal":800,"source":"contracts/validatorRegistry.algo.ts:254","pc":[748]},{"teal":805,"source":"contracts/validatorRegistry.algo.ts:265","pc":[749]},{"teal":808,"source":"contracts/validatorRegistry.algo.ts:266","pc":[750,751,752]},{"teal":809,"source":"contracts/validatorRegistry.algo.ts:266","pc":[753]},{"teal":810,"source":"contracts/validatorRegistry.algo.ts:266","pc":[754]},{"teal":811,"source":"contracts/validatorRegistry.algo.ts:266","pc":[755,756]},{"teal":812,"source":"contracts/validatorRegistry.algo.ts:266","pc":[757]},{"teal":815,"source":"contracts/validatorRegistry.algo.ts:266","errorMessage":"argument 0 (staker) for getStakedPoolsForAccount must be a address","pc":[758]},{"teal":818,"source":"contracts/validatorRegistry.algo.ts:265","pc":[759,760,761]},{"teal":819,"source":"contracts/validatorRegistry.algo.ts:265","pc":[762]},{"teal":820,"source":"contracts/validatorRegistry.algo.ts:265","pc":[763]},{"teal":821,"source":"contracts/validatorRegistry.algo.ts:265","pc":[764]},{"teal":822,"source":"contracts/validatorRegistry.algo.ts:265","pc":[765]},{"teal":823,"source":"contracts/validatorRegistry.algo.ts:265","pc":[766]},{"teal":824,"source":"contracts/validatorRegistry.algo.ts:265","pc":[767,768,769]},{"teal":825,"source":"contracts/validatorRegistry.algo.ts:265","pc":[770]},{"teal":826,"source":"contracts/validatorRegistry.algo.ts:265","pc":[771]},{"teal":827,"source":"contracts/validatorRegistry.algo.ts:265","pc":[772]},{"teal":828,"source":"contracts/validatorRegistry.algo.ts:265","pc":[773]},{"teal":829,"source":"contracts/validatorRegistry.algo.ts:265","pc":[774]},{"teal":830,"source":"contracts/validatorRegistry.algo.ts:265","pc":[775]},{"teal":839,"source":"contracts/validatorRegistry.algo.ts:265","pc":[776,777,778]},{"teal":842,"source":"contracts/validatorRegistry.algo.ts:265","pc":[779]},{"teal":843,"source":"contracts/validatorRegistry.algo.ts:265","pc":[780,781]},{"teal":848,"source":"contracts/validatorRegistry.algo.ts:267","pc":[782]},{"teal":849,"source":"contracts/validatorRegistry.algo.ts:267","pc":[783,784]},{"teal":850,"source":"contracts/validatorRegistry.algo.ts:267","pc":[785]},{"teal":851,"source":"contracts/validatorRegistry.algo.ts:267","pc":[786]},{"teal":852,"source":"contracts/validatorRegistry.algo.ts:267","pc":[787]},{"teal":853,"source":"contracts/validatorRegistry.algo.ts:267","pc":[788]},{"teal":854,"source":"contracts/validatorRegistry.algo.ts:267","pc":[789]},{"teal":855,"source":"contracts/validatorRegistry.algo.ts:267","pc":[790,791,792]},{"teal":860,"source":"contracts/validatorRegistry.algo.ts:268","pc":[793]},{"teal":861,"source":"contracts/validatorRegistry.algo.ts:268","pc":[794,795,796]},{"teal":866,"source":"contracts/validatorRegistry.algo.ts:270","pc":[797]},{"teal":867,"source":"contracts/validatorRegistry.algo.ts:270","pc":[798,799]},{"teal":871,"source":"contracts/validatorRegistry.algo.ts:271","pc":[800]},{"teal":872,"source":"contracts/validatorRegistry.algo.ts:271","pc":[801,802]},{"teal":873,"source":"contracts/validatorRegistry.algo.ts:271","pc":[803]},{"teal":874,"source":"contracts/validatorRegistry.algo.ts:271","pc":[804]},{"teal":877,"source":"contracts/validatorRegistry.algo.ts:271","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[805]},{"teal":878,"source":"contracts/validatorRegistry.algo.ts:271","pc":[806,807]},{"teal":882,"source":"contracts/validatorRegistry.algo.ts:272","pc":[808]},{"teal":883,"source":"contracts/validatorRegistry.algo.ts:272","pc":[809,810]},{"teal":888,"source":"contracts/validatorRegistry.algo.ts:272","pc":[811,812]},{"teal":889,"source":"contracts/validatorRegistry.algo.ts:272","pc":[813,814]},{"teal":890,"source":"contracts/validatorRegistry.algo.ts:272","pc":[815]},{"teal":891,"source":"contracts/validatorRegistry.algo.ts:272","pc":[816,817,818]},{"teal":896,"source":"contracts/validatorRegistry.algo.ts:273","pc":[819,820]},{"teal":897,"source":"contracts/validatorRegistry.algo.ts:273","pc":[821,822]},{"teal":898,"source":"contracts/validatorRegistry.algo.ts:273","pc":[823]},{"teal":899,"source":"contracts/validatorRegistry.algo.ts:273","pc":[824]},{"teal":900,"source":"contracts/validatorRegistry.algo.ts:273","pc":[825]},{"teal":901,"source":"contracts/validatorRegistry.algo.ts:273","pc":[826]},{"teal":902,"source":"contracts/validatorRegistry.algo.ts:273","pc":[827]},{"teal":903,"source":"contracts/validatorRegistry.algo.ts:273","pc":[828]},{"teal":904,"source":"contracts/validatorRegistry.algo.ts:273","pc":[829]},{"teal":905,"source":"contracts/validatorRegistry.algo.ts:273","pc":[830]},{"teal":906,"source":"contracts/validatorRegistry.algo.ts:273","pc":[831]},{"teal":907,"source":"contracts/validatorRegistry.algo.ts:273","pc":[832,833,834]},{"teal":912,"source":"contracts/validatorRegistry.algo.ts:274","pc":[835,836]},{"teal":913,"source":"contracts/validatorRegistry.algo.ts:274","pc":[837,838]},{"teal":914,"source":"contracts/validatorRegistry.algo.ts:274","pc":[839,840]},{"teal":915,"source":"contracts/validatorRegistry.algo.ts:274","pc":[841]},{"teal":916,"source":"contracts/validatorRegistry.algo.ts:274","pc":[842]},{"teal":917,"source":"contracts/validatorRegistry.algo.ts:274","pc":[843]},{"teal":918,"source":"contracts/validatorRegistry.algo.ts:274","pc":[844]},{"teal":919,"source":"contracts/validatorRegistry.algo.ts:274","pc":[845]},{"teal":920,"source":"contracts/validatorRegistry.algo.ts:274","pc":[846,847]},{"teal":927,"source":"contracts/validatorRegistry.algo.ts:272","pc":[848,849]},{"teal":928,"source":"contracts/validatorRegistry.algo.ts:272","pc":[850]},{"teal":929,"source":"contracts/validatorRegistry.algo.ts:272","pc":[851]},{"teal":930,"source":"contracts/validatorRegistry.algo.ts:272","pc":[852,853]},{"teal":931,"source":"contracts/validatorRegistry.algo.ts:272","pc":[854,855,856]},{"teal":936,"source":"contracts/validatorRegistry.algo.ts:277","pc":[857,858]},{"teal":940,"source":"contracts/validatorRegistry.algo.ts:265","pc":[859,860]},{"teal":943,"source":"contracts/validatorRegistry.algo.ts:265","pc":[861,862]},{"teal":944,"source":"contracts/validatorRegistry.algo.ts:265","pc":[863]},{"teal":949,"source":"contracts/validatorRegistry.algo.ts:287","pc":[864]},{"teal":952,"source":"contracts/validatorRegistry.algo.ts:288","pc":[865,866,867]},{"teal":953,"source":"contracts/validatorRegistry.algo.ts:288","pc":[868]},{"teal":956,"source":"contracts/validatorRegistry.algo.ts:287","pc":[869,870,871]},{"teal":957,"source":"contracts/validatorRegistry.algo.ts:287","pc":[872]},{"teal":958,"source":"contracts/validatorRegistry.algo.ts:287","pc":[873]},{"teal":959,"source":"contracts/validatorRegistry.algo.ts:287","pc":[874]},{"teal":960,"source":"contracts/validatorRegistry.algo.ts:287","pc":[875]},{"teal":970,"source":"contracts/validatorRegistry.algo.ts:287","pc":[876,877,878]},{"teal":974,"source":"contracts/validatorRegistry.algo.ts:289","pc":[879,880]},{"teal":975,"source":"contracts/validatorRegistry.algo.ts:289","pc":[881,882]},{"teal":976,"source":"contracts/validatorRegistry.algo.ts:289","pc":[883]},{"teal":977,"source":"contracts/validatorRegistry.algo.ts:289","pc":[884,885]},{"teal":978,"source":"contracts/validatorRegistry.algo.ts:289","pc":[886]},{"teal":979,"source":"contracts/validatorRegistry.algo.ts:289","pc":[887]},{"teal":980,"source":"contracts/validatorRegistry.algo.ts:289","pc":[888,889]},{"teal":981,"source":"contracts/validatorRegistry.algo.ts:289","pc":[890]},{"teal":982,"source":"contracts/validatorRegistry.algo.ts:287","pc":[891]},{"teal":987,"source":"contracts/validatorRegistry.algo.ts:292","pc":[892]},{"teal":990,"source":"contracts/validatorRegistry.algo.ts:293","pc":[893,894,895]},{"teal":991,"source":"contracts/validatorRegistry.algo.ts:293","pc":[896]},{"teal":994,"source":"contracts/validatorRegistry.algo.ts:292","pc":[897,898,899]},{"teal":995,"source":"contracts/validatorRegistry.algo.ts:292","pc":[900]},{"teal":996,"source":"contracts/validatorRegistry.algo.ts:292","pc":[901]},{"teal":997,"source":"contracts/validatorRegistry.algo.ts:292","pc":[902]},{"teal":998,"source":"contracts/validatorRegistry.algo.ts:292","pc":[903]},{"teal":1002,"source":"contracts/validatorRegistry.algo.ts:292","pc":[904,905,906]},{"teal":1006,"source":"contracts/validatorRegistry.algo.ts:294","pc":[907]},{"teal":1007,"source":"contracts/validatorRegistry.algo.ts:294","pc":[908,909]},{"teal":1008,"source":"contracts/validatorRegistry.algo.ts:294","pc":[910]},{"teal":1009,"source":"contracts/validatorRegistry.algo.ts:294","pc":[911]},{"teal":1010,"source":"contracts/validatorRegistry.algo.ts:294","pc":[912]},{"teal":1011,"source":"contracts/validatorRegistry.algo.ts:294","pc":[913]},{"teal":1012,"source":"contracts/validatorRegistry.algo.ts:294","pc":[914]},{"teal":1015,"source":"contracts/validatorRegistry.algo.ts:294","errorMessage":"the specified validator id doesn't exist","pc":[915]},{"teal":1019,"source":"contracts/validatorRegistry.algo.ts:296","pc":[916,917]},{"teal":1020,"source":"contracts/validatorRegistry.algo.ts:296","pc":[918,919]},{"teal":1021,"source":"contracts/validatorRegistry.algo.ts:296","pc":[920]},{"teal":1022,"source":"contracts/validatorRegistry.algo.ts:296","pc":[921,922]},{"teal":1023,"source":"contracts/validatorRegistry.algo.ts:296","pc":[923]},{"teal":1024,"source":"contracts/validatorRegistry.algo.ts:296","pc":[924]},{"teal":1025,"source":"contracts/validatorRegistry.algo.ts:296","pc":[925,926]},{"teal":1026,"source":"contracts/validatorRegistry.algo.ts:296","pc":[927]},{"teal":1027,"source":"contracts/validatorRegistry.algo.ts:292","pc":[928]},{"teal":1032,"source":"contracts/validatorRegistry.algo.ts:299","pc":[929]},{"teal":1035,"source":"contracts/validatorRegistry.algo.ts:299","pc":[930,931,932]},{"teal":1036,"source":"contracts/validatorRegistry.algo.ts:299","pc":[933]},{"teal":1037,"source":"contracts/validatorRegistry.algo.ts:299","pc":[934]},{"teal":1038,"source":"contracts/validatorRegistry.algo.ts:299","pc":[935]},{"teal":1039,"source":"contracts/validatorRegistry.algo.ts:299","pc":[936]},{"teal":1040,"source":"contracts/validatorRegistry.algo.ts:299","pc":[937]},{"teal":1044,"source":"contracts/validatorRegistry.algo.ts:299","pc":[938,939,940]},{"teal":1048,"source":"contracts/validatorRegistry.algo.ts:301","pc":[941,942]},{"teal":1049,"source":"contracts/validatorRegistry.algo.ts:299","pc":[943]},{"teal":1054,"source":"contracts/validatorRegistry.algo.ts:312","pc":[944]},{"teal":1057,"source":"contracts/validatorRegistry.algo.ts:312","pc":[945,946,947]},{"teal":1058,"source":"contracts/validatorRegistry.algo.ts:312","pc":[948]},{"teal":1059,"source":"contracts/validatorRegistry.algo.ts:312","pc":[949]},{"teal":1060,"source":"contracts/validatorRegistry.algo.ts:312","pc":[950,951]},{"teal":1061,"source":"contracts/validatorRegistry.algo.ts:312","pc":[952]},{"teal":1064,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 0 (config) for addValidator must be a (uint64,address,address,uint64,uint8,address,uint64[4],uint64,uint64,uint64,uint32,uint32,address,uint64,uint64,uint8,uint64,uint64)","pc":[953]},{"teal":1067,"source":"contracts/validatorRegistry.algo.ts:312","pc":[954,955,956]},{"teal":1068,"source":"contracts/validatorRegistry.algo.ts:312","pc":[957,958,959]},{"teal":1071,"source":"contracts/validatorRegistry.algo.ts:312","pc":[960,961]},{"teal":1072,"source":"contracts/validatorRegistry.algo.ts:312","pc":[962]},{"teal":1073,"source":"contracts/validatorRegistry.algo.ts:312","pc":[963]},{"teal":1074,"source":"contracts/validatorRegistry.algo.ts:312","pc":[964]},{"teal":1075,"source":"contracts/validatorRegistry.algo.ts:312","pc":[965,966]},{"teal":1076,"source":"contracts/validatorRegistry.algo.ts:312","pc":[967]},{"teal":1077,"source":"contracts/validatorRegistry.algo.ts:312","pc":[968]},{"teal":1080,"source":"contracts/validatorRegistry.algo.ts:312","errorMessage":"argument 2 (mbrPayment) for addValidator must be a pay transaction","pc":[969]},{"teal":1083,"source":"contracts/validatorRegistry.algo.ts:312","pc":[970,971,972]},{"teal":1084,"source":"contracts/validatorRegistry.algo.ts:312","pc":[973]},{"teal":1085,"source":"contracts/validatorRegistry.algo.ts:312","pc":[974]},{"teal":1086,"source":"contracts/validatorRegistry.algo.ts:312","pc":[975]},{"teal":1087,"source":"contracts/validatorRegistry.algo.ts:312","pc":[976]},{"teal":1088,"source":"contracts/validatorRegistry.algo.ts:312","pc":[977]},{"teal":1100,"source":"contracts/validatorRegistry.algo.ts:312","pc":[978,979,980]},{"teal":1103,"source":"contracts/validatorRegistry.algo.ts:312","pc":[981]},{"teal":1107,"source":"contracts/validatorRegistry.algo.ts:313","pc":[982,983]},{"teal":1108,"source":"contracts/validatorRegistry.algo.ts:313","pc":[984,985,986]},{"teal":1113,"source":"contracts/validatorRegistry.algo.ts:315","pc":[987,988]},{"teal":1114,"source":"contracts/validatorRegistry.algo.ts:315","pc":[989,990]},{"teal":1115,"source":"contracts/validatorRegistry.algo.ts:315","pc":[991,992]},{"teal":1116,"source":"contracts/validatorRegistry.algo.ts:315","pc":[993]},{"teal":1119,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[994]},{"teal":1122,"source":"contracts/validatorRegistry.algo.ts:315","pc":[995,996]},{"teal":1123,"source":"contracts/validatorRegistry.algo.ts:315","pc":[997,998]},{"teal":1124,"source":"contracts/validatorRegistry.algo.ts:315","pc":[999,1000,1001]},{"teal":1125,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1002,1003,1004]},{"teal":1126,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1005]},{"teal":1127,"source":"contracts/validatorRegistry.algo.ts:315","pc":[1006]},{"teal":1130,"source":"contracts/validatorRegistry.algo.ts:315","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addValidatorMbr\"}","pc":[1007]},{"teal":1134,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1008,1009]},{"teal":1135,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1010,1011]},{"teal":1136,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1012,1013,1014,1015,1016]},{"teal":1137,"source":"contracts/validatorRegistry.algo.ts:317","pc":[1017]},{"teal":1140,"source":"contracts/validatorRegistry.algo.ts:317","errorMessage":"fee must be 10 ALGO or more to prevent spamming of validators","pc":[1018]},{"teal":1144,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1019,1020]},{"teal":1145,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1021]},{"teal":1146,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1022]},{"teal":1147,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1023]},{"teal":1148,"source":"contracts/validatorRegistry.algo.ts:320","pc":[1024,1025]},{"teal":1152,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1026,1027]},{"teal":1153,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1028,1029]},{"teal":1154,"source":"contracts/validatorRegistry.algo.ts:321","pc":[1030]},{"teal":1158,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1031]},{"teal":1159,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1032,1033]},{"teal":1160,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1034]},{"teal":1161,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1035]},{"teal":1162,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1036,1037,1038]},{"teal":1163,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1039]},{"teal":1164,"source":"contracts/validatorRegistry.algo.ts:323","pc":[1040]},{"teal":1168,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1041]},{"teal":1169,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1042,1043]},{"teal":1170,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1044]},{"teal":1171,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1045,1046]},{"teal":1172,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1047]},{"teal":1173,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1048]},{"teal":1174,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1049,1050]},{"teal":1175,"source":"contracts/validatorRegistry.algo.ts:324","pc":[1051]},{"teal":1179,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1052]},{"teal":1180,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1053,1054]},{"teal":1181,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1055]},{"teal":1182,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1056]},{"teal":1183,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1057,1058]},{"teal":1184,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1059]},{"teal":1185,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1060]},{"teal":1186,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1061,1062]},{"teal":1187,"source":"contracts/validatorRegistry.algo.ts:325","pc":[1063]},{"teal":1192,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1064,1065]},{"teal":1193,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1066,1067,1068]},{"teal":1194,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1069]},{"teal":1195,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1070]},{"teal":1196,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1071]},{"teal":1197,"source":"contracts/validatorRegistry.algo.ts:328","pc":[1072,1073,1074]},{"teal":1202,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1075,1076]},{"teal":1203,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1077,1078,1079]},{"teal":1204,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1080]},{"teal":1205,"source":"contracts/validatorRegistry.algo.ts:330","pc":[1081,1082,1083]},{"teal":1208,"source":"contracts/validatorRegistry.algo.ts:330","errorMessage":"provided NFD must be valid","pc":[1084]},{"teal":1215,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1085,1086]},{"teal":1216,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1087,1088]},{"teal":1217,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1089,1090,1091]},{"teal":1218,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1092]},{"teal":1219,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1093,1094]},{"teal":1220,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1095]},{"teal":1223,"source":"contracts/validatorRegistry.algo.ts:333","errorMessage":"global state value does not exist: AppID.fromUint64(config.nfdForInfo).globalState('i.owner.a')","pc":[1096]},{"teal":1224,"source":"contracts/validatorRegistry.algo.ts:333","pc":[1097]},{"teal":1227,"source":"contracts/validatorRegistry.algo.ts:332","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1098]},{"teal":1234,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1099,1100]},{"teal":1235,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1101,1102,1103]},{"teal":1236,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1104]},{"teal":1237,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1105,1106]},{"teal":1238,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1107]},{"teal":1239,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1108]},{"teal":1240,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1109,1110,1111]},{"teal":1241,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1112,1113]},{"teal":1242,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1114,1115,1116]},{"teal":1243,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1117]},{"teal":1244,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1118,1119]},{"teal":1245,"source":"contracts/validatorRegistry.algo.ts:339","pc":[1120]},{"teal":1246,"source":"contracts/validatorRegistry.algo.ts:338","pc":[1121]},{"teal":1249,"source":"contracts/validatorRegistry.algo.ts:337","pc":[1122,1123,1124]},{"teal":1257,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1125,1126]},{"teal":1258,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1127,1128,1129]},{"teal":1259,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1130]},{"teal":1260,"source":"contracts/validatorRegistry.algo.ts:343","pc":[1131,1132,1133]},{"teal":1263,"source":"contracts/validatorRegistry.algo.ts:342","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1134]},{"teal":1268,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1135,1136,1137,1138,1139,1140]},{"teal":1269,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1141,1142]},{"teal":1270,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1143]},{"teal":1271,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1144,1145]},{"teal":1272,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1146,1147,1148]},{"teal":1273,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1149]},{"teal":1274,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1150,1151]},{"teal":1275,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1152,1153,1154]},{"teal":1276,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1155]},{"teal":1277,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1156]},{"teal":1278,"source":"contracts/validatorRegistry.algo.ts:347","pc":[1157]},{"teal":1282,"source":"contracts/validatorRegistry.algo.ts:348","pc":[1158,1159]},{"teal":1285,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1160,1161]},{"teal":1286,"source":"contracts/validatorRegistry.algo.ts:312","pc":[1162]},{"teal":1291,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1163,1164,1165]},{"teal":1292,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1166]},{"teal":1293,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1167]},{"teal":1294,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1168,1169]},{"teal":1295,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1170]},{"teal":1298,"source":"contracts/validatorRegistry.algo.ts:358","errorMessage":"argument 0 (manager) for changeValidatorManager must be a address","pc":[1171]},{"teal":1301,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1172,1173,1174]},{"teal":1302,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1175]},{"teal":1305,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1176,1177,1178]},{"teal":1306,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1179]},{"teal":1307,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1180]},{"teal":1317,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1181,1182,1183]},{"teal":1321,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1184,1185]},{"teal":1322,"source":"contracts/validatorRegistry.algo.ts:359","pc":[1186,1187,1188]},{"teal":1326,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1189,1190]},{"teal":1327,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1191,1192]},{"teal":1328,"source":"contracts/validatorRegistry.algo.ts:360","pc":[1193]},{"teal":1331,"source":"contracts/validatorRegistry.algo.ts:360","errorMessage":"needs to at least be valid address","pc":[1194]},{"teal":1335,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1195,1196]},{"teal":1336,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1197,1198]},{"teal":1337,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1199]},{"teal":1338,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1200,1201]},{"teal":1339,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1202]},{"teal":1340,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1203]},{"teal":1341,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1204,1205]},{"teal":1342,"source":"contracts/validatorRegistry.algo.ts:361","pc":[1206]},{"teal":1343,"source":"contracts/validatorRegistry.algo.ts:358","pc":[1207]},{"teal":1348,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1208,1209,1210]},{"teal":1349,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1211]},{"teal":1352,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1212,1213,1214]},{"teal":1353,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1215]},{"teal":1356,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1216,1217,1218]},{"teal":1357,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1219]},{"teal":1360,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1220,1221,1222]},{"teal":1361,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1223]},{"teal":1362,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1224]},{"teal":1373,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1225,1226,1227]},{"teal":1377,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1228,1229]},{"teal":1378,"source":"contracts/validatorRegistry.algo.ts:373","pc":[1230,1231,1232]},{"teal":1382,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1233,1234]},{"teal":1383,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1235,1236]},{"teal":1384,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1237]},{"teal":1385,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1238]},{"teal":1386,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1239,1240]},{"teal":1387,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1241]},{"teal":1388,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1242]},{"teal":1389,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1243,1244]},{"teal":1390,"source":"contracts/validatorRegistry.algo.ts:374","pc":[1245]},{"teal":1394,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1246,1247,1248]},{"teal":1395,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1249,1250]},{"teal":1396,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1251]},{"teal":1397,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1252]},{"teal":1398,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1253,1254]},{"teal":1399,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1255]},{"teal":1400,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1256]},{"teal":1401,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1257,1258]},{"teal":1402,"source":"contracts/validatorRegistry.algo.ts:375","pc":[1259]},{"teal":1403,"source":"contracts/validatorRegistry.algo.ts:372","pc":[1260]},{"teal":1408,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1261,1262,1263]},{"teal":1409,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1264,1265,1266]},{"teal":1412,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1267,1268,1269]},{"teal":1413,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1270]},{"teal":1416,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1271,1272,1273]},{"teal":1417,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1274]},{"teal":1420,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1275,1276,1277]},{"teal":1421,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1278]},{"teal":1422,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1279]},{"teal":1433,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1280,1281,1282]},{"teal":1437,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1283,1284]},{"teal":1438,"source":"contracts/validatorRegistry.algo.ts:387","pc":[1285,1286,1287]},{"teal":1442,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1288,1289]},{"teal":1443,"source":"contracts/validatorRegistry.algo.ts:389","pc":[1290,1291,1292]},{"teal":1446,"source":"contracts/validatorRegistry.algo.ts:389","errorMessage":"provided NFD must be valid","pc":[1293]},{"teal":1453,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1294,1295]},{"teal":1454,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1296,1297]},{"teal":1455,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1298,1299]},{"teal":1456,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1300]},{"teal":1459,"source":"contracts/validatorRegistry.algo.ts:392","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.owner.a')","pc":[1301]},{"teal":1460,"source":"contracts/validatorRegistry.algo.ts:392","pc":[1302]},{"teal":1463,"source":"contracts/validatorRegistry.algo.ts:391","errorMessage":"If specifying NFD, account adding validator must be owner","pc":[1303]},{"teal":1467,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1304,1305]},{"teal":1468,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1306,1307]},{"teal":1469,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1308]},{"teal":1470,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1309]},{"teal":1471,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1310,1311]},{"teal":1472,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1312]},{"teal":1473,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1313]},{"teal":1474,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1314,1315]},{"teal":1475,"source":"contracts/validatorRegistry.algo.ts:395","pc":[1316]},{"teal":1476,"source":"contracts/validatorRegistry.algo.ts:386","pc":[1317]},{"teal":1481,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1318,1319,1320]},{"teal":1482,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1321]},{"teal":1483,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1322]},{"teal":1484,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1323,1324]},{"teal":1485,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1325]},{"teal":1488,"source":"contracts/validatorRegistry.algo.ts:402","errorMessage":"argument 0 (commissionAddress) for changeValidatorCommissionAddress must be a address","pc":[1326]},{"teal":1491,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1327,1328,1329]},{"teal":1492,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1330]},{"teal":1495,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1331,1332,1333]},{"teal":1496,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1334]},{"teal":1497,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1335]},{"teal":1504,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1336,1337,1338]},{"teal":1508,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1339,1340]},{"teal":1509,"source":"contracts/validatorRegistry.algo.ts:403","pc":[1341,1342,1343]},{"teal":1513,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1344,1345]},{"teal":1514,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1346,1347]},{"teal":1515,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1348]},{"teal":1516,"source":"contracts/validatorRegistry.algo.ts:404","pc":[1349]},{"teal":1520,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1350,1351,1352]},{"teal":1521,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1353,1354]},{"teal":1522,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1355]},{"teal":1523,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1356,1357]},{"teal":1524,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1358]},{"teal":1525,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1359]},{"teal":1526,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1360,1361]},{"teal":1527,"source":"contracts/validatorRegistry.algo.ts:405","pc":[1362]},{"teal":1528,"source":"contracts/validatorRegistry.algo.ts:402","pc":[1363]},{"teal":1533,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1364,1365,1366]},{"teal":1534,"source":"contracts/validatorRegistry.algo.ts:418","pc":[1367]},{"teal":1537,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1368,1369,1370]},{"teal":1538,"source":"contracts/validatorRegistry.algo.ts:417","pc":[1371]},{"teal":1541,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1372,1373,1374]},{"teal":1542,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1375]},{"teal":1543,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1376]},{"teal":1544,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1377,1378]},{"teal":1545,"source":"contracts/validatorRegistry.algo.ts:416","pc":[1379]},{"teal":1548,"source":"contracts/validatorRegistry.algo.ts:416","errorMessage":"argument 2 (EntryGatingAssets) for changeValidatorRewardInfo must be a uint64[4]","pc":[1380]},{"teal":1551,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1381,1382,1383]},{"teal":1552,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1384]},{"teal":1553,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1385]},{"teal":1554,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1386,1387]},{"teal":1555,"source":"contracts/validatorRegistry.algo.ts:415","pc":[1388]},{"teal":1558,"source":"contracts/validatorRegistry.algo.ts:415","errorMessage":"argument 3 (EntryGatingAddress) for changeValidatorRewardInfo must be a address","pc":[1389]},{"teal":1561,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1390,1391,1392]},{"teal":1562,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1393]},{"teal":1563,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1394]},{"teal":1564,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1395]},{"teal":1565,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1396]},{"teal":1568,"source":"contracts/validatorRegistry.algo.ts:414","errorMessage":"argument 4 (EntryGatingType) for changeValidatorRewardInfo must be a uint8","pc":[1397]},{"teal":1569,"source":"contracts/validatorRegistry.algo.ts:414","pc":[1398]},{"teal":1572,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1399,1400,1401]},{"teal":1573,"source":"contracts/validatorRegistry.algo.ts:413","pc":[1402]},{"teal":1576,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1403,1404,1405]},{"teal":1577,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1406]},{"teal":1578,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1407]},{"teal":1585,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1408,1409,1410]},{"teal":1589,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1411,1412]},{"teal":1590,"source":"contracts/validatorRegistry.algo.ts:420","pc":[1413,1414,1415]},{"teal":1597,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1416,1417]},{"teal":1598,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1418]},{"teal":1599,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1419]},{"teal":1600,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1420]},{"teal":1601,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1421,1422,1423]},{"teal":1602,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1424,1425]},{"teal":1603,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1426,1427]},{"teal":1604,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1428]},{"teal":1605,"source":"contracts/validatorRegistry.algo.ts:423","pc":[1429]},{"teal":1609,"source":"contracts/validatorRegistry.algo.ts:422","errorMessage":"invalid Entry gating type","pc":[1430]},{"teal":1614,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1431,1432]},{"teal":1615,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1433]},{"teal":1616,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1434]},{"teal":1617,"source":"contracts/validatorRegistry.algo.ts:426","pc":[1435,1436,1437]},{"teal":1622,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1438,1439]},{"teal":1623,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1440,1441]},{"teal":1624,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1442]},{"teal":1625,"source":"contracts/validatorRegistry.algo.ts:427","pc":[1443]},{"teal":1632,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1444,1445]},{"teal":1633,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1446,1447]},{"teal":1634,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1448]},{"teal":1635,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1449]},{"teal":1636,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1450,1451,1452]},{"teal":1637,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1453,1454]},{"teal":1638,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1455,1456]},{"teal":1639,"source":"contracts/validatorRegistry.algo.ts:431","pc":[1457]},{"teal":1640,"source":"contracts/validatorRegistry.algo.ts:430","pc":[1458]},{"teal":1643,"source":"contracts/validatorRegistry.algo.ts:429","pc":[1459,1460,1461]},{"teal":1648,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1462,1463]},{"teal":1649,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1464,1465,1466]},{"teal":1650,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1467]},{"teal":1651,"source":"contracts/validatorRegistry.algo.ts:433","pc":[1468,1469,1470]},{"teal":1654,"source":"contracts/validatorRegistry.algo.ts:433","errorMessage":"provided NFD App id for gating must be valid NFD","pc":[1471]},{"teal":1659,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1472,1473]},{"teal":1660,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1474,1475]},{"teal":1661,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1476]},{"teal":1662,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1477,1478,1479]},{"teal":1663,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1480]},{"teal":1664,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1481,1482]},{"teal":1665,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1483]},{"teal":1666,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1484]},{"teal":1667,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1485,1486]},{"teal":1668,"source":"contracts/validatorRegistry.algo.ts:435","pc":[1487]},{"teal":1672,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1488,1489]},{"teal":1673,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1490,1491]},{"teal":1674,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1492]},{"teal":1675,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1493,1494]},{"teal":1676,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1495]},{"teal":1677,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1496]},{"teal":1678,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1497,1498]},{"teal":1679,"source":"contracts/validatorRegistry.algo.ts:436","pc":[1499]},{"teal":1683,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1500,1501]},{"teal":1684,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1502,1503]},{"teal":1685,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1504]},{"teal":1686,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1505,1506]},{"teal":1687,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1507]},{"teal":1688,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1508]},{"teal":1689,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1509,1510]},{"teal":1690,"source":"contracts/validatorRegistry.algo.ts:437","pc":[1511]},{"teal":1694,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1512,1513]},{"teal":1695,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1514,1515]},{"teal":1696,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1516]},{"teal":1697,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1517]},{"teal":1698,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1518,1519]},{"teal":1699,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1520]},{"teal":1700,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1521]},{"teal":1701,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1522,1523]},{"teal":1702,"source":"contracts/validatorRegistry.algo.ts:438","pc":[1524]},{"teal":1706,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1525,1526,1527]},{"teal":1707,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1528,1529]},{"teal":1708,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1530]},{"teal":1709,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1531]},{"teal":1710,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1532,1533]},{"teal":1711,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1534]},{"teal":1712,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1535]},{"teal":1713,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1536,1537]},{"teal":1714,"source":"contracts/validatorRegistry.algo.ts:439","pc":[1538]},{"teal":1715,"source":"contracts/validatorRegistry.algo.ts:412","pc":[1539]},{"teal":1720,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1540]},{"teal":1723,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1541,1542,1543]},{"teal":1724,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1544]},{"teal":1727,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1545,1546,1547]},{"teal":1728,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1548]},{"teal":1731,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1549,1550]},{"teal":1732,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1551]},{"teal":1733,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1552]},{"teal":1734,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1553]},{"teal":1735,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1554,1555]},{"teal":1736,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1556]},{"teal":1737,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1557]},{"teal":1740,"source":"contracts/validatorRegistry.algo.ts:453","errorMessage":"argument 2 (mbrPayment) for addPool must be a pay transaction","pc":[1558]},{"teal":1743,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1559,1560,1561]},{"teal":1744,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1562]},{"teal":1745,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1563]},{"teal":1746,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1564]},{"teal":1747,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1565]},{"teal":1760,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1566,1567,1568]},{"teal":1763,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1569]},{"teal":1764,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1570]},{"teal":1768,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1571,1572]},{"teal":1769,"source":"contracts/validatorRegistry.algo.ts:454","pc":[1573,1574,1575]},{"teal":1774,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1576,1577]},{"teal":1775,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1578,1579]},{"teal":1776,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1580,1581]},{"teal":1777,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1582]},{"teal":1780,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1583]},{"teal":1783,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1584,1585]},{"teal":1784,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1586,1587]},{"teal":1785,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1588,1589,1590]},{"teal":1786,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1591,1592,1593]},{"teal":1787,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1594]},{"teal":1788,"source":"contracts/validatorRegistry.algo.ts:457","pc":[1595]},{"teal":1791,"source":"contracts/validatorRegistry.algo.ts:457","errorMessage":"transaction verification failed: {\"txn\":\"mbrPayment\",\"field\":\"amount\",\"expected\":\"this.getMbrAmounts().addPoolMbr\"}","pc":[1596]},{"teal":1795,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1597]},{"teal":1796,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1598,1599]},{"teal":1797,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1600]},{"teal":1798,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1601]},{"teal":1799,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1602]},{"teal":1800,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1603]},{"teal":1801,"source":"contracts/validatorRegistry.algo.ts:459","pc":[1604]},{"teal":1804,"source":"contracts/validatorRegistry.algo.ts:459","errorMessage":"specified validator id isn't valid","pc":[1605]},{"teal":1808,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1606,1607]},{"teal":1809,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1608,1609]},{"teal":1810,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1610]},{"teal":1811,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1611,1612]},{"teal":1812,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1613]},{"teal":1813,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1614]},{"teal":1814,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1615,1616]},{"teal":1815,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1617]},{"teal":1816,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1618]},{"teal":1817,"source":"contracts/validatorRegistry.algo.ts:461","pc":[1619,1620]},{"teal":1822,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1621,1622]},{"teal":1823,"source":"contracts/constants.algo.ts:30","pc":[1623]},{"teal":1824,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1624]},{"teal":1825,"source":"contracts/validatorRegistry.algo.ts:462","pc":[1625,1626,1627]},{"teal":1829,"source":"contracts/validatorRegistry.algo.ts:463","errorMessage":"already at max pool size","pc":[1628]},{"teal":1834,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1629,1630]},{"teal":1835,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1631]},{"teal":1836,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1632]},{"teal":1837,"source":"contracts/validatorRegistry.algo.ts:465","pc":[1633,1634]},{"teal":1859,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1635]},{"teal":1860,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1636,1637]},{"teal":1861,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1638,1639]},{"teal":1865,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1640]},{"teal":1866,"source":"contracts/validatorRegistry.algo.ts:469","pc":[1641,1642]},{"teal":1873,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1643,1644]},{"teal":1874,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1645]},{"teal":1875,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1646,1647]},{"teal":1876,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1648]},{"teal":1877,"source":"contracts/validatorRegistry.algo.ts:471","pc":[1649,1650]},{"teal":1878,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1651,1652]},{"teal":1879,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1653,1654]},{"teal":1880,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1655,1656]},{"teal":1881,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1657]},{"teal":1884,"source":"contracts/validatorRegistry.algo.ts:472","errorMessage":"box value does not exist: this.stakingPoolApprovalProgram.size","pc":[1658]},{"teal":1885,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1659,1660]},{"teal":1886,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1661]},{"teal":1887,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1662]},{"teal":1888,"source":"contracts/validatorRegistry.algo.ts:472","pc":[1663,1664]},{"teal":1892,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1665,1666,1667]},{"teal":1893,"source":"contracts/validatorRegistry.algo.ts:474","pc":[1668,1669]},{"teal":1897,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1670,1671]},{"teal":1898,"source":"contracts/validatorRegistry.algo.ts:475","pc":[1672,1673]},{"teal":1902,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1674,1675]},{"teal":1903,"source":"contracts/validatorRegistry.algo.ts:476","pc":[1676,1677]},{"teal":1907,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1678,1679]},{"teal":1908,"source":"contracts/validatorRegistry.algo.ts:477","pc":[1680,1681]},{"teal":1919,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1682,1683,1684,1685,1686,1687]},{"teal":1920,"source":"contracts/validatorRegistry.algo.ts:480","pc":[1688,1689]},{"teal":1921,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1690,1691,1692]},{"teal":1922,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1693]},{"teal":1923,"source":"contracts/validatorRegistry.algo.ts:481","pc":[1694,1695]},{"teal":1924,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1696,1697]},{"teal":1925,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1698]},{"teal":1926,"source":"contracts/validatorRegistry.algo.ts:482","pc":[1699,1700]},{"teal":1927,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1701,1702]},{"teal":1928,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1703]},{"teal":1929,"source":"contracts/validatorRegistry.algo.ts:483","pc":[1704,1705]},{"teal":1930,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1706,1707]},{"teal":1931,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1708]},{"teal":1932,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1709]},{"teal":1933,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1710,1711]},{"teal":1934,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1712]},{"teal":1935,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1713]},{"teal":1936,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1714,1715]},{"teal":1937,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1716]},{"teal":1938,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1717]},{"teal":1939,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1718]},{"teal":1940,"source":"contracts/validatorRegistry.algo.ts:484","pc":[1719,1720]},{"teal":1943,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1721]},{"teal":1944,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1722,1723]},{"teal":1947,"source":"contracts/validatorRegistry.algo.ts:468","pc":[1724]},{"teal":1951,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1725,1726]},{"teal":1952,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1727,1728]},{"teal":1953,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1729]},{"teal":1954,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1730,1731,1732]},{"teal":1955,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1733]},{"teal":1956,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1734,1735]},{"teal":1957,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1736]},{"teal":1958,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1737]},{"teal":1959,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1738,1739]},{"teal":1960,"source":"contracts/validatorRegistry.algo.ts:488","pc":[1740]},{"teal":1964,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1741,1742]},{"teal":1965,"source":"contracts/validatorRegistry.algo.ts:491","pc":[1743,1744]},{"teal":1969,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1745,1746]},{"teal":1970,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1747,1748]},{"teal":1971,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1749]},{"teal":1972,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1750]},{"teal":1973,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1751,1752]},{"teal":1974,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1753]},{"teal":1975,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1754]},{"teal":1976,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1755]},{"teal":1977,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1756]},{"teal":1978,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1757,1758]},{"teal":1979,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1759]},{"teal":1980,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1760]},{"teal":1981,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1761,1762]},{"teal":1982,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1763]},{"teal":1983,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1764]},{"teal":1984,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1765,1766]},{"teal":1985,"source":"contracts/validatorRegistry.algo.ts:492","pc":[1767]},{"teal":1989,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1768,1769]},{"teal":1990,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1770,1771]},{"teal":1991,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1772,1773]},{"teal":1992,"source":"contracts/validatorRegistry.algo.ts:493","pc":[1774,1775,1776]},{"teal":2000,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1777,1778,1779,1780,1781,1782]},{"teal":2001,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1783,1784]},{"teal":2002,"source":"contracts/validatorRegistry.algo.ts:496","pc":[1785]},{"teal":2003,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1786,1787]},{"teal":2004,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1788]},{"teal":2005,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1789]},{"teal":2006,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1790]},{"teal":2007,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1791,1792]},{"teal":2008,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1793]},{"teal":2011,"source":"contracts/validatorRegistry.algo.ts:497","errorMessage":"numPools as uint16 overflowed 16 bits","pc":[1794]},{"teal":2012,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1795,1796,1797]},{"teal":2013,"source":"contracts/validatorRegistry.algo.ts:497","pc":[1798]},{"teal":2014,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1799,1800]},{"teal":2015,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1801]},{"teal":2016,"source":"contracts/validatorRegistry.algo.ts:498","pc":[1802]},{"teal":2017,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1803]},{"teal":2018,"source":"contracts/validatorRegistry.algo.ts:495","pc":[1804]},{"teal":2022,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1805,1806]},{"teal":2023,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1807]},{"teal":2024,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1808,1809]},{"teal":2025,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1810]},{"teal":2026,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1811]},{"teal":2027,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1812,1813]},{"teal":2028,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1814]},{"teal":2029,"source":"contracts/validatorRegistry.algo.ts:501","pc":[1815]},{"teal":2032,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1816,1817]},{"teal":2035,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1818,1819]},{"teal":2036,"source":"contracts/validatorRegistry.algo.ts:453","pc":[1820]},{"teal":2041,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1821]},{"teal":2044,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1822,1823,1824]},{"teal":2045,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1825]},{"teal":2048,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1826,1827,1828]},{"teal":2049,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1829]},{"teal":2052,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1830,1831]},{"teal":2053,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1832]},{"teal":2054,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1833]},{"teal":2055,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1834]},{"teal":2056,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1835,1836]},{"teal":2057,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1837]},{"teal":2058,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1838]},{"teal":2061,"source":"contracts/validatorRegistry.algo.ts:513","errorMessage":"argument 2 (stakedAmountPayment) for addStake must be a pay transaction","pc":[1839]},{"teal":2064,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1840,1841,1842]},{"teal":2065,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1843]},{"teal":2066,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1844]},{"teal":2067,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1845]},{"teal":2068,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1846]},{"teal":2080,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1847,1848,1849]},{"teal":2083,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1850]},{"teal":2084,"source":"contracts/validatorRegistry.algo.ts:513","pc":[1851,1852]},{"teal":2088,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1853]},{"teal":2089,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1854,1855]},{"teal":2090,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1856]},{"teal":2091,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1857]},{"teal":2092,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1858]},{"teal":2093,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1859]},{"teal":2094,"source":"contracts/validatorRegistry.algo.ts:514","pc":[1860]},{"teal":2097,"source":"contracts/validatorRegistry.algo.ts:514","errorMessage":"specified validator id isn't valid","pc":[1861]},{"teal":2102,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1862,1863]},{"teal":2103,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1864]},{"teal":2104,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1865]},{"teal":2105,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1866,1867]},{"teal":2106,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1868]},{"teal":2107,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1869]},{"teal":2108,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1870,1871]},{"teal":2109,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1872]},{"teal":2110,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1873]},{"teal":2111,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1874]},{"teal":2112,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1875]},{"teal":2113,"source":"contracts/validatorRegistry.algo.ts:517","pc":[1876,1877,1878]},{"teal":2121,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1879,1880]},{"teal":2122,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1881]},{"teal":2123,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1882]},{"teal":2124,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1883,1884]},{"teal":2125,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1885]},{"teal":2126,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1886]},{"teal":2127,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1887,1888]},{"teal":2128,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1889]},{"teal":2129,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1890]},{"teal":2130,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1891,1892]},{"teal":2131,"source":"contracts/validatorRegistry.algo.ts:520","pc":[1893]},{"teal":2134,"source":"contracts/validatorRegistry.algo.ts:519","errorMessage":"can't stake with a validator that is past its sunsetting time","pc":[1894]},{"teal":2139,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1895,1896]},{"teal":2140,"source":"contracts/validatorRegistry.algo.ts:525","pc":[1897,1898]},{"teal":2148,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1899,1900]},{"teal":2149,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1901,1902]},{"teal":2150,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1903,1904]},{"teal":2151,"source":"contracts/validatorRegistry.algo.ts:530","pc":[1905]},{"teal":2154,"source":"contracts/validatorRegistry.algo.ts:530","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"sender\",\"expected\":\"staker\"}","pc":[1906]},{"teal":2157,"source":"contracts/validatorRegistry.algo.ts:529","pc":[1907,1908]},{"teal":2158,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1909,1910]},{"teal":2159,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1911,1912]},{"teal":2160,"source":"contracts/validatorRegistry.algo.ts:531","pc":[1913]},{"teal":2163,"source":"contracts/validatorRegistry.algo.ts:531","errorMessage":"transaction verification failed: {\"txn\":\"stakedAmountPayment\",\"field\":\"receiver\",\"expected\":\"this.app.address\"}","pc":[1914]},{"teal":2167,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1915,1916]},{"teal":2168,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1917,1918]},{"teal":2169,"source":"contracts/validatorRegistry.algo.ts:537","pc":[1919,1920,1921]},{"teal":2173,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1922,1923]},{"teal":2174,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1924,1925]},{"teal":2175,"source":"contracts/validatorRegistry.algo.ts:539","pc":[1926,1927]},{"teal":2179,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1928]},{"teal":2180,"source":"contracts/validatorRegistry.algo.ts:540","pc":[1929,1930]},{"teal":2185,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1931,1932]},{"teal":2186,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1933,1934,1935]},{"teal":2187,"source":"contracts/validatorRegistry.algo.ts:542","pc":[1936,1937,1938]},{"teal":2192,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1939,1940,1941]},{"teal":2193,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1942,1943,1944]},{"teal":2194,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1945]},{"teal":2195,"source":"contracts/validatorRegistry.algo.ts:545","pc":[1946,1947]},{"teal":2199,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1948,1949]},{"teal":2200,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1950,1951]},{"teal":2201,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1952]},{"teal":2202,"source":"contracts/validatorRegistry.algo.ts:546","pc":[1953,1954]},{"teal":2206,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1955]},{"teal":2207,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1956,1957]},{"teal":2208,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1958]},{"teal":2209,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1959,1960,1961]},{"teal":2210,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1962]},{"teal":2211,"source":"contracts/validatorRegistry.algo.ts:547","pc":[1963]},{"teal":2219,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1964,1965]},{"teal":2220,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1966]},{"teal":2221,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1967]},{"teal":2222,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1968,1969]},{"teal":2223,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1970]},{"teal":2224,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1971]},{"teal":2225,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1972,1973]},{"teal":2226,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1974]},{"teal":2227,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1975]},{"teal":2228,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1976,1977]},{"teal":2229,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1978]},{"teal":2230,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1979,1980,1981]},{"teal":2231,"source":"contracts/validatorRegistry.algo.ts:552","pc":[1982]},{"teal":2234,"source":"contracts/validatorRegistry.algo.ts:551","errorMessage":"total staked for all of a validators pools may not exceed hard cap","pc":[1983]},{"teal":2238,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1984,1985]},{"teal":2239,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1986,1987]},{"teal":2240,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1988,1989]},{"teal":2241,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1990,1991,1992]},{"teal":2242,"source":"contracts/validatorRegistry.algo.ts:558","pc":[1993,1994]},{"teal":2248,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1995,1996]},{"teal":2249,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1997,1998]},{"teal":2250,"source":"contracts/validatorRegistry.algo.ts:560","pc":[1999,2000]},{"teal":2251,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2001,2002]},{"teal":2252,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2003]},{"teal":2253,"source":"contracts/validatorRegistry.algo.ts:560","pc":[2004,2005]},{"teal":2257,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2006,2007]},{"teal":2258,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2008,2009]},{"teal":2259,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2010,2011]},{"teal":2260,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2012,2013,2014]},{"teal":2261,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2015]},{"teal":2262,"source":"contracts/validatorRegistry.algo.ts:561","pc":[2016,2017]},{"teal":2267,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2018,2019]},{"teal":2268,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2020,2021]},{"teal":2269,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2022,2023]},{"teal":2270,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2024,2025,2026]},{"teal":2271,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2027]},{"teal":2272,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2028]},{"teal":2273,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2029]},{"teal":2274,"source":"contracts/validatorRegistry.algo.ts:562","pc":[2030,2031,2032]},{"teal":2278,"source":"contracts/validatorRegistry.algo.ts:563","errorMessage":"No pool available with free stake. Validator needs to add another pool","pc":[2033]},{"teal":2283,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2034,2035]},{"teal":2284,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2036,2037]},{"teal":2285,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2038,2039]},{"teal":2286,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2040,2041,2042]},{"teal":2287,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2043,2044]},{"teal":2288,"source":"contracts/validatorRegistry.algo.ts:567","pc":[2045,2046,2047]},{"teal":2298,"source":"contracts/validatorRegistry.algo.ts:575","pc":[2048,2049]},{"teal":2299,"source":"contracts/validatorRegistry.algo.ts:574","pc":[2050,2051]},{"teal":2300,"source":"contracts/validatorRegistry.algo.ts:573","pc":[2052,2053]},{"teal":2301,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2054,2055]},{"teal":2302,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2056,2057]},{"teal":2303,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2058,2059]},{"teal":2304,"source":"contracts/validatorRegistry.algo.ts:572","pc":[2060,2061,2062]},{"teal":2305,"source":"contracts/validatorRegistry.algo.ts:571","pc":[2063,2064]},{"teal":2306,"source":"contracts/validatorRegistry.algo.ts:570","pc":[2065,2066,2067]},{"teal":2316,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2068,2069,2070,2071,2072,2073]},{"teal":2317,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2074,2075]},{"teal":2318,"source":"contracts/validatorRegistry.algo.ts:578","pc":[2076]},{"teal":2319,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2077,2078]},{"teal":2320,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2079,2080]},{"teal":2321,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2081,2082]},{"teal":2322,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2083,2084,2085]},{"teal":2323,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2086]},{"teal":2324,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2087]},{"teal":2325,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2088]},{"teal":2326,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2089]},{"teal":2327,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2090,2091]},{"teal":2328,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2092]},{"teal":2331,"source":"contracts/validatorRegistry.algo.ts:579","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2093]},{"teal":2332,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2094,2095,2096]},{"teal":2333,"source":"contracts/validatorRegistry.algo.ts:579","pc":[2097]},{"teal":2334,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2098,2099]},{"teal":2335,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2100,2101]},{"teal":2336,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2102,2103]},{"teal":2337,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2104,2105,2106]},{"teal":2338,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2107]},{"teal":2339,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2108]},{"teal":2340,"source":"contracts/validatorRegistry.algo.ts:580","pc":[2109]},{"teal":2341,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2110,2111]},{"teal":2342,"source":"contracts/validatorRegistry.algo.ts:582","pc":[2112]},{"teal":2343,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2113,2114]},{"teal":2344,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2115]},{"teal":2345,"source":"contracts/validatorRegistry.algo.ts:581","pc":[2116]},{"teal":2346,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2117]},{"teal":2347,"source":"contracts/validatorRegistry.algo.ts:577","pc":[2118]},{"teal":2351,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2119,2120]},{"teal":2352,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2121,2122]},{"teal":2353,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2123,2124]},{"teal":2354,"source":"contracts/validatorRegistry.algo.ts:585","pc":[2125,2126,2127]},{"teal":2357,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2128,2129]},{"teal":2360,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2130,2131]},{"teal":2361,"source":"contracts/validatorRegistry.algo.ts:513","pc":[2132]},{"teal":2366,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2133]},{"teal":2369,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2134,2135,2136]},{"teal":2370,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2137]},{"teal":2373,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2138,2139,2140]},{"teal":2374,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2141]},{"teal":2375,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2142]},{"teal":2376,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2143]},{"teal":2377,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2144]},{"teal":2395,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2145,2146,2147]},{"teal":2398,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2148]},{"teal":2399,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2149,2150]},{"teal":2403,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2151,2152]},{"teal":2404,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2153]},{"teal":2405,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2154]},{"teal":2406,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2155,2156]},{"teal":2407,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2157]},{"teal":2408,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2158]},{"teal":2409,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2159,2160]},{"teal":2410,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2161]},{"teal":2411,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2162]},{"teal":2412,"source":"contracts/validatorRegistry.algo.ts:605","pc":[2163,2164]},{"teal":2416,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2165,2166]},{"teal":2417,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2167]},{"teal":2418,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2168]},{"teal":2419,"source":"contracts/validatorRegistry.algo.ts:606","pc":[2169]},{"teal":2424,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2170,2171]},{"teal":2425,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2172,2173]},{"teal":2426,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2174,2175]},{"teal":2427,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2176]},{"teal":2428,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2177]},{"teal":2429,"source":"contracts/validatorRegistry.algo.ts:608","pc":[2178,2179,2180]},{"teal":2434,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2181,2182]},{"teal":2435,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2183,2184]},{"teal":2436,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2185]},{"teal":2437,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2186,2187]},{"teal":2438,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2188]},{"teal":2439,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2189]},{"teal":2440,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2190,2191]},{"teal":2441,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2192]},{"teal":2442,"source":"contracts/validatorRegistry.algo.ts:609","pc":[2193,2194,2195]},{"teal":2447,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2196,2197]},{"teal":2448,"source":"contracts/validatorRegistry.algo.ts:615","pc":[2198,2199]},{"teal":2452,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2200,2201]},{"teal":2453,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2202]},{"teal":2454,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2203]},{"teal":2455,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2204,2205]},{"teal":2456,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2206]},{"teal":2457,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2207]},{"teal":2458,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2208,2209]},{"teal":2459,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2210]},{"teal":2460,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2211]},{"teal":2461,"source":"contracts/validatorRegistry.algo.ts:616","pc":[2212,2213]},{"teal":2466,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2214,2215]},{"teal":2467,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2216]},{"teal":2468,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2217]},{"teal":2469,"source":"contracts/validatorRegistry.algo.ts:617","pc":[2218,2219,2220]},{"teal":2475,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2221,2222]},{"teal":2476,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2223,2224,2225,2226,2227,2228,2229,2230,2231,2232,2233,2234]},{"teal":2477,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2235]},{"teal":2480,"source":"contracts/validatorRegistry.algo.ts:619","errorMessage":"global state value does not exist: AppID.fromUint64(pool1AppID).globalState('lastPayout')","pc":[2236]},{"teal":2481,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2237,2238]},{"teal":2482,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2239]},{"teal":2483,"source":"contracts/validatorRegistry.algo.ts:619","pc":[2240,2241,2242]},{"teal":2488,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2243,2244]},{"teal":2489,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2245,2246]},{"teal":2490,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2247]},{"teal":2491,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2248,2249]},{"teal":2492,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2250]},{"teal":2493,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2251]},{"teal":2494,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2252,2253]},{"teal":2495,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2254]},{"teal":2496,"source":"contracts/validatorRegistry.algo.ts:620","pc":[2255,2256,2257]},{"teal":2501,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2258,2259,2260]},{"teal":2502,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2261,2262]},{"teal":2503,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2263]},{"teal":2504,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2264,2265]},{"teal":2505,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2266]},{"teal":2506,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2267]},{"teal":2507,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2268,2269]},{"teal":2508,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2270]},{"teal":2509,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2271]},{"teal":2510,"source":"contracts/validatorRegistry.algo.ts:622","pc":[2272,2273]},{"teal":2514,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2274,2275]},{"teal":2515,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2276,2277]},{"teal":2516,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2278,2279]},{"teal":2517,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2280]},{"teal":2518,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2281]},{"teal":2519,"source":"contracts/validatorRegistry.algo.ts:623","pc":[2282,2283]},{"teal":2524,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2284,2285]},{"teal":2525,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2286,2287]},{"teal":2526,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2288,2289]},{"teal":2527,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2290]},{"teal":2528,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2291]},{"teal":2529,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2292,2293]},{"teal":2530,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2294]},{"teal":2531,"source":"contracts/validatorRegistry.algo.ts:625","pc":[2295,2296,2297]},{"teal":2536,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2298,2299]},{"teal":2537,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2300,2301]},{"teal":2538,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2302]},{"teal":2539,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2303,2304]},{"teal":2540,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2305]},{"teal":2541,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2306]},{"teal":2542,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2307,2308]},{"teal":2543,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2309]},{"teal":2544,"source":"contracts/validatorRegistry.algo.ts:626","pc":[2310,2311,2312]},{"teal":2551,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2313,2314]},{"teal":2552,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2315,2316]},{"teal":2553,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2317]},{"teal":2554,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2318]},{"teal":2555,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2319,2320]},{"teal":2556,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2321]},{"teal":2557,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2322]},{"teal":2558,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2323,2324]},{"teal":2559,"source":"contracts/validatorRegistry.algo.ts:629","pc":[2325]},{"teal":2563,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2326,2327]},{"teal":2564,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2328,2329]},{"teal":2565,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2330]},{"teal":2566,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2331,2332]},{"teal":2567,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2333]},{"teal":2568,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2334]},{"teal":2569,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2335,2336]},{"teal":2570,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2337]},{"teal":2571,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2338]},{"teal":2572,"source":"contracts/validatorRegistry.algo.ts:631","pc":[2339,2340]},{"teal":2576,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2341,2342]},{"teal":2577,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2343]},{"teal":2578,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2344]},{"teal":2579,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2345,2346]},{"teal":2580,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2347]},{"teal":2581,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2348]},{"teal":2582,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2349,2350]},{"teal":2583,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2351]},{"teal":2584,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2352]},{"teal":2585,"source":"contracts/validatorRegistry.algo.ts:632","pc":[2353,2354]},{"teal":2589,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2355]},{"teal":2590,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2356,2357]},{"teal":2595,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2358,2359]},{"teal":2596,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2360,2361]},{"teal":2597,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2362]},{"teal":2598,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2363,2364,2365]},{"teal":2605,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2366,2367]},{"teal":2606,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2368,2369]},{"teal":2607,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2370,2371]},{"teal":2608,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2372]},{"teal":2609,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2373]},{"teal":2610,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2374,2375]},{"teal":2611,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2376]},{"teal":2612,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2377]},{"teal":2613,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2378]},{"teal":2614,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2379,2380]},{"teal":2615,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2381]},{"teal":2616,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2382]},{"teal":2617,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2383,2384]},{"teal":2618,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2385]},{"teal":2619,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2386]},{"teal":2620,"source":"contracts/validatorRegistry.algo.ts:639","pc":[2387,2388,2389,2390]},{"teal":2621,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2391]},{"teal":2622,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2392]},{"teal":2623,"source":"contracts/validatorRegistry.algo.ts:640","pc":[2393,2394]},{"teal":2624,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2395]},{"teal":2625,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2396]},{"teal":2626,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2397]},{"teal":2627,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2398]},{"teal":2628,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2399]},{"teal":2631,"source":"contracts/validatorRegistry.algo.ts:638","errorMessage":"wideRatio failed","pc":[2400]},{"teal":2632,"source":"contracts/validatorRegistry.algo.ts:638","pc":[2401,2402]},{"teal":2636,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2403,2404]},{"teal":2637,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2405,2406]},{"teal":2638,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2407]},{"teal":2639,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2408]},{"teal":2640,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2409]},{"teal":2641,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2410,2411]},{"teal":2642,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2412]},{"teal":2643,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2413]},{"teal":2644,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2414,2415]},{"teal":2645,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2416]},{"teal":2646,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2417]},{"teal":2647,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2418,2419]},{"teal":2648,"source":"contracts/validatorRegistry.algo.ts:642","pc":[2420]},{"teal":2653,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2421,2422]},{"teal":2654,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2423]},{"teal":2655,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2424]},{"teal":2656,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2425,2426]},{"teal":2657,"source":"contracts/validatorRegistry.algo.ts:633","pc":[2427,2428,2429]},{"teal":2662,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2430,2431]},{"teal":2663,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2432,2433]},{"teal":2664,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2434]},{"teal":2665,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2435,2436]},{"teal":2666,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2437]},{"teal":2667,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2438]},{"teal":2668,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2439,2440]},{"teal":2669,"source":"contracts/validatorRegistry.algo.ts:644","pc":[2441]},{"teal":2673,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2442,2443]},{"teal":2676,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2444,2445]},{"teal":2677,"source":"contracts/validatorRegistry.algo.ts:603","pc":[2446]},{"teal":2682,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2447,2448,2449]},{"teal":2683,"source":"contracts/validatorRegistry.algo.ts:663","pc":[2450]},{"teal":2686,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2451,2452,2453]},{"teal":2687,"source":"contracts/validatorRegistry.algo.ts:662","pc":[2454]},{"teal":2690,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2455,2456,2457]},{"teal":2691,"source":"contracts/validatorRegistry.algo.ts:661","pc":[2458]},{"teal":2694,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2459,2460,2461]},{"teal":2695,"source":"contracts/validatorRegistry.algo.ts:660","pc":[2462]},{"teal":2698,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2463,2464,2465]},{"teal":2699,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2466]},{"teal":2700,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2467]},{"teal":2701,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2468]},{"teal":2702,"source":"contracts/validatorRegistry.algo.ts:659","pc":[2469]},{"teal":2705,"source":"contracts/validatorRegistry.algo.ts:659","errorMessage":"argument 4 (poolKey) for stakeUpdatedViaRewards must be a (uint64,uint64,uint64)","pc":[2470]},{"teal":2708,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2471,2472,2473]},{"teal":2709,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2474]},{"teal":2710,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2475]},{"teal":2724,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2476,2477,2478]},{"teal":2728,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2479,2480]},{"teal":2729,"source":"contracts/validatorRegistry.algo.ts:665","pc":[2481,2482,2483]},{"teal":2733,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2484,2485]},{"teal":2734,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2486,2487]},{"teal":2735,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2488,2489,2490]},{"teal":2736,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2491]},{"teal":2737,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2492]},{"teal":2738,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2493]},{"teal":2739,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2494,2495]},{"teal":2740,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2496]},{"teal":2741,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2497]},{"teal":2742,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2498,2499]},{"teal":2743,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2500]},{"teal":2744,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2501,2502]},{"teal":2745,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2503,2504]},{"teal":2746,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2505,2506,2507]},{"teal":2747,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2508]},{"teal":2748,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2509]},{"teal":2749,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2510]},{"teal":2750,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2511,2512]},{"teal":2751,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2513]},{"teal":2752,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2514]},{"teal":2753,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2515,2516]},{"teal":2754,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2517]},{"teal":2755,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2518]},{"teal":2756,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2519]},{"teal":2757,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2520,2521]},{"teal":2758,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2522,2523,2524]},{"teal":2759,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2525]},{"teal":2760,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2526]},{"teal":2761,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2527]},{"teal":2762,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2528,2529]},{"teal":2763,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2530]},{"teal":2764,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2531]},{"teal":2765,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2532,2533]},{"teal":2766,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2534]},{"teal":2767,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2535]},{"teal":2768,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2536]},{"teal":2769,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2537,2538]},{"teal":2770,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2539,2540,2541]},{"teal":2771,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2542]},{"teal":2772,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2543]},{"teal":2773,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2544]},{"teal":2774,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2545,2546]},{"teal":2775,"source":"contracts/validatorRegistry.algo.ts:668","pc":[2547]},{"teal":2779,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2548,2549]},{"teal":2780,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2550]},{"teal":2781,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2551]},{"teal":2782,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2552]},{"teal":2783,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2553,2554]},{"teal":2784,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2555,2556,2557]},{"teal":2785,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2558]},{"teal":2786,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2559]},{"teal":2787,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2560]},{"teal":2788,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2561,2562]},{"teal":2789,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2563]},{"teal":2790,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2564]},{"teal":2791,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2565,2566]},{"teal":2792,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2567]},{"teal":2793,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2568]},{"teal":2794,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2569]},{"teal":2795,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2570,2571]},{"teal":2796,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2572,2573,2574]},{"teal":2797,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2575]},{"teal":2798,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2576]},{"teal":2799,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2577]},{"teal":2800,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2578,2579]},{"teal":2801,"source":"contracts/validatorRegistry.algo.ts:669","pc":[2580]},{"teal":2805,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2581,2582]},{"teal":2806,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2583]},{"teal":2807,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2584]},{"teal":2808,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2585]},{"teal":2809,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2586,2587]},{"teal":2810,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2588,2589,2590]},{"teal":2811,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2591]},{"teal":2812,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2592]},{"teal":2813,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2593]},{"teal":2814,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2594,2595]},{"teal":2815,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2596]},{"teal":2816,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2597]},{"teal":2817,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2598,2599]},{"teal":2818,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2600]},{"teal":2819,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2601]},{"teal":2820,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2602]},{"teal":2821,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2603,2604]},{"teal":2822,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2605,2606,2607]},{"teal":2823,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2608]},{"teal":2824,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2609]},{"teal":2825,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2610]},{"teal":2826,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2611,2612]},{"teal":2827,"source":"contracts/validatorRegistry.algo.ts:670","pc":[2613]},{"teal":2831,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2614,2615]},{"teal":2832,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2616]},{"teal":2833,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2617,2618]},{"teal":2834,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2619]},{"teal":2835,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2620,2621]},{"teal":2836,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2622]},{"teal":2837,"source":"contracts/validatorRegistry.algo.ts:672","pc":[2623]},{"teal":2841,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2624,2625]},{"teal":2842,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2626,2627,2628]},{"teal":2843,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2629]},{"teal":2844,"source":"contracts/validatorRegistry.algo.ts:675","pc":[2630,2631,2632]},{"teal":2856,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2633,2634,2635,2636,2637,2638]},{"teal":2857,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2639,2640]},{"teal":2858,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2641,2642,2643]},{"teal":2859,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2644]},{"teal":2860,"source":"contracts/validatorRegistry.algo.ts:678","pc":[2645]},{"teal":2861,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2646,2647]},{"teal":2862,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2648,2649,2650]},{"teal":2863,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2651]},{"teal":2864,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2652]},{"teal":2865,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2653]},{"teal":2866,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2654]},{"teal":2867,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2655,2656]},{"teal":2868,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2657]},{"teal":2871,"source":"contracts/validatorRegistry.algo.ts:679","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[2658]},{"teal":2872,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2659,2660,2661]},{"teal":2873,"source":"contracts/validatorRegistry.algo.ts:679","pc":[2662]},{"teal":2874,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2663,2664]},{"teal":2875,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2665,2666,2667]},{"teal":2876,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2668]},{"teal":2877,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2669]},{"teal":2878,"source":"contracts/validatorRegistry.algo.ts:680","pc":[2670]},{"teal":2879,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2671,2672]},{"teal":2880,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2673]},{"teal":2881,"source":"contracts/validatorRegistry.algo.ts:684","pc":[2674]},{"teal":2882,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2675,2676]},{"teal":2883,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2677]},{"teal":2884,"source":"contracts/validatorRegistry.algo.ts:683","pc":[2678]},{"teal":2885,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2679,2680]},{"teal":2886,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2681]},{"teal":2887,"source":"contracts/validatorRegistry.algo.ts:681","pc":[2682]},{"teal":2888,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2683,2684]},{"teal":2889,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2685]},{"teal":2890,"source":"contracts/validatorRegistry.algo.ts:682","pc":[2686]},{"teal":2891,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2687]},{"teal":2892,"source":"contracts/validatorRegistry.algo.ts:677","pc":[2688]},{"teal":2893,"source":"contracts/validatorRegistry.algo.ts:658","pc":[2689]},{"teal":2898,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2690,2691,2692]},{"teal":2899,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2693]},{"teal":2900,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2694]},{"teal":2901,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2695]},{"teal":2902,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2696]},{"teal":2905,"source":"contracts/validatorRegistry.algo.ts:705","errorMessage":"argument 0 (stakerRemoved) for stakeRemoved must be a bool","pc":[2697]},{"teal":2906,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2698]},{"teal":2907,"source":"contracts/validatorRegistry.algo.ts:705","pc":[2699]},{"teal":2910,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2700,2701,2702]},{"teal":2911,"source":"contracts/validatorRegistry.algo.ts:704","pc":[2703]},{"teal":2914,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2704,2705,2706]},{"teal":2915,"source":"contracts/validatorRegistry.algo.ts:703","pc":[2707]},{"teal":2918,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2708,2709,2710]},{"teal":2919,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2711]},{"teal":2920,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2712]},{"teal":2921,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2713,2714]},{"teal":2922,"source":"contracts/validatorRegistry.algo.ts:702","pc":[2715]},{"teal":2925,"source":"contracts/validatorRegistry.algo.ts:702","errorMessage":"argument 3 (staker) for stakeRemoved must be a address","pc":[2716]},{"teal":2928,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2717,2718,2719]},{"teal":2929,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2720]},{"teal":2930,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2721]},{"teal":2931,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2722]},{"teal":2932,"source":"contracts/validatorRegistry.algo.ts:701","pc":[2723]},{"teal":2935,"source":"contracts/validatorRegistry.algo.ts:701","errorMessage":"argument 4 (poolKey) for stakeRemoved must be a (uint64,uint64,uint64)","pc":[2724]},{"teal":2938,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2725,2726,2727]},{"teal":2939,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2728]},{"teal":2940,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2729]},{"teal":2955,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2730,2731,2732]},{"teal":2958,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2733]},{"teal":2959,"source":"contracts/validatorRegistry.algo.ts:700","pc":[2734,2735]},{"teal":2964,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2736,2737]},{"teal":2965,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2738,2739]},{"teal":2966,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2740]},{"teal":2967,"source":"contracts/validatorRegistry.algo.ts:707","pc":[2741,2742,2743]},{"teal":2972,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2744]},{"teal":2973,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2745,2746]},{"teal":2974,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2747,2748]},{"teal":2975,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2749]},{"teal":2976,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2750,2751]},{"teal":2977,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2752,2753]},{"teal":2978,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2754]},{"teal":2979,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2755,2756]},{"teal":2980,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2757,2758]},{"teal":2981,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2759,2760]},{"teal":2982,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2761,2762]},{"teal":2983,"source":"contracts/validatorRegistry.algo.ts:708","pc":[2763]},{"teal":2988,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2764,2765]},{"teal":2989,"source":"contracts/validatorRegistry.algo.ts:710","pc":[2766,2767,2768]},{"teal":2993,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2769,2770]},{"teal":2994,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2771]},{"teal":2995,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2772]},{"teal":2996,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2773]},{"teal":2997,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2774,2775,2776]},{"teal":2998,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2777,2778]},{"teal":2999,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2779]},{"teal":3000,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2780]},{"teal":3001,"source":"contracts/validatorRegistry.algo.ts:714","pc":[2781]},{"teal":3005,"source":"contracts/validatorRegistry.algo.ts:714","errorMessage":"should only be called if algo or reward was removed","pc":[2782]},{"teal":3009,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2783,2784]},{"teal":3010,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2785,2786]},{"teal":3011,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2787,2788,2789]},{"teal":3012,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2790]},{"teal":3013,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2791]},{"teal":3014,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2792]},{"teal":3015,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2793,2794]},{"teal":3016,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2795]},{"teal":3017,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2796]},{"teal":3018,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2797,2798]},{"teal":3019,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2799]},{"teal":3020,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2800,2801]},{"teal":3021,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2802,2803]},{"teal":3022,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2804,2805,2806]},{"teal":3023,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2807]},{"teal":3024,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2808]},{"teal":3025,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2809]},{"teal":3026,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2810,2811]},{"teal":3027,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2812]},{"teal":3028,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2813]},{"teal":3029,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2814,2815]},{"teal":3030,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2816]},{"teal":3031,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2817]},{"teal":3032,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2818]},{"teal":3033,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2819,2820]},{"teal":3034,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2821,2822,2823]},{"teal":3035,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2824]},{"teal":3036,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2825]},{"teal":3037,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2826]},{"teal":3038,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2827,2828]},{"teal":3039,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2829]},{"teal":3040,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2830]},{"teal":3041,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2831,2832]},{"teal":3042,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2833]},{"teal":3043,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2834]},{"teal":3044,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2835]},{"teal":3045,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2836,2837]},{"teal":3046,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2838,2839,2840]},{"teal":3047,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2841]},{"teal":3048,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2842]},{"teal":3049,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2843]},{"teal":3050,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2844,2845]},{"teal":3051,"source":"contracts/validatorRegistry.algo.ts:717","pc":[2846]},{"teal":3055,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2847,2848]},{"teal":3056,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2849]},{"teal":3057,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2850]},{"teal":3058,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2851]},{"teal":3059,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2852,2853]},{"teal":3060,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2854,2855,2856]},{"teal":3061,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2857]},{"teal":3062,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2858]},{"teal":3063,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2859]},{"teal":3064,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2860,2861]},{"teal":3065,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2862]},{"teal":3066,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2863]},{"teal":3067,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2864,2865]},{"teal":3068,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2866]},{"teal":3069,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2867]},{"teal":3070,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2868]},{"teal":3071,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2869,2870]},{"teal":3072,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2871,2872,2873]},{"teal":3073,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2874]},{"teal":3074,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2875]},{"teal":3075,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2876]},{"teal":3076,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2877,2878]},{"teal":3077,"source":"contracts/validatorRegistry.algo.ts:718","pc":[2879]},{"teal":3081,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2880,2881]},{"teal":3082,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2882]},{"teal":3083,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2883,2884]},{"teal":3084,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2885]},{"teal":3085,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2886,2887]},{"teal":3086,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2888]},{"teal":3087,"source":"contracts/validatorRegistry.algo.ts:719","pc":[2889]},{"teal":3092,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2890,2891]},{"teal":3093,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2892]},{"teal":3094,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2893]},{"teal":3095,"source":"contracts/validatorRegistry.algo.ts:721","pc":[2894,2895,2896]},{"teal":3100,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2897,2898]},{"teal":3101,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2899]},{"teal":3102,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2900]},{"teal":3103,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2901,2902]},{"teal":3104,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2903,2904,2905]},{"teal":3105,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2906]},{"teal":3106,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2907]},{"teal":3107,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2908]},{"teal":3108,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2909,2910]},{"teal":3109,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2911]},{"teal":3110,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2912]},{"teal":3111,"source":"contracts/validatorRegistry.algo.ts:722","pc":[2913,2914]},{"teal":3115,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2915,2916]},{"teal":3116,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2917]},{"teal":3117,"source":"contracts/validatorRegistry.algo.ts:723","pc":[2918]},{"teal":3120,"source":"contracts/validatorRegistry.algo.ts:723","errorMessage":"rewardRemoved can't be set if validator doesn't have reward token!","pc":[2919]},{"teal":3127,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2920,2921]},{"teal":3128,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2922]},{"teal":3129,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2923]},{"teal":3130,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2924,2925]},{"teal":3131,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2926,2927,2928]},{"teal":3132,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2929]},{"teal":3133,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2930]},{"teal":3134,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2931]},{"teal":3135,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2932,2933]},{"teal":3136,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2934]},{"teal":3137,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2935]},{"teal":3138,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2936,2937]},{"teal":3139,"source":"contracts/validatorRegistry.algo.ts:725","pc":[2938]},{"teal":3142,"source":"contracts/validatorRegistry.algo.ts:724","errorMessage":"reward being removed must be covered by hold back amount","pc":[2939]},{"teal":3146,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2940,2941]},{"teal":3147,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2942]},{"teal":3148,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2943]},{"teal":3149,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2944]},{"teal":3150,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2945,2946]},{"teal":3151,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2947,2948,2949]},{"teal":3152,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2950]},{"teal":3153,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2951]},{"teal":3154,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2952]},{"teal":3155,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2953,2954]},{"teal":3156,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2955]},{"teal":3157,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2956]},{"teal":3158,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2957,2958]},{"teal":3159,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2959]},{"teal":3160,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2960]},{"teal":3161,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2961]},{"teal":3162,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2962,2963]},{"teal":3163,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2964,2965,2966]},{"teal":3164,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2967]},{"teal":3165,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2968]},{"teal":3166,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2969]},{"teal":3167,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2970,2971]},{"teal":3168,"source":"contracts/validatorRegistry.algo.ts:730","pc":[2972]},{"teal":3173,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2973,2974]},{"teal":3174,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2975,2976,2977]},{"teal":3175,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2978]},{"teal":3176,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2979]},{"teal":3177,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2980]},{"teal":3178,"source":"contracts/validatorRegistry.algo.ts:735","pc":[2981,2982,2983]},{"teal":3186,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2984]},{"teal":3187,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2985,2986]},{"teal":3188,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2987,2988]},{"teal":3189,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2989,2990]},{"teal":3190,"source":"contracts/validatorRegistry.algo.ts:736","pc":[2991,2992]},{"teal":3194,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2993,2994]},{"teal":3195,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2995]},{"teal":3196,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2996]},{"teal":3197,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2997,2998]},{"teal":3198,"source":"contracts/validatorRegistry.algo.ts:737","pc":[2999,3000,3001]},{"teal":3199,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3002]},{"teal":3200,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3003]},{"teal":3201,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3004]},{"teal":3202,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3005,3006]},{"teal":3203,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3007]},{"teal":3204,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3008]},{"teal":3205,"source":"contracts/validatorRegistry.algo.ts:737","pc":[3009,3010]},{"teal":3209,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3011,3012]},{"teal":3210,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3013,3014]},{"teal":3211,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3015,3016]},{"teal":3212,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3017]},{"teal":3213,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3018,3019]},{"teal":3214,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3020,3021]},{"teal":3215,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3022]},{"teal":3216,"source":"contracts/validatorRegistry.algo.ts:738","pc":[3023,3024]},{"teal":3219,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3025]},{"teal":3220,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3026,3027]},{"teal":3223,"source":"contracts/validatorRegistry.algo.ts:736","pc":[3028]},{"teal":3236,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3029,3030]},{"teal":3237,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3031,3032]},{"teal":3238,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3033,3034,3035]},{"teal":3239,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3036]},{"teal":3240,"source":"contracts/validatorRegistry.algo.ts:742","pc":[3037]},{"teal":3241,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3038,3039]},{"teal":3242,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3040,3041,3042]},{"teal":3243,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3043]},{"teal":3244,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3044]},{"teal":3245,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3045]},{"teal":3246,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3046]},{"teal":3247,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3047,3048]},{"teal":3248,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3049]},{"teal":3251,"source":"contracts/validatorRegistry.algo.ts:743","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3050]},{"teal":3252,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3051,3052,3053]},{"teal":3253,"source":"contracts/validatorRegistry.algo.ts:743","pc":[3054]},{"teal":3254,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3055,3056]},{"teal":3255,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3057,3058,3059]},{"teal":3256,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3060]},{"teal":3257,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3061]},{"teal":3258,"source":"contracts/validatorRegistry.algo.ts:744","pc":[3062]},{"teal":3259,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3063,3064]},{"teal":3260,"source":"contracts/validatorRegistry.algo.ts:745","pc":[3065]},{"teal":3261,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3066,3067]},{"teal":3262,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3068]},{"teal":3263,"source":"contracts/validatorRegistry.algo.ts:746","pc":[3069]},{"teal":3264,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3070,3071]},{"teal":3265,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3072]},{"teal":3266,"source":"contracts/validatorRegistry.algo.ts:748","pc":[3073]},{"teal":3267,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3074,3075]},{"teal":3268,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3076]},{"teal":3269,"source":"contracts/validatorRegistry.algo.ts:747","pc":[3077]},{"teal":3270,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3078]},{"teal":3271,"source":"contracts/validatorRegistry.algo.ts:741","pc":[3079]},{"teal":3272,"source":"contracts/validatorRegistry.algo.ts:721","pc":[3080,3081,3082]},{"teal":3286,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3083,3084]},{"teal":3287,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3085,3086]},{"teal":3288,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3087,3088,3089]},{"teal":3289,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3090]},{"teal":3290,"source":"contracts/validatorRegistry.algo.ts:752","pc":[3091]},{"teal":3291,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3092,3093]},{"teal":3292,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3094,3095,3096]},{"teal":3293,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3097]},{"teal":3294,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3098]},{"teal":3295,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3099]},{"teal":3296,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3100]},{"teal":3297,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3101,3102]},{"teal":3298,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3103]},{"teal":3301,"source":"contracts/validatorRegistry.algo.ts:753","errorMessage":"poolKey.poolId as uint16 overflowed 16 bits","pc":[3104]},{"teal":3302,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3105,3106,3107]},{"teal":3303,"source":"contracts/validatorRegistry.algo.ts:753","pc":[3108]},{"teal":3304,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3109,3110]},{"teal":3305,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3111,3112,3113]},{"teal":3306,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3114]},{"teal":3307,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3115]},{"teal":3308,"source":"contracts/validatorRegistry.algo.ts:754","pc":[3116]},{"teal":3309,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3117,3118]},{"teal":3310,"source":"contracts/validatorRegistry.algo.ts:755","pc":[3119]},{"teal":3311,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3120,3121]},{"teal":3312,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3122]},{"teal":3313,"source":"contracts/validatorRegistry.algo.ts:756","pc":[3123]},{"teal":3314,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3124,3125]},{"teal":3315,"source":"contracts/validatorRegistry.algo.ts:759","pc":[3126]},{"teal":3316,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3127,3128]},{"teal":3317,"source":"contracts/validatorRegistry.algo.ts:758","pc":[3129]},{"teal":3318,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3130]},{"teal":3319,"source":"contracts/validatorRegistry.algo.ts:751","pc":[3131]},{"teal":3325,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3132,3133]},{"teal":3326,"source":"contracts/validatorRegistry.algo.ts:763","pc":[3134,3135,3136]},{"teal":3331,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3137,3138]},{"teal":3332,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3139,3140]},{"teal":3333,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3141,3142,3143]},{"teal":3334,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3144]},{"teal":3335,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3145]},{"teal":3336,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3146]},{"teal":3337,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3147,3148]},{"teal":3338,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3149]},{"teal":3339,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3150]},{"teal":3340,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3151]},{"teal":3341,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3152]},{"teal":3342,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3153,3154]},{"teal":3343,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3155,3156]},{"teal":3344,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3157,3158,3159]},{"teal":3345,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3160]},{"teal":3346,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3161]},{"teal":3347,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3162]},{"teal":3348,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3163,3164]},{"teal":3349,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3165]},{"teal":3350,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3166]},{"teal":3351,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3167]},{"teal":3352,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3168]},{"teal":3353,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3169,3170]},{"teal":3354,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3171]},{"teal":3355,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3172,3173]},{"teal":3356,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3174,3175,3176]},{"teal":3357,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3177]},{"teal":3358,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3178]},{"teal":3359,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3179]},{"teal":3360,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3180,3181]},{"teal":3361,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3182]},{"teal":3362,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3183]},{"teal":3363,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3184]},{"teal":3364,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3185]},{"teal":3365,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3186]},{"teal":3366,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3187,3188,3189]},{"teal":3367,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3190]},{"teal":3368,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3191,3192]},{"teal":3369,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3193,3194,3195]},{"teal":3370,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3196]},{"teal":3371,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3197]},{"teal":3372,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3198]},{"teal":3373,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3199,3200]},{"teal":3374,"source":"contracts/validatorRegistry.algo.ts:765","pc":[3201]},{"teal":3382,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3202,3203]},{"teal":3383,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3204,3205,3206]},{"teal":3384,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3207]},{"teal":3385,"source":"contracts/validatorRegistry.algo.ts:768","pc":[3208]},{"teal":3386,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3209,3210]},{"teal":3387,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3211,3212,3213]},{"teal":3388,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3214]},{"teal":3389,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3215]},{"teal":3390,"source":"contracts/validatorRegistry.algo.ts:769","pc":[3216]},{"teal":3391,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3217,3218]},{"teal":3392,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3219,3220,3221]},{"teal":3393,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3222]},{"teal":3394,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3223]},{"teal":3395,"source":"contracts/validatorRegistry.algo.ts:770","pc":[3224]},{"teal":3396,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3225,3226]},{"teal":3397,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3227,3228,3229]},{"teal":3398,"source":"contracts/validatorRegistry.algo.ts:767","pc":[3230,3231]},{"teal":3402,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3232,3233]},{"teal":3403,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3234,3235]},{"teal":3404,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3236,3237]},{"teal":3405,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3238]},{"teal":3406,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3239]},{"teal":3407,"source":"contracts/validatorRegistry.algo.ts:772","pc":[3240,3241]},{"teal":3411,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3242,3243]},{"teal":3412,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3244,3245]},{"teal":3413,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3246,3247]},{"teal":3414,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3248]},{"teal":3415,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3249]},{"teal":3416,"source":"contracts/validatorRegistry.algo.ts:773","pc":[3250,3251]},{"teal":3421,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3252,3253]},{"teal":3422,"source":"contracts/validatorRegistry.algo.ts:775","pc":[3254,3255,3256]},{"teal":3427,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3257,3258]},{"teal":3428,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3259]},{"teal":3429,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3260]},{"teal":3430,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3261]},{"teal":3431,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3262,3263]},{"teal":3432,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3264,3265,3266]},{"teal":3433,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3267]},{"teal":3434,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3268]},{"teal":3435,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3269]},{"teal":3436,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3270,3271]},{"teal":3437,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3272]},{"teal":3438,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3273]},{"teal":3439,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3274]},{"teal":3440,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3275]},{"teal":3441,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3276]},{"teal":3442,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3277]},{"teal":3443,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3278,3279]},{"teal":3444,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3280,3281,3282]},{"teal":3445,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3283]},{"teal":3446,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3284]},{"teal":3447,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3285]},{"teal":3448,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3286,3287]},{"teal":3449,"source":"contracts/validatorRegistry.algo.ts:776","pc":[3288]},{"teal":3455,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3289,3290]},{"teal":3456,"source":"contracts/validatorRegistry.algo.ts:779","pc":[3291,3292,3293]},{"teal":3461,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3294,3295]},{"teal":3462,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3296]},{"teal":3463,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3297]},{"teal":3464,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3298]},{"teal":3465,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3299,3300]},{"teal":3466,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3301]},{"teal":3467,"source":"contracts/validatorRegistry.algo.ts:780","pc":[3302]},{"teal":3472,"source":"contracts/validatorRegistry.algo.ts:700","pc":[3303]},{"teal":3477,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3304]},{"teal":3480,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3305,3306,3307]},{"teal":3481,"source":"contracts/validatorRegistry.algo.ts:800","pc":[3308]},{"teal":3484,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3309,3310,3311]},{"teal":3485,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3312]},{"teal":3486,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3313]},{"teal":3487,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3314,3315]},{"teal":3488,"source":"contracts/validatorRegistry.algo.ts:799","pc":[3316]},{"teal":3491,"source":"contracts/validatorRegistry.algo.ts:799","errorMessage":"argument 1 (staker) for findPoolForStaker must be a address","pc":[3317]},{"teal":3494,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3318,3319,3320]},{"teal":3495,"source":"contracts/validatorRegistry.algo.ts:798","pc":[3321]},{"teal":3498,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3322,3323,3324]},{"teal":3499,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3325]},{"teal":3500,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3326]},{"teal":3501,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3327]},{"teal":3502,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3328]},{"teal":3516,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3329,3330,3331]},{"teal":3519,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3332]},{"teal":3520,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3333,3334]},{"teal":3524,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3335]},{"teal":3525,"source":"contracts/validatorRegistry.algo.ts:802","pc":[3336,3337]},{"teal":3529,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3338]},{"teal":3530,"source":"contracts/validatorRegistry.algo.ts:803","pc":[3339,3340]},{"teal":3534,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3341,3342]},{"teal":3535,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3343,3344,3345]},{"teal":3536,"source":"contracts/validatorRegistry.algo.ts:811","pc":[3346,3347]},{"teal":3541,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3348]},{"teal":3542,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3349,3350]},{"teal":3543,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3351]},{"teal":3544,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3352]},{"teal":3545,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3353]},{"teal":3546,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3354]},{"teal":3547,"source":"contracts/validatorRegistry.algo.ts:814","pc":[3355,3356,3357]},{"teal":3552,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3358]},{"teal":3553,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3359,3360]},{"teal":3554,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3361]},{"teal":3555,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3362]},{"teal":3558,"source":"contracts/validatorRegistry.algo.ts:815","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[3363]},{"teal":3559,"source":"contracts/validatorRegistry.algo.ts:815","pc":[3364,3365]},{"teal":3563,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3366,3367]},{"teal":3564,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3368]},{"teal":3565,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3369]},{"teal":3566,"source":"contracts/validatorRegistry.algo.ts:816","pc":[3370]},{"teal":3570,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3371]},{"teal":3571,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3372,3373]},{"teal":3576,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3374,3375]},{"teal":3577,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3376,3377]},{"teal":3578,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3378]},{"teal":3579,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3379,3380,3381]},{"teal":3584,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3382,3383]},{"teal":3585,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3384,3385]},{"teal":3586,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3386]},{"teal":3587,"source":"contracts/validatorRegistry.algo.ts:818","pc":[3387,3388,3389]},{"teal":3592,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3390]},{"teal":3593,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3391,3392]},{"teal":3594,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3393,3394]},{"teal":3595,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3395]},{"teal":3596,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3396,3397]},{"teal":3597,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3398,3399]},{"teal":3598,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3400]},{"teal":3599,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3401,3402]},{"teal":3600,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3403,3404]},{"teal":3601,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3405,3406]},{"teal":3602,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3407,3408]},{"teal":3603,"source":"contracts/validatorRegistry.algo.ts:819","pc":[3409]},{"teal":3609,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3410,3411]},{"teal":3610,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3412,3413]},{"teal":3611,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3414]},{"teal":3612,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3415]},{"teal":3613,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3416]},{"teal":3614,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3417]},{"teal":3615,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3418]},{"teal":3616,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3419]},{"teal":3617,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3420]},{"teal":3618,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3421]},{"teal":3619,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3422]},{"teal":3620,"source":"contracts/validatorRegistry.algo.ts:821","pc":[3423,3424,3425]},{"teal":3623,"source":"contracts/validatorRegistry.algo.ts:822","pc":[3426,3427,3428]},{"teal":3628,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3429]},{"teal":3629,"source":"contracts/validatorRegistry.algo.ts:824","pc":[3430,3431]},{"teal":3634,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3432,3433]},{"teal":3635,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3434,3435]},{"teal":3636,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3436]},{"teal":3637,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3437]},{"teal":3638,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3438]},{"teal":3639,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3439]},{"teal":3640,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3440]},{"teal":3641,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3441]},{"teal":3642,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3442]},{"teal":3643,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3443,3444]},{"teal":3644,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3445]},{"teal":3645,"source":"contracts/validatorRegistry.algo.ts:825","pc":[3446,3447,3448]},{"teal":3650,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3449]},{"teal":3651,"source":"contracts/validatorRegistry.algo.ts:827","pc":[3450,3451]},{"teal":3658,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3452,3453]},{"teal":3659,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3454,3455]},{"teal":3660,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3456,3457]},{"teal":3661,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3458]},{"teal":3662,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3459]},{"teal":3663,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3460]},{"teal":3664,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3461]},{"teal":3665,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3462]},{"teal":3666,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3463]},{"teal":3667,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3464]},{"teal":3668,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3465]},{"teal":3669,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3466]},{"teal":3670,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3467,3468]},{"teal":3671,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3469]},{"teal":3672,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3470]},{"teal":3673,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3471,3472]},{"teal":3674,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3473]},{"teal":3675,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3474]},{"teal":3676,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3475]},{"teal":3677,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3476,3477]},{"teal":3678,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3478]},{"teal":3679,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3479]},{"teal":3680,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3480,3481]},{"teal":3681,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3482]},{"teal":3682,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3483]},{"teal":3683,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3484,3485]},{"teal":3684,"source":"contracts/validatorRegistry.algo.ts:829","pc":[3486]},{"teal":3685,"source":"contracts/validatorRegistry.algo.ts:831","pc":[3487,3488]},{"teal":3686,"source":"contracts/validatorRegistry.algo.ts:830","pc":[3489]},{"teal":3687,"source":"contracts/validatorRegistry.algo.ts:828","pc":[3490,3491,3492]},{"teal":3692,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3493,3494]},{"teal":3693,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3495,3496]},{"teal":3694,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3497]},{"teal":3695,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3498]},{"teal":3696,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3499]},{"teal":3697,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3500]},{"teal":3698,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3501,3502]},{"teal":3699,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3503]},{"teal":3700,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3504,3505]},{"teal":3701,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3506]},{"teal":3702,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3507]},{"teal":3703,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3508,3509]},{"teal":3704,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3510]},{"teal":3705,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3511]},{"teal":3706,"source":"contracts/validatorRegistry.algo.ts:833","pc":[3512,3513,3514]},{"teal":3715,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3515,3516]},{"teal":3716,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3517]},{"teal":3717,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3518]},{"teal":3718,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3519,3520]},{"teal":3719,"source":"contracts/validatorRegistry.algo.ts:817","pc":[3521,3522,3523]},{"teal":3729,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3524,3525]},{"teal":3730,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3526,3527]},{"teal":3731,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3528]},{"teal":3732,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3529]},{"teal":3733,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3530,3531]},{"teal":3734,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3532]},{"teal":3735,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3533]},{"teal":3736,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3534,3535]},{"teal":3737,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3536]},{"teal":3738,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3537]},{"teal":3739,"source":"contracts/validatorRegistry.algo.ts:841","pc":[3538]},{"teal":3742,"source":"contracts/validatorRegistry.algo.ts:840","errorMessage":"must stake at least the minimum for this pool","pc":[3539]},{"teal":3746,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3540,3541]},{"teal":3747,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3542,3543]},{"teal":3748,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3544]},{"teal":3749,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3545,3546]},{"teal":3750,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3547]},{"teal":3751,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3548]},{"teal":3752,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3549,3550]},{"teal":3753,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3551]},{"teal":3754,"source":"contracts/validatorRegistry.algo.ts:846","pc":[3552,3553]},{"teal":3758,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3554,3555]},{"teal":3759,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3556,3557]},{"teal":3760,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3558]},{"teal":3761,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3559,3560]},{"teal":3762,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3561]},{"teal":3763,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3562]},{"teal":3764,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3563,3564]},{"teal":3765,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3565]},{"teal":3766,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3566]},{"teal":3767,"source":"contracts/validatorRegistry.algo.ts:847","pc":[3567,3568]},{"teal":3771,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3569]},{"teal":3772,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3570,3571]},{"teal":3777,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3572,3573]},{"teal":3778,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3574,3575]},{"teal":3779,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3576]},{"teal":3780,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3577,3578,3579]},{"teal":3785,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3580,3581]},{"teal":3786,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3582,3583]},{"teal":3787,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3584,3585]},{"teal":3788,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3586]},{"teal":3789,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3587,3588]},{"teal":3790,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3589]},{"teal":3791,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3590]},{"teal":3792,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3591]},{"teal":3793,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3592]},{"teal":3794,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3593,3594]},{"teal":3795,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3595]},{"teal":3796,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3596,3597]},{"teal":3797,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3598]},{"teal":3798,"source":"contracts/validatorRegistry.algo.ts:849","pc":[3599,3600,3601]},{"teal":3807,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3602,3603]},{"teal":3808,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3604]},{"teal":3809,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3605,3606]},{"teal":3810,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3607]},{"teal":3811,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3608]},{"teal":3812,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3609]},{"teal":3813,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3610]},{"teal":3814,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3611,3612]},{"teal":3815,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3613,3614]},{"teal":3816,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3615,3616]},{"teal":3817,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3617]},{"teal":3818,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3618]},{"teal":3819,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3619]},{"teal":3820,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3620]},{"teal":3821,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3621]},{"teal":3822,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3622]},{"teal":3823,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3623]},{"teal":3824,"source":"contracts/validatorRegistry.algo.ts:851","pc":[3624]},{"teal":3825,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3625,3626]},{"teal":3826,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3627]},{"teal":3827,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3628,3629]},{"teal":3828,"source":"contracts/validatorRegistry.algo.ts:852","pc":[3630]},{"teal":3829,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3631]},{"teal":3830,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3632,3633]},{"teal":3831,"source":"contracts/validatorRegistry.algo.ts:853","pc":[3634]},{"teal":3832,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3635]},{"teal":3833,"source":"contracts/validatorRegistry.algo.ts:850","pc":[3636,3637,3638]},{"teal":3840,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3639,3640]},{"teal":3841,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3641]},{"teal":3842,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3642]},{"teal":3843,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3643,3644]},{"teal":3844,"source":"contracts/validatorRegistry.algo.ts:848","pc":[3645,3646,3647]},{"teal":3849,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3648,3649]},{"teal":3850,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3650]},{"teal":3851,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3651,3652]},{"teal":3852,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3653]},{"teal":3853,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3654,3655]},{"teal":3854,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3656]},{"teal":3855,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3657,3658]},{"teal":3856,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3659]},{"teal":3857,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3660,3661]},{"teal":3858,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3662]},{"teal":3859,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3663]},{"teal":3860,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3664,3665]},{"teal":3861,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3666]},{"teal":3862,"source":"contracts/validatorRegistry.algo.ts:858","pc":[3667]},{"teal":3866,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3668,3669]},{"teal":3869,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3670,3671]},{"teal":3870,"source":"contracts/validatorRegistry.algo.ts:796","pc":[3672]},{"teal":3875,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3673,3674,3675]},{"teal":3876,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3676]},{"teal":3879,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3677,3678,3679]},{"teal":3880,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3680]},{"teal":3883,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3681,3682,3683]},{"teal":3884,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3684]},{"teal":3887,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3685,3686,3687]},{"teal":3888,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3688]},{"teal":3889,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3689]},{"teal":3903,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3690,3691,3692]},{"teal":3906,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3693]},{"teal":3907,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3694,3695]},{"teal":3911,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3696,3697]},{"teal":3912,"source":"contracts/validatorRegistry.algo.ts:873","pc":[3698,3699,3700]},{"teal":3916,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3701,3702]},{"teal":3917,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3703,3704]},{"teal":3918,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3705]},{"teal":3919,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3706,3707]},{"teal":3920,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3708]},{"teal":3921,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3709]},{"teal":3922,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3710,3711]},{"teal":3923,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3712]},{"teal":3924,"source":"contracts/validatorRegistry.algo.ts:875","pc":[3713,3714]},{"teal":3928,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3715,3716]},{"teal":3929,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3717]},{"teal":3930,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3718]},{"teal":3931,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3719]},{"teal":3932,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3720,3721,3722]},{"teal":3933,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3723,3724]},{"teal":3934,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3725]},{"teal":3935,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3726]},{"teal":3936,"source":"contracts/validatorRegistry.algo.ts:876","pc":[3727]},{"teal":3940,"source":"contracts/validatorRegistry.algo.ts:876","errorMessage":"node number out of allowable range","pc":[3728]},{"teal":3944,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3729]},{"teal":3945,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3730,3731]},{"teal":3950,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3732,3733]},{"teal":3951,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3734]},{"teal":3952,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3735]},{"teal":3953,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3736,3737,3738]},{"teal":3957,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3739]},{"teal":3958,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3740,3741]},{"teal":3963,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3742,3743]},{"teal":3964,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3744,3745]},{"teal":3965,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3746]},{"teal":3966,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3747,3748,3749]},{"teal":3971,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3750,3751]},{"teal":3972,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3752]},{"teal":3973,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3753,3754]},{"teal":3974,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3755]},{"teal":3975,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3756]},{"teal":3976,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3757]},{"teal":3977,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3758]},{"teal":3978,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3759]},{"teal":3979,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3760,3761]},{"teal":3980,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3762]},{"teal":3981,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3763]},{"teal":3982,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3764]},{"teal":3983,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3765]},{"teal":3984,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3766]},{"teal":3985,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3767]},{"teal":3986,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3768,3769]},{"teal":3987,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3770]},{"teal":3988,"source":"contracts/validatorRegistry.algo.ts:880","pc":[3771,3772,3773]},{"teal":3993,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3774,3775]},{"teal":3994,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3776]},{"teal":3995,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3777]},{"teal":3996,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3778,3779]},{"teal":3997,"source":"contracts/validatorRegistry.algo.ts:881","pc":[3780]},{"teal":4000,"source":"contracts/validatorRegistry.algo.ts:881","errorMessage":"can't move to same node","pc":[3781]},{"teal":4004,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3782,3783]},{"teal":4005,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3784,3785]},{"teal":4006,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3786]},{"teal":4007,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3787]},{"teal":4008,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3788]},{"teal":4009,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3789]},{"teal":4010,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3790]},{"teal":4011,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3791,3792]},{"teal":4012,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3793]},{"teal":4013,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3794]},{"teal":4014,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3795]},{"teal":4015,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3796,3797]},{"teal":4016,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3798]},{"teal":4017,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3799,3800]},{"teal":4018,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3801]},{"teal":4019,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3802]},{"teal":4020,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3803,3804]},{"teal":4021,"source":"contracts/validatorRegistry.algo.ts:883","pc":[3805]},{"teal":4027,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3806]},{"teal":4028,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3807,3808]},{"teal":4029,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3809,3810]},{"teal":4030,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3811,3812,3813,3814,3815,3816]},{"teal":4031,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3817,3818]},{"teal":4035,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3819,3820]},{"teal":4036,"source":"contracts/validatorRegistry.algo.ts:887","pc":[3821,3822]},{"teal":4039,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3823]},{"teal":4040,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3824,3825]},{"teal":4043,"source":"contracts/validatorRegistry.algo.ts:886","pc":[3826]},{"teal":4047,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3827,3828]},{"teal":4048,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3829,3830]},{"teal":4049,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3831,3832]},{"teal":4050,"source":"contracts/validatorRegistry.algo.ts:891","pc":[3833,3834,3835]},{"teal":4054,"source":"contracts/validatorRegistry.algo.ts:892","pc":[3836]},{"teal":4061,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3837,3838]},{"teal":4062,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3839]},{"teal":4063,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3840]},{"teal":4064,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3841,3842]},{"teal":4065,"source":"contracts/validatorRegistry.algo.ts:879","pc":[3843,3844,3845]},{"teal":4072,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3846,3847]},{"teal":4073,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3848]},{"teal":4074,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3849]},{"teal":4075,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3850,3851]},{"teal":4076,"source":"contracts/validatorRegistry.algo.ts:878","pc":[3852,3853,3854]},{"teal":4080,"source":"contracts/validatorRegistry.algo.ts:896","errorMessage":"couldn't find pool app id in nodes to move","pc":[3855]},{"teal":4081,"source":"contracts/validatorRegistry.algo.ts:872","pc":[3856]},{"teal":4086,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3857]},{"teal":4089,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3858,3859,3860]},{"teal":4090,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3861]},{"teal":4091,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3862]},{"teal":4092,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3863,3864]},{"teal":4093,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3865]},{"teal":4096,"source":"contracts/validatorRegistry.algo.ts:910","errorMessage":"argument 0 (receiver) for emptyTokenRewards must be a address","pc":[3866]},{"teal":4099,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3867,3868,3869]},{"teal":4100,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3870]},{"teal":4103,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3871,3872,3873]},{"teal":4104,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3874]},{"teal":4105,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3875]},{"teal":4106,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3876]},{"teal":4107,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3877]},{"teal":4108,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3878]},{"teal":4122,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3879,3880,3881]},{"teal":4125,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3882]},{"teal":4126,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3883,3884]},{"teal":4130,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3885,3886]},{"teal":4131,"source":"contracts/validatorRegistry.algo.ts:911","pc":[3887,3888,3889]},{"teal":4135,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3890,3891]},{"teal":4136,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3892]},{"teal":4137,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3893]},{"teal":4138,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3894,3895]},{"teal":4139,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3896]},{"teal":4140,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3897]},{"teal":4141,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3898,3899]},{"teal":4142,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3900]},{"teal":4143,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3901]},{"teal":4144,"source":"contracts/validatorRegistry.algo.ts:912","pc":[3902,3903]},{"teal":4148,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3904,3905]},{"teal":4149,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3906]},{"teal":4150,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3907]},{"teal":4151,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3908,3909]},{"teal":4152,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3910]},{"teal":4153,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3911]},{"teal":4154,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3912,3913]},{"teal":4155,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3914]},{"teal":4156,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3915]},{"teal":4157,"source":"contracts/validatorRegistry.algo.ts:913","pc":[3916,3917]},{"teal":4161,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3918,3919]},{"teal":4162,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3920]},{"teal":4163,"source":"contracts/validatorRegistry.algo.ts:914","pc":[3921]},{"teal":4166,"source":"contracts/validatorRegistry.algo.ts:914","errorMessage":"this validator doesn't have a reward token defined","pc":[3922]},{"teal":4170,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3923,3924]},{"teal":4171,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3925]},{"teal":4172,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3926]},{"teal":4173,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3927,3928]},{"teal":4174,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3929]},{"teal":4175,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3930]},{"teal":4176,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3931,3932]},{"teal":4177,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3933]},{"teal":4178,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3934]},{"teal":4179,"source":"contracts/validatorRegistry.algo.ts:915","pc":[3935,3936]},{"teal":4184,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3937,3938]},{"teal":4185,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3939,3940]},{"teal":4186,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3941]},{"teal":4187,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3942,3943]},{"teal":4188,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3944,3945]},{"teal":4189,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3946]},{"teal":4190,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3947,3948]},{"teal":4191,"source":"contracts/validatorRegistry.algo.ts:918","pc":[3949]},{"teal":4192,"source":"contracts/validatorRegistry.algo.ts:917","pc":[3950,3951]},{"teal":4199,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3952]},{"teal":4200,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3953,3954]},{"teal":4201,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3955,3956]},{"teal":4202,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3957,3958]},{"teal":4203,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3959,3960]},{"teal":4207,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3961,3962]},{"teal":4208,"source":"contracts/validatorRegistry.algo.ts:922","pc":[3963,3964]},{"teal":4212,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3965,3966]},{"teal":4213,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3967,3968]},{"teal":4214,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3969,3970]},{"teal":4215,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3971]},{"teal":4216,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3972,3973]},{"teal":4217,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3974,3975]},{"teal":4218,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3976]},{"teal":4219,"source":"contracts/validatorRegistry.algo.ts:923","pc":[3977,3978]},{"teal":4222,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3979]},{"teal":4223,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3980,3981]},{"teal":4226,"source":"contracts/validatorRegistry.algo.ts:921","pc":[3982]},{"teal":4233,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3983,3984]},{"teal":4234,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3985,3986]},{"teal":4235,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3987]},{"teal":4236,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3988,3989]},{"teal":4237,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3990,3991]},{"teal":4238,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3992]},{"teal":4239,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3993,3994]},{"teal":4240,"source":"contracts/validatorRegistry.algo.ts:926","pc":[3995]},{"teal":4243,"source":"contracts/validatorRegistry.algo.ts:925","errorMessage":"balance of remaining reward tokens should match the held back amount","pc":[3996]},{"teal":4247,"source":"contracts/validatorRegistry.algo.ts:929","pc":[3997,3998]},{"teal":4250,"source":"contracts/validatorRegistry.algo.ts:910","pc":[3999,4000]},{"teal":4253,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4001,4002]},{"teal":4254,"source":"contracts/validatorRegistry.algo.ts:910","pc":[4003]},{"teal":4258,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4004,4005,4006]},{"teal":4265,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4007,4008]},{"teal":4266,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4009]},{"teal":4267,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4010,4011]},{"teal":4268,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4012]},{"teal":4269,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4013,4014]},{"teal":4270,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4015]},{"teal":4271,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4016]},{"teal":4272,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4017,4018]},{"teal":4273,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4019]},{"teal":4274,"source":"contracts/validatorRegistry.algo.ts:1023","pc":[4020]},{"teal":4277,"source":"contracts/validatorRegistry.algo.ts:1022","errorMessage":"can only be called by validator owner","pc":[4021]},{"teal":4278,"source":"contracts/validatorRegistry.algo.ts:1021","pc":[4022]},{"teal":4282,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4023,4024,4025]},{"teal":4290,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4026,4027]},{"teal":4291,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4028]},{"teal":4292,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4029,4030]},{"teal":4293,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4031]},{"teal":4294,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4032,4033]},{"teal":4295,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4034]},{"teal":4296,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4035]},{"teal":4297,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4036,4037]},{"teal":4298,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4038]},{"teal":4299,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4039]},{"teal":4300,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4040]},{"teal":4301,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4041,4042,4043]},{"teal":4302,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4044,4045]},{"teal":4303,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4046,4047]},{"teal":4304,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4048,4049]},{"teal":4305,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4050]},{"teal":4306,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4051,4052]},{"teal":4307,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4053]},{"teal":4308,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4054]},{"teal":4309,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4055,4056]},{"teal":4310,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4057]},{"teal":4311,"source":"contracts/validatorRegistry.algo.ts:1031","pc":[4058]},{"teal":4312,"source":"contracts/validatorRegistry.algo.ts:1030","pc":[4059]},{"teal":4316,"source":"contracts/validatorRegistry.algo.ts:1029","errorMessage":"can only be called by owner or manager of validator","pc":[4060]},{"teal":4317,"source":"contracts/validatorRegistry.algo.ts:1028","pc":[4061]},{"teal":4325,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4062,4063,4064]},{"teal":4329,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4065]},{"teal":4330,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4066,4067]},{"teal":4331,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4068,4069,4070]},{"teal":4332,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4071]},{"teal":4333,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4072]},{"teal":4334,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4073]},{"teal":4335,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4074]},{"teal":4336,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4075]},{"teal":4337,"source":"contracts/validatorRegistry.algo.ts:1042","pc":[4076]},{"teal":4340,"source":"contracts/validatorRegistry.algo.ts:1042","errorMessage":"the specified validator id isn't valid","pc":[4077]},{"teal":4344,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4078,4079]},{"teal":4345,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4080,4081,4082]},{"teal":4346,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4083]},{"teal":4347,"source":"contracts/constants.algo.ts:30","pc":[4084]},{"teal":4348,"source":"contracts/validatorRegistry.algo.ts:1043","pc":[4085]},{"teal":4351,"source":"contracts/validatorRegistry.algo.ts:1043","errorMessage":"pool id not in valid range","pc":[4086]},{"teal":4358,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4087,4088]},{"teal":4359,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4089,4090,4091]},{"teal":4360,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4092]},{"teal":4361,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4093]},{"teal":4362,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4094]},{"teal":4363,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4095]},{"teal":4364,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4096,4097,4098]},{"teal":4365,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4099,4100]},{"teal":4366,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4101,4102,4103]},{"teal":4367,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4104]},{"teal":4368,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4105,4106]},{"teal":4369,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4107,4108]},{"teal":4370,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4109]},{"teal":4371,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4110,4111]},{"teal":4372,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4112,4113,4114]},{"teal":4373,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4115]},{"teal":4374,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4116]},{"teal":4375,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4117]},{"teal":4376,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4118,4119]},{"teal":4377,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4120]},{"teal":4378,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4121]},{"teal":4379,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4122]},{"teal":4380,"source":"contracts/validatorRegistry.algo.ts:1045","pc":[4123]},{"teal":4384,"source":"contracts/validatorRegistry.algo.ts:1044","errorMessage":"pool id outside of range of pools created for this validator","pc":[4124]},{"teal":4391,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4125,4126]},{"teal":4392,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4127,4128,4129]},{"teal":4393,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4130]},{"teal":4394,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4131,4132]},{"teal":4395,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4133,4134]},{"teal":4396,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4135,4136,4137]},{"teal":4397,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4138]},{"teal":4398,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4139]},{"teal":4399,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4140]},{"teal":4400,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4141,4142]},{"teal":4401,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4143]},{"teal":4402,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4144]},{"teal":4403,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4145]},{"teal":4404,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4146]},{"teal":4405,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4147]},{"teal":4406,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4148]},{"teal":4407,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4149,4150]},{"teal":4408,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4151,4152,4153]},{"teal":4409,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4154]},{"teal":4410,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4155]},{"teal":4411,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4156]},{"teal":4412,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4157,4158]},{"teal":4413,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4159]},{"teal":4414,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4160]},{"teal":4415,"source":"contracts/validatorRegistry.algo.ts:1051","pc":[4161]},{"teal":4418,"source":"contracts/validatorRegistry.algo.ts:1050","errorMessage":"The passed in app id doesn't match the passed in ids","pc":[4162]},{"teal":4422,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4163,4164]},{"teal":4423,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4165,4166]},{"teal":4424,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4167,4168,4169]},{"teal":4425,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4170]},{"teal":4426,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4171,4172]},{"teal":4427,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4173]},{"teal":4428,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4174]},{"teal":4429,"source":"contracts/validatorRegistry.algo.ts:1055","pc":[4175]},{"teal":4433,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4176,4177]},{"teal":4434,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4178,4179,4180]},{"teal":4435,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4181]},{"teal":4436,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4182,4183]},{"teal":4437,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4184,4185,4186]},{"teal":4438,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4187]},{"teal":4439,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4188,4189,4190,4191,4192,4193,4194,4195,4196,4197,4198,4199,4200]},{"teal":4440,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4201]},{"teal":4443,"source":"contracts/validatorRegistry.algo.ts:1057","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('validatorId')","pc":[4202]},{"teal":4444,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4203]},{"teal":4445,"source":"contracts/validatorRegistry.algo.ts:1057","pc":[4204]},{"teal":4449,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4205,4206]},{"teal":4450,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4207,4208,4209]},{"teal":4451,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4210]},{"teal":4452,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4211,4212]},{"teal":4453,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4213,4214,4215]},{"teal":4454,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4216]},{"teal":4455,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4217,4218,4219,4220,4221,4222,4223,4224]},{"teal":4456,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4225]},{"teal":4459,"source":"contracts/validatorRegistry.algo.ts:1058","errorMessage":"global state value does not exist: AppID.fromUint64(poolKey.poolAppId).globalState('poolId')","pc":[4226]},{"teal":4460,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4227]},{"teal":4461,"source":"contracts/validatorRegistry.algo.ts:1058","pc":[4228]},{"teal":4462,"source":"contracts/validatorRegistry.algo.ts:1041","pc":[4229]},{"teal":4471,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4230,4231,4232]},{"teal":4474,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4233]},{"teal":4475,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4234]},{"teal":4479,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4235]},{"teal":4480,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4236,4237]},{"teal":4481,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4238]},{"teal":4482,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4239]},{"teal":4483,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4240,4241]},{"teal":4488,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4242,4243]},{"teal":4489,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4244]},{"teal":4490,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4245]},{"teal":4491,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4246,4247]},{"teal":4492,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4248]},{"teal":4493,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4249]},{"teal":4494,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4250,4251]},{"teal":4495,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4252]},{"teal":4496,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4253]},{"teal":4497,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4254]},{"teal":4498,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4255]},{"teal":4499,"source":"contracts/validatorRegistry.algo.ts:1069","pc":[4256,4257,4258]},{"teal":4504,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4259,4260]},{"teal":4505,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4261]},{"teal":4506,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4262]},{"teal":4507,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4263,4264]},{"teal":4508,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4265]},{"teal":4509,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4266]},{"teal":4510,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4267,4268]},{"teal":4511,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4269]},{"teal":4512,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4270]},{"teal":4513,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4271,4272]},{"teal":4514,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4273]},{"teal":4517,"source":"contracts/validatorRegistry.algo.ts:1072","errorMessage":"global state value does not exist: AppID.fromUint64(validatorConfig.nfdForInfo).globalState('i.owner.a')","pc":[4274]},{"teal":4518,"source":"contracts/validatorRegistry.algo.ts:1072","pc":[4275,4276]},{"teal":4523,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4277]},{"teal":4524,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4278,4279]},{"teal":4525,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4280]},{"teal":4526,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4281,4282]},{"teal":4527,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4283]},{"teal":4528,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4284]},{"teal":4529,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4285,4286]},{"teal":4530,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4287]},{"teal":4531,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4288,4289]},{"teal":4532,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4290]},{"teal":4533,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4291]},{"teal":4534,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4292,4293,4294]},{"teal":4535,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4295,4296]},{"teal":4536,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4297,4298]},{"teal":4537,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4299]},{"teal":4538,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4300,4301]},{"teal":4539,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4302]},{"teal":4540,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4303]},{"teal":4541,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4304,4305]},{"teal":4542,"source":"contracts/validatorRegistry.algo.ts:1068","pc":[4306]},{"teal":4543,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4307,4308]},{"teal":4544,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4309]},{"teal":4545,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4310]},{"teal":4548,"source":"contracts/validatorRegistry.algo.ts:1074","pc":[4311,4312,4313]},{"teal":4553,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4314,4315]},{"teal":4554,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4316,4317]},{"teal":4555,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4318]},{"teal":4556,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4319,4320]},{"teal":4557,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4321]},{"teal":4558,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4322]},{"teal":4559,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4323,4324]},{"teal":4560,"source":"contracts/validatorRegistry.algo.ts:1076","pc":[4325]},{"teal":4565,"source":"contracts/validatorRegistry.algo.ts:1067","pc":[4326]},{"teal":4569,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4327,4328,4329]},{"teal":4573,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4330,4331]},{"teal":4574,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4332,4333,4334]},{"teal":4575,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4335,4336]},{"teal":4576,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4337]},{"teal":4577,"source":"contracts/validatorRegistry.algo.ts:1083","pc":[4338]},{"teal":4581,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4339,4340]},{"teal":4582,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4341,4342,4343]},{"teal":4583,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4344,4345]},{"teal":4584,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4346]},{"teal":4585,"source":"contracts/validatorRegistry.algo.ts:1084","pc":[4347]},{"teal":4589,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4348,4349]},{"teal":4590,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4350,4351]},{"teal":4591,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4352,4353,4354]},{"teal":4592,"source":"contracts/validatorRegistry.algo.ts:1085","pc":[4355]},{"teal":4595,"source":"contracts/validatorRegistry.algo.ts:1085","errorMessage":"sender must be owner to add new validator","pc":[4356]},{"teal":4602,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4357,4358]},{"teal":4603,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4359,4360,4361]},{"teal":4604,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4362]},{"teal":4605,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4363]},{"teal":4606,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4364]},{"teal":4607,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4365]},{"teal":4608,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4366,4367,4368]},{"teal":4609,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4369,4370]},{"teal":4610,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4371,4372,4373]},{"teal":4611,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4374]},{"teal":4612,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4375,4376]},{"teal":4613,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4377]},{"teal":4614,"source":"contracts/validatorRegistry.algo.ts:1088","pc":[4378]},{"teal":4618,"source":"contracts/validatorRegistry.algo.ts:1087","errorMessage":"gating type not valid","pc":[4379]},{"teal":4625,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4380,4381]},{"teal":4626,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4382,4383,4384]},{"teal":4627,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4385]},{"teal":4628,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4386]},{"teal":4629,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4387]},{"teal":4630,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4388]},{"teal":4631,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4389,4390,4391]},{"teal":4632,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4392,4393]},{"teal":4633,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4394,4395,4396]},{"teal":4634,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4397]},{"teal":4635,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4398,4399]},{"teal":4636,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4400]},{"teal":4637,"source":"contracts/validatorRegistry.algo.ts:1092","pc":[4401]},{"teal":4641,"source":"contracts/validatorRegistry.algo.ts:1091","errorMessage":"epoch length not in allowable range","pc":[4402]},{"teal":4648,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4403,4404]},{"teal":4649,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4405,4406,4407]},{"teal":4650,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4408]},{"teal":4651,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4409]},{"teal":4652,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4410]},{"teal":4653,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4411]},{"teal":4654,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4412,4413,4414]},{"teal":4655,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4415,4416]},{"teal":4656,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4417,4418,4419]},{"teal":4657,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4420]},{"teal":4658,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4421,4422]},{"teal":4659,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4423]},{"teal":4660,"source":"contracts/validatorRegistry.algo.ts:1096","pc":[4424]},{"teal":4664,"source":"contracts/validatorRegistry.algo.ts:1095","errorMessage":"commission percentage not valid","pc":[4425]},{"teal":4669,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4426,4427]},{"teal":4670,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4428,4429,4430]},{"teal":4671,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4431]},{"teal":4672,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4432]},{"teal":4673,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4433]},{"teal":4674,"source":"contracts/validatorRegistry.algo.ts:1099","pc":[4434,4435,4436]},{"teal":4682,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4437,4438]},{"teal":4683,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4439,4440,4441]},{"teal":4684,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4442,4443]},{"teal":4685,"source":"contracts/validatorRegistry.algo.ts:1101","pc":[4444]},{"teal":4688,"source":"contracts/validatorRegistry.algo.ts:1100","errorMessage":"validatorCommissionAddress must be set if percent to validator is not 0","pc":[4445]},{"teal":4693,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4446,4447]},{"teal":4694,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4448,4449,4450]},{"teal":4695,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4451]},{"teal":4696,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4452,4453]},{"teal":4697,"source":"contracts/validatorRegistry.algo.ts:1105","pc":[4454]},{"teal":4700,"source":"contracts/validatorRegistry.algo.ts:1105","errorMessage":"staking pool must have minimum entry of 1 algo","pc":[4455]},{"teal":4707,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4456,4457]},{"teal":4708,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4458,4459,4460]},{"teal":4709,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4461]},{"teal":4710,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4462]},{"teal":4711,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4463]},{"teal":4712,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4464]},{"teal":4713,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4465,4466,4467]},{"teal":4714,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4468,4469]},{"teal":4715,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4470,4471,4472]},{"teal":4716,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4473]},{"teal":4717,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4474,4475]},{"teal":4718,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4476]},{"teal":4719,"source":"contracts/validatorRegistry.algo.ts:1108","pc":[4477]},{"teal":4723,"source":"contracts/validatorRegistry.algo.ts:1107","errorMessage":"number of pools per node must be be between 1 and the maximum allowed number","pc":[4478]},{"teal":4728,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4479,4480]},{"teal":4729,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4481,4482,4483]},{"teal":4730,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4484]},{"teal":4731,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4485]},{"teal":4732,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4486]},{"teal":4733,"source":"contracts/validatorRegistry.algo.ts:1111","pc":[4487,4488,4489]},{"teal":4738,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4490,4491]},{"teal":4739,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4492,4493,4494]},{"teal":4740,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4495]},{"teal":4741,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4496,4497]},{"teal":4742,"source":"contracts/validatorRegistry.algo.ts:1112","pc":[4498]},{"teal":4745,"source":"contracts/validatorRegistry.algo.ts:1112","errorMessage":"sunsettingOn must be later than now if set","pc":[4499]},{"teal":4748,"source":"contracts/validatorRegistry.algo.ts:1081","pc":[4500]},{"teal":4762,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4501,4502,4503]},{"teal":4765,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4504]},{"teal":4766,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4505,4506]},{"teal":4770,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4507,4508]},{"teal":4771,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4509,4510]},{"teal":4772,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4511,4512,4513]},{"teal":4773,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4514]},{"teal":4774,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4515]},{"teal":4775,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4516]},{"teal":4776,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4517,4518]},{"teal":4777,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4519]},{"teal":4778,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4520]},{"teal":4779,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4521]},{"teal":4780,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4522]},{"teal":4781,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4523]},{"teal":4782,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4524]},{"teal":4783,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4525,4526]},{"teal":4784,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4527,4528,4529]},{"teal":4785,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4530]},{"teal":4786,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4531]},{"teal":4787,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4532]},{"teal":4788,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4533,4534]},{"teal":4789,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4535]},{"teal":4790,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4536]},{"teal":4791,"source":"contracts/validatorRegistry.algo.ts:1134","pc":[4537,4538]},{"teal":4804,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4539]},{"teal":4805,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4540]},{"teal":4806,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4541,4542]},{"teal":4810,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4543,4544]},{"teal":4811,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4545,4546]},{"teal":4812,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4547,4548]},{"teal":4813,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4549]},{"teal":4814,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4550,4551]},{"teal":4818,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4552,4553]},{"teal":4819,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4554,4555]},{"teal":4820,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4556]},{"teal":4821,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4557,4558]},{"teal":4824,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4559]},{"teal":4825,"source":"contracts/validatorRegistry.algo.ts:1143","pc":[4560,4561]},{"teal":4826,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4562]},{"teal":4827,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4563,4564]},{"teal":4828,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4565,4566]},{"teal":4829,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4567,4568,4569,4570,4571,4572]},{"teal":4830,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4573,4574]},{"teal":4834,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4575,4576]},{"teal":4835,"source":"contracts/validatorRegistry.algo.ts:1139","pc":[4577,4578]},{"teal":4845,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4579,4580]},{"teal":4846,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4581,4582]},{"teal":4847,"source":"contracts/validatorRegistry.algo.ts:1145","pc":[4583,4584]},{"teal":4850,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4585]},{"teal":4851,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4586,4587]},{"teal":4854,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4588]},{"teal":4855,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4589,4590]},{"teal":4856,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4591]},{"teal":4857,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4592]},{"teal":4858,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4593,4594]},{"teal":4859,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4595,4596,4597]},{"teal":4860,"source":"contracts/validatorRegistry.algo.ts:1138","pc":[4598]},{"teal":4865,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4599,4600]},{"teal":4866,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4601,4602,4603]},{"teal":4867,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4604]},{"teal":4868,"source":"contracts/validatorRegistry.algo.ts:1148","pc":[4605,4606,4607]},{"teal":4873,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4608]},{"teal":4874,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4609,4610]},{"teal":4875,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4611,4612]},{"teal":4876,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4613]},{"teal":4877,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4614,4615]},{"teal":4878,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4616,4617]},{"teal":4879,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4618]},{"teal":4880,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4619,4620]},{"teal":4881,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4621,4622]},{"teal":4882,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4623,4624]},{"teal":4883,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4625,4626]},{"teal":4884,"source":"contracts/validatorRegistry.algo.ts:1149","pc":[4627]},{"teal":4889,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4628,4629]},{"teal":4890,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4630,4631]},{"teal":4891,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4632]},{"teal":4894,"source":"contracts/validatorRegistry.algo.ts:1153","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('numStakers')","pc":[4633]},{"teal":4895,"source":"contracts/validatorRegistry.algo.ts:1153","pc":[4634,4635]},{"teal":4899,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4636,4637]},{"teal":4900,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4638,4639]},{"teal":4901,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4640]},{"teal":4904,"source":"contracts/validatorRegistry.algo.ts:1154","errorMessage":"global state value does not exist: AppID.fromUint64(poolAppId).globalState('staked')","pc":[4641]},{"teal":4905,"source":"contracts/validatorRegistry.algo.ts:1154","pc":[4642,4643]},{"teal":4909,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4644,4645]},{"teal":4910,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4646,4647]},{"teal":4911,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4648,4649,4650]},{"teal":4912,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4651]},{"teal":4913,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4652]},{"teal":4914,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4653]},{"teal":4915,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4654,4655]},{"teal":4916,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4656]},{"teal":4917,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4657]},{"teal":4918,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4658]},{"teal":4919,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4659]},{"teal":4920,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4660,4661]},{"teal":4921,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4662]},{"teal":4922,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4663,4664,4665]},{"teal":4923,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4666]},{"teal":4924,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4667,4668]},{"teal":4925,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4669,4670,4671]},{"teal":4926,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4672]},{"teal":4927,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4673]},{"teal":4928,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4674]},{"teal":4929,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4675,4676]},{"teal":4930,"source":"contracts/validatorRegistry.algo.ts:1155","pc":[4677]},{"teal":4934,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4678,4679]},{"teal":4935,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4680,4681]},{"teal":4936,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4682,4683,4684]},{"teal":4937,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4685]},{"teal":4938,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4686]},{"teal":4939,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4687]},{"teal":4940,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4688,4689]},{"teal":4941,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4690]},{"teal":4942,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4691]},{"teal":4943,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4692,4693]},{"teal":4944,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4694]},{"teal":4945,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4695,4696]},{"teal":4946,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4697]},{"teal":4947,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4698]},{"teal":4948,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4699,4700]},{"teal":4949,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4701,4702,4703]},{"teal":4950,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4704]},{"teal":4951,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4705]},{"teal":4952,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4706]},{"teal":4953,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4707,4708]},{"teal":4954,"source":"contracts/validatorRegistry.algo.ts:1156","pc":[4709]},{"teal":4959,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4710,4711]},{"teal":4960,"source":"contracts/validatorRegistry.algo.ts:1159","pc":[4712,4713,4714]},{"teal":4965,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4715,4716]},{"teal":4966,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4717]},{"teal":4967,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4718]},{"teal":4968,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4719]},{"teal":4969,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4720,4721]},{"teal":4970,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4722,4723,4724]},{"teal":4971,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4725]},{"teal":4972,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4726]},{"teal":4973,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4727]},{"teal":4974,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4728,4729]},{"teal":4975,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4730]},{"teal":4976,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4731]},{"teal":4977,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4732]},{"teal":4978,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4733]},{"teal":4979,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4734]},{"teal":4980,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4735]},{"teal":4981,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4736,4737]},{"teal":4982,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4738,4739,4740]},{"teal":4983,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4741]},{"teal":4984,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4742]},{"teal":4985,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4743]},{"teal":4986,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4744,4745]},{"teal":4987,"source":"contracts/validatorRegistry.algo.ts:1160","pc":[4746]},{"teal":4993,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4747,4748]},{"teal":4994,"source":"contracts/validatorRegistry.algo.ts:1162","pc":[4749,4750,4751]},{"teal":4999,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4752,4753]},{"teal":5000,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4754]},{"teal":5001,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4755]},{"teal":5002,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4756]},{"teal":5003,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4757,4758]},{"teal":5004,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4759]},{"teal":5005,"source":"contracts/validatorRegistry.algo.ts:1163","pc":[4760]},{"teal":5010,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4761,4762]},{"teal":5011,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4763]},{"teal":5012,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4764]},{"teal":5013,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4765]},{"teal":5014,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4766,4767]},{"teal":5015,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4768,4769,4770]},{"teal":5016,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4771]},{"teal":5017,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4772]},{"teal":5018,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4773]},{"teal":5019,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4774,4775]},{"teal":5020,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4776]},{"teal":5021,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4777]},{"teal":5022,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4778,4779]},{"teal":5023,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4780,4781]},{"teal":5024,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4782,4783]},{"teal":5025,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4784]},{"teal":5026,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4785]},{"teal":5027,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4786]},{"teal":5028,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4787]},{"teal":5029,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4788,4789]},{"teal":5030,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4790,4791,4792]},{"teal":5031,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4793]},{"teal":5032,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4794]},{"teal":5033,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4795]},{"teal":5034,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4796,4797]},{"teal":5035,"source":"contracts/validatorRegistry.algo.ts:1165","pc":[4798]},{"teal":5039,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4799,4800]},{"teal":5040,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4801]},{"teal":5041,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4802,4803]},{"teal":5042,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4804,4805]},{"teal":5043,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4806,4807]},{"teal":5044,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4808]},{"teal":5045,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4809]},{"teal":5046,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4810,4811]},{"teal":5047,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4812]},{"teal":5048,"source":"contracts/validatorRegistry.algo.ts:1166","pc":[4813]},{"teal":5049,"source":"contracts/validatorRegistry.algo.ts:1127","pc":[4814]},{"teal":5053,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4815,4816,4817]},{"teal":5056,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4818]},{"teal":5057,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4819,4820]},{"teal":5061,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4821]},{"teal":5062,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4822,4823]},{"teal":5063,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4824]},{"teal":5064,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4825]},{"teal":5065,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4826]},{"teal":5066,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4827]},{"teal":5067,"source":"contracts/validatorRegistry.algo.ts:1170","pc":[4828]},{"teal":5071,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4829]},{"teal":5072,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4830,4831]},{"teal":5073,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4832]},{"teal":5074,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4833]},{"teal":5077,"source":"contracts/validatorRegistry.algo.ts:1172","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4834]},{"teal":5078,"source":"contracts/validatorRegistry.algo.ts:1172","pc":[4835,4836]},{"teal":5082,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4837]},{"teal":5083,"source":"contracts/validatorRegistry.algo.ts:1173","pc":[4838,4839]},{"teal":5087,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4840]},{"teal":5088,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4841,4842]},{"teal":5093,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4843,4844]},{"teal":5094,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4845,4846]},{"teal":5095,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4847]},{"teal":5096,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4848,4849,4850]},{"teal":5101,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4851,4852]},{"teal":5102,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4853,4854]},{"teal":5103,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4855]},{"teal":5104,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4856]},{"teal":5105,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4857]},{"teal":5106,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4858]},{"teal":5107,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4859,4860]},{"teal":5108,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4861]},{"teal":5109,"source":"contracts/validatorRegistry.algo.ts:1175","pc":[4862,4863,4864]},{"teal":5114,"source":"contracts/validatorRegistry.algo.ts:1177","pc":[4865]},{"teal":5120,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4866,4867]},{"teal":5121,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4868]},{"teal":5122,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4869]},{"teal":5123,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4870]},{"teal":5124,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4871,4872,4873]},{"teal":5125,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4874,4875]},{"teal":5126,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4876,4877]},{"teal":5127,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4878]},{"teal":5128,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4879]},{"teal":5129,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4880]},{"teal":5130,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4881]},{"teal":5131,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4882]},{"teal":5132,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4883]},{"teal":5133,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4884]},{"teal":5134,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4885]},{"teal":5135,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4886]},{"teal":5136,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4887]},{"teal":5139,"source":"contracts/validatorRegistry.algo.ts:1179","pc":[4888,4889,4890]},{"teal":5144,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4891,4892]},{"teal":5145,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4893]},{"teal":5146,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4894]},{"teal":5147,"source":"contracts/validatorRegistry.algo.ts:1180","pc":[4895,4896]},{"teal":5154,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4897,4898]},{"teal":5155,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4899]},{"teal":5156,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4900]},{"teal":5157,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4901,4902]},{"teal":5158,"source":"contracts/validatorRegistry.algo.ts:1174","pc":[4903,4904,4905]},{"teal":5164,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4906,4907]},{"teal":5165,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4908]},{"teal":5166,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4909]},{"teal":5167,"source":"contracts/validatorRegistry.algo.ts:1183","pc":[4910,4911,4912]},{"teal":5171,"source":"contracts/validatorRegistry.algo.ts:1184","errorMessage":"No empty slot available in the staker pool set","pc":[4913]},{"teal":5176,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4914,4915]},{"teal":5177,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4916]},{"teal":5178,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4917]},{"teal":5179,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4918]},{"teal":5180,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4919]},{"teal":5181,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4920,4921]},{"teal":5182,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4922]},{"teal":5183,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4923,4924]},{"teal":5184,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4925]},{"teal":5185,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4926,4927]},{"teal":5186,"source":"contracts/validatorRegistry.algo.ts:1186","pc":[4928]},{"teal":5187,"source":"contracts/validatorRegistry.algo.ts:1169","pc":[4929]},{"teal":5198,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4930,4931,4932]},{"teal":5201,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4933]},{"teal":5202,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[4934,4935]},{"teal":5206,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4936]},{"teal":5207,"source":"contracts/validatorRegistry.algo.ts:1199","pc":[4937,4938]},{"teal":5211,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4939]},{"teal":5212,"source":"contracts/validatorRegistry.algo.ts:1200","pc":[4940,4941]},{"teal":5216,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4942]},{"teal":5217,"source":"contracts/validatorRegistry.algo.ts:1201","pc":[4943,4944]},{"teal":5221,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4945]},{"teal":5222,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4946,4947]},{"teal":5223,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4948]},{"teal":5224,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4949]},{"teal":5227,"source":"contracts/validatorRegistry.algo.ts:1203","errorMessage":"box value does not exist: this.stakerPoolSet(staker).value","pc":[4950]},{"teal":5228,"source":"contracts/validatorRegistry.algo.ts:1203","pc":[4951,4952]},{"teal":5232,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4953]},{"teal":5233,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4954,4955]},{"teal":5238,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4956,4957]},{"teal":5239,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4958,4959]},{"teal":5240,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4960]},{"teal":5241,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[4961,4962,4963]},{"teal":5246,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4964,4965]},{"teal":5247,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4966,4967]},{"teal":5248,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4968]},{"teal":5249,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4969]},{"teal":5250,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4970]},{"teal":5251,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4971]},{"teal":5252,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4972]},{"teal":5253,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4973]},{"teal":5254,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4974]},{"teal":5255,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4975]},{"teal":5256,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4976]},{"teal":5257,"source":"contracts/validatorRegistry.algo.ts:1205","pc":[4977,4978,4979]},{"teal":5260,"source":"contracts/validatorRegistry.algo.ts:1206","pc":[4980,4981,4982]},{"teal":5265,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4983,4984]},{"teal":5266,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4985]},{"teal":5267,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4986]},{"teal":5268,"source":"contracts/validatorRegistry.algo.ts:1208","pc":[4987,4988]},{"teal":5273,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4989,4990]},{"teal":5274,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4991,4992]},{"teal":5275,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4993]},{"teal":5276,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4994]},{"teal":5277,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4995]},{"teal":5278,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4996]},{"teal":5279,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4997]},{"teal":5280,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4998]},{"teal":5281,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[4999]},{"teal":5282,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5000,5001]},{"teal":5283,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5002,5003,5004]},{"teal":5284,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5005]},{"teal":5285,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5006]},{"teal":5286,"source":"contracts/validatorRegistry.algo.ts:1209","pc":[5007,5008,5009]},{"teal":5292,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5010,5011]},{"teal":5293,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5012,5013]},{"teal":5294,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5014]},{"teal":5295,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5015]},{"teal":5296,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5016]},{"teal":5297,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5017]},{"teal":5298,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5018,5019]},{"teal":5299,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5020]},{"teal":5300,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5021,5022,5023]},{"teal":5305,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5024]},{"teal":5306,"source":"contracts/validatorRegistry.algo.ts:1211","pc":[5025,5026]},{"teal":5310,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5027,5028]},{"teal":5311,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5029]},{"teal":5312,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5030]},{"teal":5313,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5031,5032,5033,5034,5035,5036,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5053,5054,5055,5056]},{"teal":5314,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5057]},{"teal":5315,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5058,5059]},{"teal":5316,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5060]},{"teal":5317,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5061,5062]},{"teal":5318,"source":"contracts/validatorRegistry.algo.ts:1213","pc":[5063]},{"teal":5319,"source":"contracts/validatorRegistry.algo.ts:1210","pc":[5064,5065,5066]},{"teal":5324,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5067,5068]},{"teal":5325,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5069]},{"teal":5326,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5070]},{"teal":5327,"source":"contracts/validatorRegistry.algo.ts:1215","pc":[5071,5072]},{"teal":5336,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5073,5074]},{"teal":5337,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5075]},{"teal":5338,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5076]},{"teal":5339,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5077,5078]},{"teal":5340,"source":"contracts/validatorRegistry.algo.ts:1204","pc":[5079,5080,5081]},{"teal":5346,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5082,5083]},{"teal":5347,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5084]},{"teal":5348,"source":"contracts/validatorRegistry.algo.ts:1219","pc":[5085,5086,5087]},{"teal":5352,"source":"contracts/validatorRegistry.algo.ts:1220","errorMessage":"No matching slot found when told to remove a pool from the stakers set","pc":[5088]},{"teal":5357,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5089,5090]},{"teal":5358,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5091]},{"teal":5359,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5092,5093]},{"teal":5360,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5094]},{"teal":5361,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5095]},{"teal":5362,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5096]},{"teal":5363,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5097]},{"teal":5364,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5098,5099]},{"teal":5365,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5100]},{"teal":5366,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5101]},{"teal":5367,"source":"contracts/validatorRegistry.algo.ts:1223","pc":[5102]},{"teal":5370,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5103,5104]},{"teal":5373,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5105,5106]},{"teal":5374,"source":"contracts/validatorRegistry.algo.ts:1197","pc":[5107]},{"teal":5378,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5108,5109,5110]},{"teal":5381,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5111]},{"teal":5382,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5112,5113]},{"teal":5386,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5114,5115]},{"teal":5387,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5116,5117]},{"teal":5388,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5118]},{"teal":5389,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5119,5120]},{"teal":5390,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5121]},{"teal":5391,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5122]},{"teal":5392,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5123,5124]},{"teal":5393,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5125]},{"teal":5394,"source":"contracts/validatorRegistry.algo.ts:1227","pc":[5126,5127]},{"teal":5398,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5128,5129,5130]},{"teal":5399,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5131]},{"teal":5400,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5132]},{"teal":5401,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5133,5134]},{"teal":5402,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5135]},{"teal":5403,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5136]},{"teal":5404,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5137,5138]},{"teal":5405,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5139]},{"teal":5406,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5140]},{"teal":5407,"source":"contracts/validatorRegistry.algo.ts:1228","pc":[5141,5142]},{"teal":5411,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5143,5144]},{"teal":5412,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5145]},{"teal":5413,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5146]},{"teal":5414,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5147]},{"teal":5415,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5148,5149,5150]},{"teal":5416,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5151,5152]},{"teal":5417,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5153]},{"teal":5418,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5154]},{"teal":5419,"source":"contracts/validatorRegistry.algo.ts:1230","pc":[5155]},{"teal":5423,"source":"contracts/validatorRegistry.algo.ts:1230","errorMessage":"node number not in valid range","pc":[5156]},{"teal":5427,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5157]},{"teal":5428,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5158,5159]},{"teal":5433,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5160,5161]},{"teal":5434,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5162,5163]},{"teal":5435,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5164]},{"teal":5436,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5165,5166,5167]},{"teal":5441,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5168,5169]},{"teal":5442,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5170]},{"teal":5443,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5171,5172]},{"teal":5444,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5173]},{"teal":5445,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5174]},{"teal":5446,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5175]},{"teal":5447,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5176]},{"teal":5448,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5177]},{"teal":5449,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5178]},{"teal":5450,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5179]},{"teal":5451,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5180,5181]},{"teal":5452,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5182]},{"teal":5453,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5183]},{"teal":5454,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5184]},{"teal":5455,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5185]},{"teal":5456,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5186]},{"teal":5457,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5187]},{"teal":5458,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5188]},{"teal":5459,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5189]},{"teal":5460,"source":"contracts/validatorRegistry.algo.ts:1233","pc":[5190,5191,5192]},{"teal":5465,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5193,5194]},{"teal":5466,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5195,5196]},{"teal":5467,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5197]},{"teal":5468,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5198]},{"teal":5469,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5199]},{"teal":5470,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5200]},{"teal":5471,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5201]},{"teal":5472,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5202]},{"teal":5473,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5203]},{"teal":5474,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5204,5205]},{"teal":5475,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5206]},{"teal":5476,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5207]},{"teal":5477,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5208]},{"teal":5478,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5209,5210]},{"teal":5479,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5211]},{"teal":5480,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5212]},{"teal":5481,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5213,5214]},{"teal":5482,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5215]},{"teal":5483,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5216]},{"teal":5484,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5217,5218]},{"teal":5485,"source":"contracts/validatorRegistry.algo.ts:1235","pc":[5219]},{"teal":5489,"source":"contracts/validatorRegistry.algo.ts:1236","pc":[5220]},{"teal":5496,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5221,5222]},{"teal":5497,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5223]},{"teal":5498,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5224]},{"teal":5499,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5225,5226]},{"teal":5500,"source":"contracts/validatorRegistry.algo.ts:1232","pc":[5227,5228,5229]},{"teal":5504,"source":"contracts/validatorRegistry.algo.ts:1239","errorMessage":"no available space in specified node for this pool","pc":[5230]},{"teal":5505,"source":"contracts/validatorRegistry.algo.ts:1226","pc":[5231]},{"teal":5515,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5232,5233,5234]},{"teal":5518,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5235]},{"teal":5519,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5236,5237]},{"teal":5523,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5238,5239]},{"teal":5524,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5240]},{"teal":5525,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5241]},{"teal":5526,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5242,5243]},{"teal":5527,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5244]},{"teal":5528,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5245]},{"teal":5529,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5246,5247]},{"teal":5530,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5248]},{"teal":5531,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5249]},{"teal":5532,"source":"contracts/validatorRegistry.algo.ts:1250","pc":[5250,5251]},{"teal":5537,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5252,5253]},{"teal":5538,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5254]},{"teal":5539,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5255]},{"teal":5540,"source":"contracts/validatorRegistry.algo.ts:1251","pc":[5256,5257,5258]},{"teal":5545,"source":"contracts/validatorRegistry.algo.ts:1252","pc":[5259]},{"teal":5550,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5260,5261]},{"teal":5551,"source":"contracts/validatorRegistry.algo.ts:1254","pc":[5262,5263]},{"teal":5555,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5264]},{"teal":5556,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5265,5266]},{"teal":5557,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5267]},{"teal":5558,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5268,5269]},{"teal":5559,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5270]},{"teal":5560,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5271]},{"teal":5561,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5272,5273]},{"teal":5562,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5274]},{"teal":5563,"source":"contracts/validatorRegistry.algo.ts:1255","pc":[5275,5276]},{"teal":5570,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5277,5278]},{"teal":5571,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5279]},{"teal":5572,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5280]},{"teal":5573,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5281]},{"teal":5574,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5282,5283,5284]},{"teal":5575,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5285,5286]},{"teal":5576,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5287,5288]},{"teal":5577,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5289]},{"teal":5578,"source":"contracts/validatorRegistry.algo.ts:1259","pc":[5290]},{"teal":5581,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5291]},{"teal":5582,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5292,5293,5294]},{"teal":5583,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5295,5296]},{"teal":5584,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5297,5298]},{"teal":5585,"source":"contracts/validatorRegistry.algo.ts:1261","pc":[5299]},{"teal":5586,"source":"contracts/validatorRegistry.algo.ts:1260","pc":[5300]},{"teal":5589,"source":"contracts/validatorRegistry.algo.ts:1258","pc":[5301,5302,5303]},{"teal":5594,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5304,5305]},{"teal":5595,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5306]},{"teal":5596,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5307]},{"teal":5597,"source":"contracts/validatorRegistry.algo.ts:1263","pc":[5308]},{"teal":5601,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5309,5310]},{"teal":5602,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5311]},{"teal":5603,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5312]},{"teal":5604,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5313,5314]},{"teal":5605,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5315]},{"teal":5606,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5316]},{"teal":5607,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5317,5318]},{"teal":5608,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5319]},{"teal":5609,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5320]},{"teal":5610,"source":"contracts/validatorRegistry.algo.ts:1264","pc":[5321,5322]},{"teal":5615,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5323,5324]},{"teal":5616,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5325]},{"teal":5617,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5326]},{"teal":5618,"source":"contracts/validatorRegistry.algo.ts:1265","pc":[5327,5328,5329]},{"teal":5623,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5330]},{"teal":5624,"source":"contracts/validatorRegistry.algo.ts:1266","pc":[5331,5332]},{"teal":5632,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5333,5334]},{"teal":5633,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5335,5336]},{"teal":5634,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5337,5338]},{"teal":5635,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5339]},{"teal":5636,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5340,5341]},{"teal":5637,"source":"contracts/validatorRegistry.algo.ts:1269","pc":[5342]},{"teal":5640,"source":"contracts/validatorRegistry.algo.ts:1268","errorMessage":"must have required minimum balance of validator defined token to add stake","pc":[5343]},{"teal":5646,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5344,5345]},{"teal":5647,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5346]},{"teal":5648,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5347]},{"teal":5649,"source":"contracts/validatorRegistry.algo.ts:1273","pc":[5348,5349,5350]},{"teal":5657,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5351,5352]},{"teal":5658,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5353,5354]},{"teal":5659,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5355]},{"teal":5660,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5356,5357]},{"teal":5661,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5358,5359,5360]},{"teal":5662,"source":"contracts/validatorRegistry.algo.ts:1275","pc":[5361]},{"teal":5665,"source":"contracts/validatorRegistry.algo.ts:1274","errorMessage":"specified asset must be created by creator that the validator defined as a requirement to stake","pc":[5362]},{"teal":5671,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5363,5364]},{"teal":5672,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5365,5366]},{"teal":5673,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5367]},{"teal":5674,"source":"contracts/validatorRegistry.algo.ts:1279","pc":[5368,5369,5370]},{"teal":5679,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5371]},{"teal":5680,"source":"contracts/validatorRegistry.algo.ts:1280","pc":[5372,5373]},{"teal":5684,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5374,5375]},{"teal":5685,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5376,5377,5378]},{"teal":5686,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5379]},{"teal":5687,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5380,5381]},{"teal":5688,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5382,5383,5384]},{"teal":5689,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5385]},{"teal":5690,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5386,5387]},{"teal":5691,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5388]},{"teal":5692,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5389,5390]},{"teal":5698,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5391,5392]},{"teal":5699,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5393,5394]},{"teal":5700,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5395]},{"teal":5701,"source":"contracts/validatorRegistry.algo.ts:1282","pc":[5396,5397,5398]},{"teal":5706,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5399]},{"teal":5707,"source":"contracts/validatorRegistry.algo.ts:1283","pc":[5400,5401]},{"teal":5708,"source":"contracts/validatorRegistry.algo.ts:1284","pc":[5402,5403,5404]},{"teal":5714,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5405,5406]},{"teal":5715,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5407]},{"teal":5716,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5408]},{"teal":5717,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5409]},{"teal":5718,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5410,5411]},{"teal":5719,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5412]},{"teal":5720,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5413,5414,5415]},{"teal":5721,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5416,5417]},{"teal":5722,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5418,5419]},{"teal":5723,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5420,5421]},{"teal":5724,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5422]},{"teal":5725,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5423]},{"teal":5726,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5424]},{"teal":5727,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5425,5426]},{"teal":5728,"source":"contracts/validatorRegistry.algo.ts:1281","pc":[5427,5428,5429]},{"teal":5733,"source":"contracts/validatorRegistry.algo.ts:1287","pc":[5430,5431]},{"teal":5736,"source":"contracts/validatorRegistry.algo.ts:1287","errorMessage":"specified asset must be identical to the asset id defined as a requirement to stake","pc":[5432]},{"teal":5742,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5433,5434]},{"teal":5743,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5435,5436]},{"teal":5744,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5437]},{"teal":5745,"source":"contracts/validatorRegistry.algo.ts:1289","pc":[5438,5439,5440]},{"teal":5753,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5441,5442]},{"teal":5754,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5443,5444]},{"teal":5755,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5445]},{"teal":5756,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5446,5447]},{"teal":5757,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5448,5449,5450]},{"teal":5758,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5451]},{"teal":5759,"source":"contracts/validatorRegistry.algo.ts:1293","pc":[5452,5453,5454]},{"teal":5762,"source":"contracts/validatorRegistry.algo.ts:1292","errorMessage":"specified asset must be created by creator that is one of the linked addresses in an nfd","pc":[5455]},{"teal":5768,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5456,5457]},{"teal":5769,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5458,5459]},{"teal":5770,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5460]},{"teal":5771,"source":"contracts/validatorRegistry.algo.ts:1297","pc":[5461,5462,5463]},{"teal":5776,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5464,5465]},{"teal":5777,"source":"contracts/validatorRegistry.algo.ts:1299","pc":[5466,5467]},{"teal":5781,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5468,5469]},{"teal":5782,"source":"contracts/validatorRegistry.algo.ts:1300","pc":[5470,5471,5472]},{"teal":5785,"source":"contracts/validatorRegistry.algo.ts:1300","errorMessage":"provided NFD must be valid","pc":[5473]},{"teal":5793,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5474,5475]},{"teal":5794,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5476,5477]},{"teal":5795,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5478]},{"teal":5798,"source":"contracts/validatorRegistry.algo.ts:1304","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.owner.a')","pc":[5479]},{"teal":5799,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5480,5481]},{"teal":5800,"source":"contracts/validatorRegistry.algo.ts:1304","pc":[5482]},{"teal":5801,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5483]},{"teal":5802,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5484,5485,5486]},{"teal":5803,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5487,5488]},{"teal":5804,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5489,5490]},{"teal":5805,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5491,5492,5493]},{"teal":5806,"source":"contracts/validatorRegistry.algo.ts:1305","pc":[5494]},{"teal":5810,"source":"contracts/validatorRegistry.algo.ts:1303","errorMessage":"provided nfd for entry isn't owned or linked to the staker","pc":[5495]},{"teal":5818,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5496,5497]},{"teal":5819,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510,5511,5512]},{"teal":5820,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5513]},{"teal":5823,"source":"contracts/validatorRegistry.algo.ts:1311","errorMessage":"global state value does not exist: AppID.fromUint64(userOfferedNFDAppID).globalState('i.parentAppID')","pc":[5514]},{"teal":5824,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5515]},{"teal":5825,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5516,5517]},{"teal":5826,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5518,5519,5520]},{"teal":5827,"source":"contracts/validatorRegistry.algo.ts:1312","pc":[5521]},{"teal":5828,"source":"contracts/validatorRegistry.algo.ts:1311","pc":[5522]},{"teal":5831,"source":"contracts/validatorRegistry.algo.ts:1310","errorMessage":"specified nfd must be a segment of the nfd the validator specified as a requirement","pc":[5523]},{"teal":5834,"source":"contracts/validatorRegistry.algo.ts:1249","pc":[5524]},{"teal":5846,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5525,5526,5527]},{"teal":5849,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5528]},{"teal":5853,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5529,5530]},{"teal":5854,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5531,5532,5533,5534,5535,5536,5537,5538]},{"teal":5855,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5539]},{"teal":5858,"source":"contracts/validatorRegistry.algo.ts:1329","errorMessage":"global state value does not exist: AppID.fromUint64(nfdAppID).globalState('i.name')","pc":[5540]},{"teal":5859,"source":"contracts/validatorRegistry.algo.ts:1329","pc":[5541,5542]},{"teal":5867,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5543]},{"teal":5868,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5544,5545]},{"teal":5869,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5546,5547]},{"teal":5870,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5548,5549,5550,5551,5552,5553]},{"teal":5871,"source":"contracts/validatorRegistry.algo.ts:1333","pc":[5554,5555]},{"teal":5875,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5556,5557]},{"teal":5876,"source":"contracts/validatorRegistry.algo.ts:1332","pc":[5558,5559]},{"teal":5880,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5560,5561]},{"teal":5881,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5562]},{"teal":5882,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5563]},{"teal":5883,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5564]},{"teal":5884,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5565,5566,5567]},{"teal":5885,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5568]},{"teal":5886,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5569]},{"teal":5887,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5570,5571]},{"teal":5888,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5572,5573]},{"teal":5889,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5574]},{"teal":5890,"source":"contracts/validatorRegistry.algo.ts:1334","pc":[5575,5576]},{"teal":5893,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5577]},{"teal":5894,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5578,5579]},{"teal":5897,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5580]},{"teal":5898,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5581,5582]},{"teal":5899,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5583]},{"teal":5900,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5584]},{"teal":5901,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5585,5586]},{"teal":5902,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5587,5588,5589]},{"teal":5903,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5590]},{"teal":5904,"source":"contracts/validatorRegistry.algo.ts:1331","pc":[5591]},{"teal":5907,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5592,5593]},{"teal":5908,"source":"contracts/validatorRegistry.algo.ts:1327","pc":[5594]},{"teal":5919,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5595,5596,5597]},{"teal":5922,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5598]},{"teal":5923,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5599,5600]},{"teal":5930,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5601]},{"teal":5931,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5602,5603]},{"teal":5932,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5604,5605]},{"teal":5936,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5606,5607]},{"teal":5937,"source":"contracts/validatorRegistry.algo.ts:1348","pc":[5608,5609]},{"teal":5941,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5621,5622,5623,5624]},{"teal":5942,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5625,5626]},{"teal":5943,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5627,5628,5629,5630,5631,5632,5633,5634,5635,5636,5637,5638,5639,5640,5641]},{"teal":5944,"source":"contracts/validatorRegistry.algo.ts:1349","pc":[5642,5643]},{"teal":5947,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5644]},{"teal":5948,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5645,5646]},{"teal":5951,"source":"contracts/validatorRegistry.algo.ts:1347","pc":[5647]},{"teal":5955,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5648,5649]},{"teal":5956,"source":"contracts/validatorRegistry.algo.ts:1351","pc":[5650,5651]},{"teal":5960,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5652]},{"teal":5961,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5653,5654]},{"teal":5966,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5655,5656]},{"teal":5967,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5657,5658]},{"teal":5968,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5659]},{"teal":5969,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5660]},{"teal":5970,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5661,5662,5663]},{"teal":5974,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5664,5665]},{"teal":5975,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5666,5667]},{"teal":5976,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5668,5669]},{"teal":5977,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5670]},{"teal":5978,"source":"contracts/validatorRegistry.algo.ts:1353","pc":[5671,5672]},{"teal":5983,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5673,5674]},{"teal":5984,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5675,5676]},{"teal":5985,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5677]},{"teal":5986,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5678]},{"teal":5987,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5679,5680,5681]},{"teal":5988,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5682,5683]},{"teal":5989,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5684,5685]},{"teal":5990,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5686]},{"teal":5991,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5687]},{"teal":5994,"source":"contracts/validatorRegistry.algo.ts:1354","pc":[5688,5689,5690]},{"teal":5999,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5691]},{"teal":6000,"source":"contracts/validatorRegistry.algo.ts:1355","pc":[5692,5693,5694]},{"teal":6007,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5695,5696]},{"teal":6008,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5697,5698]},{"teal":6009,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5699]},{"teal":6010,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5700,5701]},{"teal":6011,"source":"contracts/validatorRegistry.algo.ts:1352","pc":[5702,5703,5704]},{"teal":6016,"source":"contracts/validatorRegistry.algo.ts:1358","pc":[5705]},{"teal":6020,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5706,5707]},{"teal":6023,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5708,5709]},{"teal":6024,"source":"contracts/validatorRegistry.algo.ts:1346","pc":[5710]},{"teal":6032,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5711,5712,5713]},{"teal":6035,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5714]},{"teal":6039,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5715,5716,5717]},{"teal":6040,"source":"contracts/validatorRegistry.algo.ts:1367","pc":[5718,5719]},{"teal":6044,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5720,5721]},{"teal":6045,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5722,5723]},{"teal":6046,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5724]},{"teal":6047,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5725]},{"teal":6048,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5726,5727]},{"teal":6049,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5728]},{"teal":6050,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5729]},{"teal":6051,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5730]},{"teal":6052,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5731]},{"teal":6053,"source":"contracts/validatorRegistry.algo.ts:1369","pc":[5732]},{"teal":6056,"source":"contracts/validatorRegistry.algo.ts:1369","errorMessage":"wideRatio failed","pc":[5733]},{"teal":6059,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5734,5735]},{"teal":6060,"source":"contracts/validatorRegistry.algo.ts:1366","pc":[5736]},{"teal":6067,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5737,5738,5739]},{"teal":6070,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5740]},{"teal":6074,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5741,5742,5743]},{"teal":6075,"source":"contracts/validatorRegistry.algo.ts:1377","pc":[5744,5745]},{"teal":6079,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5746,5747]},{"teal":6080,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5748,5749,5750]},{"teal":6081,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5751]},{"teal":6082,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5752]},{"teal":6083,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5753,5754]},{"teal":6084,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5755]},{"teal":6085,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5756]},{"teal":6086,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5757]},{"teal":6087,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5758]},{"teal":6088,"source":"contracts/validatorRegistry.algo.ts:1379","pc":[5759]},{"teal":6091,"source":"contracts/validatorRegistry.algo.ts:1379","errorMessage":"wideRatio failed","pc":[5760]},{"teal":6094,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5761,5762]},{"teal":6095,"source":"contracts/validatorRegistry.algo.ts:1376","pc":[5763]},{"teal":6101,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5764,5765,5766]},{"teal":6105,"source":"contracts/validatorRegistry.algo.ts:1386","pc":[5767,5768]},{"teal":6106,"source":"contracts/validatorRegistry.algo.ts:1385","pc":[5769]},{"teal":6110,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5770,5771,5772]},{"teal":6114,"source":"contracts/validatorRegistry.algo.ts:1390","pc":[5773]},{"teal":6115,"source":"contracts/validatorRegistry.algo.ts:1389","pc":[5774]},{"teal":6119,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5775,5776,5777]},{"teal":6122,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5778]},{"teal":6126,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5779,5780]},{"teal":6127,"source":"contracts/validatorRegistry.algo.ts:1402","pc":[5781,5782]},{"teal":6131,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5783,5784]},{"teal":6132,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5785,5786]},{"teal":6133,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5787,5788]},{"teal":6134,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5789]},{"teal":6135,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5790]},{"teal":6136,"source":"contracts/validatorRegistry.algo.ts:1403","pc":[5791,5792]},{"teal":6140,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5793,5794]},{"teal":6141,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5795,5796]},{"teal":6142,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5797,5798]},{"teal":6143,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5799]},{"teal":6144,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5800]},{"teal":6145,"source":"contracts/validatorRegistry.algo.ts:1404","pc":[5801,5802]},{"teal":6149,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5803,5804]},{"teal":6150,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5805,5806]},{"teal":6151,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5807,5808]},{"teal":6152,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5809]},{"teal":6153,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5810]},{"teal":6154,"source":"contracts/validatorRegistry.algo.ts:1405","pc":[5811,5812]},{"teal":6158,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5813,5814]},{"teal":6159,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5815,5816]},{"teal":6160,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5817,5818]},{"teal":6161,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5819]},{"teal":6162,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5820]},{"teal":6163,"source":"contracts/validatorRegistry.algo.ts:1406","pc":[5821,5822]},{"teal":6167,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5823,5824]},{"teal":6168,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5825,5826]},{"teal":6169,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5827,5828]},{"teal":6170,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5829]},{"teal":6171,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5830]},{"teal":6172,"source":"contracts/validatorRegistry.algo.ts:1407","pc":[5831,5832]},{"teal":6176,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5833,5834]},{"teal":6177,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5835,5836]},{"teal":6178,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5837,5838]},{"teal":6179,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5839]},{"teal":6180,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5840]},{"teal":6181,"source":"contracts/validatorRegistry.algo.ts:1408","pc":[5841,5842]},{"teal":6185,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5843,5844]},{"teal":6186,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5845,5846]},{"teal":6187,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5847,5848]},{"teal":6188,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5849]},{"teal":6189,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5850]},{"teal":6190,"source":"contracts/validatorRegistry.algo.ts:1409","pc":[5851,5852]},{"teal":6194,"source":"contracts/validatorRegistry.algo.ts:1410","pc":[5853,5854]},{"teal":6197,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5855,5856]},{"teal":6198,"source":"contracts/validatorRegistry.algo.ts:1393","pc":[5857]},{"teal":6202,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5858,5859,5860]},{"teal":6206,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5861,5862,5863]},{"teal":6207,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5864,5865]},{"teal":6208,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5866,5867,5868]},{"teal":6209,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5869]},{"teal":6210,"source":"contracts/validatorRegistry.algo.ts:1417","pc":[5870]},{"teal":6211,"source":"contracts/validatorRegistry.algo.ts:1413","pc":[5871]},{"teal":6214,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5872,5873,5874,5875,5876,5877]},{"teal":6215,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5878,5879,5880]},{"teal":6216,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5881,5882,5883,5884]},{"teal":6219,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for create NoOp","pc":[5885]},{"teal":6222,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5886,5887,5888,5889,5890,5891]},{"teal":6223,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5892,5893,5894,5895,5896,5897]},{"teal":6224,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5898,5899,5900,5901,5902,5903]},{"teal":6225,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5904,5905,5906,5907,5908,5909]},{"teal":6226,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5910,5911,5912,5913,5914,5915]},{"teal":6227,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5916,5917,5918,5919,5920,5921]},{"teal":6228,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5922,5923,5924,5925,5926,5927]},{"teal":6229,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5928,5929,5930,5931,5932,5933]},{"teal":6230,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5934,5935,5936,5937,5938,5939]},{"teal":6231,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5940,5941,5942,5943,5944,5945]},{"teal":6232,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5946,5947,5948,5949,5950,5951]},{"teal":6233,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5952,5953,5954,5955,5956,5957]},{"teal":6234,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5958,5959,5960,5961,5962,5963]},{"teal":6235,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5964,5965,5966,5967,5968,5969]},{"teal":6236,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5970,5971,5972,5973,5974,5975]},{"teal":6237,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5976,5977,5978,5979,5980,5981]},{"teal":6238,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5982,5983,5984,5985,5986,5987]},{"teal":6239,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5988,5989,5990,5991,5992,5993]},{"teal":6240,"source":"contracts/validatorRegistry.algo.ts:50","pc":[5994,5995,5996,5997,5998,5999]},{"teal":6241,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6000,6001,6002,6003,6004,6005]},{"teal":6242,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6006,6007,6008,6009,6010,6011]},{"teal":6243,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6012,6013,6014,6015,6016,6017]},{"teal":6244,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6018,6019,6020,6021,6022,6023]},{"teal":6245,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6024,6025,6026,6027,6028,6029]},{"teal":6246,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6030,6031,6032,6033,6034,6035]},{"teal":6247,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6036,6037,6038,6039,6040,6041]},{"teal":6248,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6042,6043,6044,6045,6046,6047]},{"teal":6249,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6048,6049,6050,6051,6052,6053]},{"teal":6250,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6054,6055,6056,6057,6058,6059]},{"teal":6251,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6060,6061,6062,6063,6064,6065]},{"teal":6252,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6066,6067,6068,6069,6070,6071]},{"teal":6253,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6072,6073,6074,6075,6076,6077]},{"teal":6254,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6078,6079,6080,6081,6082,6083]},{"teal":6255,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6084,6085,6086]},{"teal":6256,"source":"contracts/validatorRegistry.algo.ts:50","pc":[6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100,6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116,6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132,6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154]},{"teal":6259,"source":"contracts/validatorRegistry.algo.ts:50","errorMessage":"this contract does not implement the given ABI method for call NoOp","pc":[6155]}],"pcOffsetMethod":"cblocks"},"clear":{"sourceInfo":[],"pcOffsetMethod":"none"}},"source":{"approval":"I3ByYWdtYSB2ZXJzaW9uIDExCmludGNibG9jayAwIDEgOCAyNCAxOCAyNjggMzIgNiAzIDI0MiAyIDEwIDI1MiAyNjAgNzAwIDQgMTAwMDAwIDkwMCAxNiAyMDAgNDAgNzIgMTkyIDI0NCAxMDAwMDAwIDQwOTYgNSAyMjYgVE1QTF9uZmRSZWdpc3RyeUFwcElkIDMwMCA0MzIgODkyIDEwMDAgMjg1MDAgNTAwMDAgMTEgODAgMTQ1IDE1MyAyMDkKYnl0ZWNibG9jayAweDc2IDB4IDB4MTUxZjdjNzUgMHg3MzcwNzMgMHg3Mzc0NjE2YjY1NjQgMHgwMCAweDZlNzU2ZDUzNzQ2MTZiNjU3MjczIDB4MDAwMDAwMDAwMDAwMDAwMCAweDBhODEwMSAweDcwNmY2ZjZjNTQ2NTZkNzA2YzYxNzQ2NTQxNzA3MDcyNmY3NjYxNmM0Mjc5NzQ2NTczIDB4NjkyZTZmNzc2ZTY1NzIyZTYxIDB4NmU3NTZkNTYgMHg2OTZlNjk3NCAweDYzZjNmMjhiIDB4MTJmNGJkNGIKCi8vIFRoaXMgVEVBTCB3YXMgZ2VuZXJhdGVkIGJ5IFRFQUxTY3JpcHQgdjAuMTA2LjAKLy8gaHR0cHM6Ly9naXRodWIuY29tL2FsZ29yYW5kZm91bmRhdGlvbi9URUFMU2NyaXB0CgovLyBUaGlzIGNvbnRyYWN0IGlzIGNvbXBsaWFudCB3aXRoIGFuZC9vciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgQVJDczogWyBBUkM0IF0KCi8vIFRoZSBmb2xsb3dpbmcgdGVuIGxpbmVzIG9mIFRFQUwgaGFuZGxlIGluaXRpYWwgcHJvZ3JhbSBmbG93Ci8vIFRoaXMgcGF0dGVybiBpcyB1c2VkIHRvIG1ha2UgaXQgZWFzeSBmb3IgYW55b25lIHRvIHBhcnNlIHRoZSBzdGFydCBvZiB0aGUgcHJvZ3JhbSBhbmQgZGV0ZXJtaW5lIGlmIGEgc3BlY2lmaWMgYWN0aW9uIGlzIGFsbG93ZWQKLy8gSGVyZSwgYWN0aW9uIHJlZmVycyB0byB0aGUgT25Db21wbGV0ZSBpbiBjb21iaW5hdGlvbiB3aXRoIHdoZXRoZXIgdGhlIGFwcCBpcyBiZWluZyBjcmVhdGVkIG9yIGNhbGxlZAovLyBFdmVyeSBwb3NzaWJsZSBhY3Rpb24gZm9yIHRoaXMgY29udHJhY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnQKLy8gSWYgdGhlIGFjdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGNvbnRyYWN0LCBpdHMgcmVzcGVjdGl2ZSBicmFuY2ggd2lsbCBiZSAiKk5PVF9JTVBMRU1FTlRFRCIgd2hpY2gganVzdCBjb250YWlucyAiZXJyIgp0eG4gQXBwbGljYXRpb25JRAohCmludGMgNyAvLyA2CioKdHhuIE9uQ29tcGxldGlvbgorCnN3aXRjaCAqY2FsbF9Ob09wICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqY3JlYXRlX05vT3AgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVEICpOT1RfSU1QTEVNRU5URUQgKk5PVF9JTVBMRU1FTlRFRCAqTk9UX0lNUExFTUVOVEVECgoqTk9UX0lNUExFTUVOVEVEOgoJLy8gVGhlIHJlcXVlc3RlZCBhY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgY29udHJhY3QuIEFyZSB5b3UgdXNpbmcgdGhlIGNvcnJlY3QgT25Db21wbGV0ZT8gRGlkIHlvdSBzZXQgeW91ciBhcHAgSUQ/CgllcnIKCi8vIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCiphYmlfcm91dGVfY3JlYXRlQXBwbGljYXRpb246CgkvLyBleGVjdXRlIGNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkCgljYWxsc3ViIGNyZWF0ZUFwcGxpY2F0aW9uCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjcmVhdGVBcHBsaWNhdGlvbigpOiB2b2lkCmNyZWF0ZUFwcGxpY2F0aW9uOgoJcHJvdG8gMCAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIKCS8vIHRoaXMuc3Rha2luZ1Bvb2xJbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDAgLy8gMAoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODMKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IDAKCWJ5dGVjIDExIC8vICAibnVtViIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0CgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgPSAwCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWludGMgMCAvLyAwCglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSA9IDAKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglpbnRjIDAgLy8gMAoJYXBwX2dsb2JhbF9wdXQKCXJldHN1YgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdCh1aW50NjQpdm9pZAoqYWJpX3JvdXRlX2luaXRTdGFraW5nQ29udHJhY3Q6CgkvLyBhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGluaXRTdGFraW5nQ29udHJhY3QodWludDY0KXZvaWQKCWNhbGxzdWIgaW5pdFN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gaW5pdFN0YWtpbmdDb250cmFjdChhcHByb3ZhbFByb2dyYW1TaXplOiB1aW50NjQpOiB2b2lkCmluaXRTdGFraW5nQ29udHJhY3Q6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MAoJLy8gdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5jcmVhdGUoYXBwcm92YWxQcm9ncmFtU2l6ZSkKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJZnJhbWVfZGlnIC0xIC8vIGFwcHJvdmFsUHJvZ3JhbVNpemU6IHVpbnQ2NAoJYm94X2NyZWF0ZQoJcG9wCglyZXRzdWIKCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKHVpbnQ2NCxieXRlW10pdm9pZAoqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhOgoJLy8gZGF0YTogYnl0ZVtdCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglleHRyYWN0IDIgMAoKCS8vIG9mZnNldDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQKCWNhbGxzdWIgbG9hZFN0YWtpbmdDb250cmFjdERhdGEKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGxvYWRTdGFraW5nQ29udHJhY3REYXRhKG9mZnNldDogdWludDY0LCBkYXRhOiBieXRlcyk6IHZvaWQKbG9hZFN0YWtpbmdDb250cmFjdERhdGE6Cglwcm90byAyIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5NAoJLy8gYXNzZXJ0KCF0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUpCglieXRlYyAxMiAvLyAgImluaXQiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAwIC8vIDAKCWdldGJpdAoJIQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTUKCS8vIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0ucmVwbGFjZShvZmZzZXQsIGRhdGEpCglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWZyYW1lX2RpZyAtMSAvLyBvZmZzZXQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGRhdGE6IGJ5dGVzCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoqYWJpX3JvdXRlX2ZpbmFsaXplU3Rha2luZ0NvbnRyYWN0OgoJLy8gZXhlY3V0ZSBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdCgpdm9pZAoJY2FsbHN1YiBmaW5hbGl6ZVN0YWtpbmdDb250cmFjdAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZmluYWxpemVTdGFraW5nQ29udHJhY3QoKTogdm9pZApmaW5hbGl6ZVN0YWtpbmdDb250cmFjdDoKCXByb3RvIDAgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjk5CgkvLyB0aGlzLnN0YWtpbmdQb29sSW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlCglieXRlYyAxMiAvLyAgImluaXQiCglpbnRjIDEgLy8gMQoJYnl0ZWMgNSAvLyAweDAwCglpbnRjIDAgLy8gMAoJdW5jb3ZlciAyCglzZXRiaXQKCWFwcF9nbG9iYWxfcHV0CglyZXRzdWIKCi8vIGdhcygpdm9pZAoqYWJpX3JvdXRlX2dhczoKCS8vIGV4ZWN1dGUgZ2FzKCl2b2lkCgljYWxsc3ViIGdhcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2FzKCk6IHZvaWQKLy8KLy8gZ2FzIGlzIGEgZHVtbXkgbm8tb3AgY2FsbCB0aGF0IGNhbiBiZSB1c2VkIHRvIHBvb2wtdXAgcmVzb3VyY2UgcmVmZXJlbmNlcyBhbmQgb3Bjb2RlIGNvc3QKZ2FzOgoJcHJvdG8gMCAwCglyZXRzdWIKCi8vIGdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0TWJyQW1vdW50czoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRNYnJBbW91bnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRNYnJBbW91bnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0TWJyQW1vdW50cygpOiBNYnJBbW91bnRzCi8vCi8vIFJldHVybnMgdGhlIE1CUiBhbW91bnRzIG5lZWRlZCBmb3IgdmFyaW91cyBhY3Rpb25zOgovLyBbCi8vIGFkZFZhbGlkYXRvck1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgdmFsaWRhdG9yIC0gcGFpZCB0byB2YWxpZGF0b3IgY29udHJhY3QKLy8gYWRkUG9vbE1icjogdWludDY0IC0gbWJyIG5lZWRlZCB0byBhZGQgYSBuZXcgcG9vbCAtIHBhaWQgdG8gdmFsaWRhdG9yCi8vIHBvb2xJbml0TWJyOiB1aW50NjQgLSBtYnIgbmVlZGVkIHRvIGluaXRTdG9yYWdlKCkgb2YgcG9vbCAtIHBhaWQgdG8gcG9vbCBpdHNlbGYKLy8gYWRkU3Rha2VyTWJyOiB1aW50NjQgLSBtYnIgc3Rha2VyIG5lZWRzIHRvIGFkZCB0byBmaXJzdCBzdGFraW5nIHBheW1lbnQgKHN0YXlzIHcvIHZhbGlkYXRvcikKLy8gXQpnZXRNYnJBbW91bnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwCgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgYWRkVmFsaWRhdG9yTWJyOiB0aGlzLmNvc3RGb3JCb3hTdG9yYWdlKDEgLyogdiBwcmVmaXggKi8gKyBsZW48VmFsaWRhdG9ySWRUeXBlPigpICsgbGVuPFZhbGlkYXRvckluZm8+KCkpLAoJLy8gICAgICAgICAgICAgYWRkUG9vbE1icjogdGhpcy5taW5CYWxhbmNlRm9yQWNjb3VudCgKCS8vICAgICAgICAgICAgICAgICAxLAoJLy8gICAgICAgICAgICAgICAgIC8vIHdlIGNvdWxkIGNhbGN1bGF0ZSB0aGlzIGRpcmVjdGx5IGJ5IHJlZmVyZW5jaW5nIHRoZSBzaXplIG9mIHN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtIGJ1dCBpdCB3b3VsZAoJLy8gICAgICAgICAgICAgICAgIC8vIG1lYW4gb3VyIGNhbGxlcnMgd291bGQgaGF2ZSB0byByZWZlcmVuY2UgdGhlIGJveCBBTkQgYnV5IHVwIGkvbyAtIHNvIGp1c3QgZ28gbWF4IG9uIGV4dHJhIHBhZ2VzCgkvLyAgICAgICAgICAgICAgICAgMywKCS8vICAgICAgICAgICAgICAgICAwLAoJLy8gICAgICAgICAgICAgICAgIDAsCgkvLyAgICAgICAgICAgICAgICAgMCwKCS8vICAgICAgICAgICAgICAgICBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQsCgkvLyAgICAgICAgICAgICAgICAgU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1CeXRlU2xpY2UsCgkvLyAgICAgICAgICAgICApLAoJLy8gICAgICAgICAgICAgcG9vbEluaXRNYnI6CgkvLyAgICAgICAgICAgICAgICAgQUxHT1JBTkRfQUNDT1VOVF9NSU5fQkFMQU5DRSArCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5jb3N0Rm9yQm94U3RvcmFnZSg3IC8qICdzdGFrZXJzJyBuYW1lICovICsgbGVuPFN0YWtlZEluZm8+KCkgKiBNQVhfU1RBS0VSU19QRVJfUE9PTCksCgkvLyAgICAgICAgICAgICBhZGRTdGFrZXJNYnI6CgkvLyAgICAgICAgICAgICAgICAgLy8gaG93IG11Y2ggdG8gY2hhcmdlIGZvciBmaXJzdCB0aW1lIGEgc3Rha2VyIGFkZHMgc3Rha2UgLSBzaW5jZSB3ZSBhZGQgYSB0cmFja2luZyBib3ggcGVyIHN0YWtlcgoJLy8gICAgICAgICAgICAgICAgIHRoaXMuY29zdEZvckJveFN0b3JhZ2UoCgkvLyAgICAgICAgICAgICAgICAgICAgIDMgLyogJ3NwcycgcHJlZml4ICovICsgbGVuPEFkZHJlc3M+KCkgKyBsZW48VmFsaWRhdG9yUG9vbEtleT4oKSAqIE1BWF9QT09MU19QRVJfU1RBS0VSLAoJLy8gICAgICAgICAgICAgICAgICksIC8vIHNpemUgb2Yga2V5ICsgYWxsIHZhbHVlcwoJLy8gICAgICAgICB9CglwdXNoaW50IDExMDEKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWludGMgOCAvLyAzCglpbnRjIDM1IC8vIDExCglpbnRjIDAgLy8gMAoJZHVwbiAyCglpbnRjIDggLy8gMwoJaW50YyAxIC8vIDEKCWNhbGxzdWIgbWluQmFsYW5jZUZvckFjY291bnQKCWl0b2IKCWNvbmNhdAoJaW50YyAxNiAvLyAxMDAwMDAKCXB1c2hpbnQgMTI4MDcKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCSsKCWl0b2IKCWNvbmNhdAoJcHVzaGludCAxNzkKCWNhbGxzdWIgY29zdEZvckJveFN0b3JhZ2UKCWl0b2IKCWNvbmNhdAoJcmV0c3ViCgovLyBnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9nZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBleGVjdXRlIGdldFByb3RvY29sQ29uc3RyYWludHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRQcm90b2NvbENvbnN0cmFpbnRzCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UHJvdG9jb2xDb25zdHJhaW50cygpOiBDb25zdHJhaW50cwovLwovLyBSZXR1cm5zIHRoZSBwcm90b2NvbCBjb25zdHJhaW50cyBzbyB0aGF0IFVJcyBjYW4gbGltaXQgd2hhdCB1c2VycyBzcGVjaWZ5IGZvciB2YWxpZGF0b3IgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzLgpnZXRQcm90b2NvbENvbnN0cmFpbnRzOgoJcHJvdG8gMCAxCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQ5CgkvLyByZXR1cm4gewoJLy8gICAgICAgICAgICAgZXBvY2hQYXlvdXRSb3VuZHNNaW46IE1JTl9FUE9DSF9MRU5HVEgsCgkvLyAgICAgICAgICAgICBlcG9jaFBheW91dFJvdW5kc01heDogTUFYX0VQT0NIX0xFTkdUSCwKCS8vICAgICAgICAgICAgIG1pblBjdFRvVmFsaWRhdG9yV0ZvdXJEZWNpbWFsczogTUlOX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICBtYXhQY3RUb1ZhbGlkYXRvcldGb3VyRGVjaW1hbHM6IE1BWF9QQ1RfVE9fVkFMSURBVE9SLAoJLy8gICAgICAgICAgICAgbWluRW50cnlTdGFrZTogTUlOX0FMR09fU1RBS0VfUEVSX1BPT0wsCgkvLyAgICAgICAgICAgICBtYXhBbGdvUGVyUG9vbDogdGhpcy5tYXhBbGdvQWxsb3dlZFBlclBvb2woKSwKCS8vICAgICAgICAgICAgIG1heEFsZ29QZXJWYWxpZGF0b3I6IHRoaXMubWF4QWxsb3dlZFN0YWtlKCksCgkvLyAgICAgICAgICAgICBhbXRDb25zaWRlcmVkU2F0dXJhdGVkOiB0aGlzLmFsZ29TYXR1cmF0aW9uTGV2ZWwoKSwKCS8vICAgICAgICAgICAgIG1heE5vZGVzOiBNQVhfTk9ERVMsCgkvLyAgICAgICAgICAgICBtYXhQb29sc1Blck5vZGU6IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgIG1heFN0YWtlcnNQZXJQb29sOiBNQVhfU1RBS0VSU19QRVJfUE9PTCwKCS8vICAgICAgICAgfQoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwZjQyNDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBmNDI0MDAwMDAwMDAwMDAwZjQyNDAKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglpdG9iCgljb25jYXQKCWNhbGxzdWIgbWF4QWxsb3dlZFN0YWtlCglpdG9iCgljb25jYXQKCWNhbGxzdWIgYWxnb1NhdHVyYXRpb25MZXZlbAoJaXRvYgoJY29uY2F0CglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDA4Cgljb25jYXQKCXB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDMKCWNvbmNhdAoJcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDBjOAoJY29uY2F0CglyZXRzdWIKCi8vIGdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NAoqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnM6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGV4ZWN1dGUgZ2V0TnVtVmFsaWRhdG9ycygpdWludDY0CgljYWxsc3ViIGdldE51bVZhbGlkYXRvcnMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROdW1WYWxpZGF0b3JzKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBjdXJyZW50IG51bWJlciBvZiB2YWxpZGF0b3JzCmdldE51bVZhbGlkYXRvcnM6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNjkKCS8vIHJldHVybiB0aGlzLm51bVZhbGlkYXRvcnMudmFsdWUKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglyZXRzdWIKCi8vIGdldFZhbGlkYXRvckNvbmZpZyh1aW50NjQpKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yQ29uZmlnOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JDb25maWcodWludDY0KSh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JDb25maWcKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRWYWxpZGF0b3JDb25maWcodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFZhbGlkYXRvckNvbmZpZwpnZXRWYWxpZGF0b3JDb25maWc6Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNzQKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0VmFsaWRhdG9yU3RhdGUodWludDY0KSh1aW50MTYsdWludDY0LHVpbnQ2NCx1aW50NjQpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yU3RhdGU6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KQoJY2FsbHN1YiBnZXRWYWxpZGF0b3JTdGF0ZQoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvclN0YXRlKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBWYWxpZGF0b3JDdXJTdGF0ZQpnZXRWYWxpZGF0b3JTdGF0ZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE3OQoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUKCWludGMgOSAvLyAgaGVhZE9mZnNldAoJcHVzaGludCAyNgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCiphYmlfcm91dGVfZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRWYWxpZGF0b3JPd25lckFuZE1hbmFnZXIodWludDY0KShhZGRyZXNzLGFkZHJlc3MpCgljYWxsc3ViIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogW0FkZHJlc3MsIEFkZHJlc3NdCmdldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlcjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE4NAoJLy8gcmV0dXJuIFsKCS8vICAgICAgICAgICAgIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubWFuYWdlciwKCS8vICAgICAgICAgXQoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgljb25jYXQKCXJldHN1YgoKLy8gZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXQoqYWJpX3JvdXRlX2dldFBvb2xzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXRQb29scyh1aW50NjQpKHVpbnQ2NCx1aW50MTYsdWludDY0KVtdCgljYWxsc3ViIGdldFBvb2xzCglkdXAKCWxlbgoJaW50YyA0IC8vIDE4CgkvCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0UG9vbHModmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IFBvb2xJbmZvW10KLy8KLy8gUmV0dXJuIGxpc3Qgb2YgYWxsIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvci4KLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvcklkCi8vIEByZXR1cm4ge1Bvb2xJbmZvW119IC0gYXJyYXkgb2YgcG9vbHMKLy8gTm90IGNhbGxhYmxlIGZyb20gb3RoZXIgY29udHJhY3RzIGJlY2F1c2UgPjFLIHJldHVybiBidXQgY2FuIGJlIGNhbGxlZCB3LyBzaW11bGF0ZSB3aGljaCBidW1wcyBsb2cgcmV0dXJucwpnZXRQb29sczoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTgKCS8vIHJldERhdGE6IFBvb2xJbmZvW10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxOTkKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IHBvb2xTZXQubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl8wOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjAwCgkvLyBpIDwgcG9vbFNldC5sZW5ndGgKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8CglieiAqZm9yXzBfZW5kCgoJLy8gKmlmMF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjIwMQoJLy8gcG9vbFNldFtpXS5wb29sQXBwSWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjBfZW5kCgoJLy8gKmlmMF9jb25zZXF1ZW50CgliICpmb3JfMF9lbmQKCippZjBfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjA1CgkvLyByZXREYXRhLnB1c2gocG9vbFNldFtpXSkKCWZyYW1lX2RpZyAwIC8vIHJldERhdGE6IFBvb2xJbmZvW10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDE2LHVpbnQ2NClbMjRdCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDQgLy8gMTgKCWV4dHJhY3QzCgljb25jYXQKCWZyYW1lX2J1cnkgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoqZm9yXzBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDAKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzAKCipmb3JfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMDcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBQb29sSW5mb1tdCgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRQb29sQXBwSWQodWludDY0LHVpbnQ2NCl1aW50NjQKKmFiaV9yb3V0ZV9nZXRQb29sQXBwSWQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHBvb2xJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0CgljYWxsc3ViIGdldFBvb2xBcHBJZAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFBvb2xBcHBJZCh2YWxpZGF0b3JJZDogdWludDY0LCBwb29sSWQ6IHVpbnQ2NCk6IHVpbnQ2NAovLwovLyBnZXRQb29sQXBwSWQgaXMgdXNlZnVsIGZvciBjYWxsZXJzIHRvIGRldGVybWluZSBhcHAgdG8gY2FsbCBmb3IgcmVtb3Zpbmcgc3Rha2UgaWYgdGhleSBkb24ndCBoYXZlIHN0YWtpbmcgb3IKLy8gd2FudCB0byBnZXQgc3Rha2VyIGxpc3QgZm9yIGFuIGFjY291bnQuICBUaGUgc3Rha2luZyBwb29sIGFsc28gdXNlcyBpdCB0byBnZXQgdGhlIGFwcCBpZCBvZiBzdGFraW5nIHBvb2wgMQovLyAod2hpY2ggY29udGFpbnMgcmV3YXJkIHRva2VucyBpZiBiZWluZyB1c2VkKSBzbyB0aGF0IHRoZSBhbW91bnQgYXZhaWxhYmxlIGNhbiBiZSBkZXRlcm1pbmVkLgpnZXRQb29sQXBwSWQ6Cglwcm90byAyIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMTcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xJZCAhPT0gMCAmJiBwb29sSWQgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29scy5sZW5ndGgsCgkvLyAgICAgICAgICAgICAncG9vbCBpZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgbnVtYmVyIG9mIHBvb2xzIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDAKCWZyYW1lX2RpZyAtMiAvLyBwb29sSWQ6IHVpbnQ2NAoJaW50YyAzIC8vIDI0Cgk8PQoJJiYKCipza2lwX2FuZDA6CgkvLyBwb29sIGlkIG11c3QgYmUgYmV0d2VlbiAxIGFuZCBudW1iZXIgb2YgcG9vbHMgZm9yIHRoaXMgdmFsaWRhdG9yCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjEKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzW3Bvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbElkOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglyZXRzdWIKCi8vIGdldFBvb2xJbmZvKCh1aW50NjQsdWludDY0LHVpbnQ2NCkpKHVpbnQ2NCx1aW50MTYsdWludDY0KQoqYWJpX3JvdXRlX2dldFBvb2xJbmZvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBwb29sS2V5OiAodWludDY0LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglkdXAKCWxlbgoJaW50YyAzIC8vIDI0Cgk9PQoKCS8vIGFyZ3VtZW50IDAgKHBvb2xLZXkpIGZvciBnZXRQb29sSW5mbyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkKCWNhbGxzdWIgZ2V0UG9vbEluZm8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXRQb29sSW5mbyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogUG9vbEluZm8KZ2V0UG9vbEluZm86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyA0IC8vIDE4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJcmV0c3ViCgovLyBnZXRDdXJNYXhTdGFrZVBlclBvb2wodWludDY0KXVpbnQ2NAoqYWJpX3JvdXRlX2dldEN1ck1heFN0YWtlUGVyUG9vbDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHVpbnQ2NCl1aW50NjQKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglpdG9iCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiB1aW50NjQKLy8KLy8gQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIHN0YWtlIHBlciBwb29sIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gTm9ybWFsbHkgdGhpcyB3b3VsZCBiZSBtYXhBbGdvUGVyUG9vbCwgYnV0IGl0IHNob3VsZCBhbHNvIG5ldmVyIGdvIGFib3ZlIE1heEFsbG93ZWRTdGFrZSAvIG51bVBvb2xzIHNvCi8vIGFzIHBvb2xzIGFyZSBhZGRlZCB0aGUgbWF4IGFsbG93ZWQgcGVyIHBvb2wgY2FuIHJlZHVjZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCmdldEN1ck1heFN0YWtlUGVyUG9vbDoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzgKCS8vIG51bVBvb2xzID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyMzkKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzID0gdGhpcy5tYXhBbGxvd2VkU3Rha2UoKSAvIG51bVBvb2xzCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJLwoJZnJhbWVfYnVyeSAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDAKCS8vIG1heFBlclBvb2w6IHVpbnQ2NCA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1heEFsZ29QZXJQb29sCglwdXNoaW50IDIxNwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCgkvLyAqaWYxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQxCgkvLyBtYXhQZXJQb29sID09PSAwCglmcmFtZV9kaWcgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmMV9lbmQKCgkvLyAqaWYxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI0MgoJLy8gbWF4UGVyUG9vbCA9IHRoaXMubWF4QWxnb0FsbG93ZWRQZXJQb29sKCkKCWNhbGxzdWIgbWF4QWxnb0FsbG93ZWRQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoqaWYxX2VuZDoKCS8vICppZjJfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNDQKCS8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzIDwgbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDEgLy8gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHM6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8CglieiAqaWYyX2VuZAoKCS8vICppZjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ1CgkvLyBtYXhQZXJQb29sID0gaGFyZE1heERpdmlkZWRCZXR3ZWVuUG9vbHMKCWZyYW1lX2RpZyAxIC8vIGhhcmRNYXhEaXZpZGVkQmV0d2VlblBvb2xzOiB1aW50NjQKCWZyYW1lX2J1cnkgMiAvLyBtYXhQZXJQb29sOiB1aW50NjQKCippZjJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjQ3CgkvLyByZXR1cm4gbWF4UGVyUG9vbAoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbAoqYWJpX3JvdXRlX2RvZXNTdGFrZXJOZWVkVG9QYXlNQlI6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBkb2VzU3Rha2VyTmVlZFRvUGF5TUJSIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBleGVjdXRlIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIoYWRkcmVzcylib29sCgljYWxsc3ViIGRvZXNTdGFrZXJOZWVkVG9QYXlNQlIKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCXVuY292ZXIgMgoJc2V0Yml0Cgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXI6IEFkZHJlc3MpOiBib29sZWFuCi8vCi8vIEhlbHBlciBjYWxsZXJzIGNhbiBjYWxsIHcvIHNpbXVsYXRlIHRvIGRldGVybWluZSBpZiAnQWRkU3Rha2VyJyBNQlIgc2hvdWxkIGJlIGluY2x1ZGVkIHcvIHN0YWtpbmcgYW1vdW50Ci8vIEBwYXJhbSBzdGFrZXIKZG9lc1N0YWtlck5lZWRUb1BheU1CUjoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI1NgoJLy8gcmV0dXJuICF0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS5leGlzdHMKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoJIQoJcmV0c3ViCgovLyBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQoYWRkcmVzcykodWludDY0LHVpbnQ2NCx1aW50NjQpW10KKmFiaV9yb3V0ZV9nZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChzdGFrZXIpIGZvciBnZXRTdGFrZWRQb29sc0ZvckFjY291bnQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIGV4ZWN1dGUgZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdCgljYWxsc3ViIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudAoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJLwoJaXRvYgoJZXh0cmFjdCA2IDIKCXN3YXAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldFN0YWtlZFBvb2xzRm9yQWNjb3VudChzdGFrZXI6IEFkZHJlc3MpOiBWYWxpZGF0b3JQb29sS2V5W10KLy8KLy8gUmV0cmlldmVzIHRoZSBzdGFrZWQgcG9vbHMgZm9yIGFuIGFjY291bnQuCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFjY291bnQgdG8gcmV0cmlldmUgc3Rha2VkIHBvb2xzIGZvci4KLy8gQHJldHVybiB7VmFsaWRhdG9yUG9vbEtleVtdfSAtIFRoZSBhcnJheSBvZiBzdGFrZWQgcG9vbHMgZm9yIHRoZSBhY2NvdW50LgpnZXRTdGFrZWRQb29sc0ZvckFjY291bnQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAyCgoJLy8gKmlmM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI2NwoJLy8gIXRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgkhCglieiAqaWYzX2VuZAoKCS8vICppZjNfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjY4CgkvLyByZXR1cm4gW10KCWJ5dGVjIDEgLy8gMHgKCWIgKmdldFN0YWtlZFBvb2xzRm9yQWNjb3VudCpyZXR1cm4KCippZjNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MjcwCgkvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10gPSBbXQoJYnl0ZWMgMSAvLyAweAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3MQoJLy8gcG9vbFNldCA9IGNsb25lKHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2dldAoKCS8vIGJveCB2YWx1ZSBkb2VzIG5vdCBleGlzdDogdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzE6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8xX2VuZAoKCS8vICppZjRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzMKCS8vIHBvb2xTZXRbaV0uaWQgIT09IDAKCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgkhPQoJYnogKmlmNF9lbmQKCgkvLyAqaWY0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI3NAoJLy8gcmV0RGF0YS5wdXNoKHBvb2xTZXRbaV0pCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCWZyYW1lX2RpZyAxIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMyAvLyAyNAoJZXh0cmFjdDMKCWNvbmNhdAoJZnJhbWVfYnVyeSAwIC8vIHJldERhdGE6IFZhbGlkYXRvclBvb2xLZXlbXQoKKmlmNF9lbmQ6CgoqZm9yXzFfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzIKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEKCipmb3JfMV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyNzcKCS8vIHJldHVybiByZXREYXRhCglmcmFtZV9kaWcgMCAvLyByZXREYXRhOiBWYWxpZGF0b3JQb29sS2V5W10KCipnZXRTdGFrZWRQb29sc0ZvckFjY291bnQqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCiphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbzoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgZ2V0VG9rZW5QYXlvdXRSYXRpbyh1aW50NjQpKHVpbnQ2NFsyNF0sdWludDY0KQoJY2FsbHN1YiBnZXRUb2tlblBheW91dFJhdGlvCgljb25jYXQKCWxvZwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gZ2V0VG9rZW5QYXlvdXRSYXRpbyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogUG9vbFRva2VuUGF5b3V0UmF0aW8KLy8KLy8gUmV0cmlldmVzIHRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIGEgZ2l2ZW4gdmFsaWRhdG9yIC0gcmV0dXJuaW5nIHRoZSBwb29sIHJhdGlvcyBvZiB3aG9sZSBzbyB0aGF0IHRva2VuCi8vIHBheW91dHMgYWNyb3NzIHBvb2xzIGNhbiBiZSBiYXNlZCBvbiBhIHN0YWJsZSBzbmFwaG9zdCBvZiBzdGFrZS4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEByZXR1cm4ge1Bvb2xUb2tlblBheW91dFJhdGlvfSAtIFRoZSB0b2tlbiBwYXlvdXQgcmF0aW8gZm9yIHRoZSB2YWxpZGF0b3IuCmdldFRva2VuUGF5b3V0UmF0aW86Cglwcm90byAxIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoyODkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglyZXRzdWIKCi8vIGdldE5vZGVQb29sQXNzaWdubWVudHModWludDY0KSgodWludDY0WzNdKVs4XSkKKmFiaV9yb3V0ZV9nZXROb2RlUG9vbEFzc2lnbm1lbnRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pCgljYWxsc3ViIGdldE5vZGVQb29sQXNzaWdubWVudHMKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHZhbGlkYXRvcklkOiB1aW50NjQpOiBOb2RlUG9vbEFzc2lnbm1lbnRDb25maWcKZ2V0Tm9kZVBvb2xBc3NpZ25tZW50czoKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAidGhlIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgZG9lc24ndCBleGlzdCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHRoZSBzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGRvZXNuJ3QgZXhpc3QKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjI5NgoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUubm9kZVBvb2xBc3NpZ25tZW50cwoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCXJldHN1YgoKLy8gZ2V0TkZEUmVnaXN0cnlJRCgpdWludDY0CiphYmlfcm91dGVfZ2V0TkZEUmVnaXN0cnlJRDoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gZXhlY3V0ZSBnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQKCWNhbGxzdWIgZ2V0TkZEUmVnaXN0cnlJRAoJaXRvYgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGdldE5GRFJlZ2lzdHJ5SUQoKTogdWludDY0CmdldE5GRFJlZ2lzdHJ5SUQ6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMDEKCS8vIHJldHVybiB0aGlzLm5mZFJlZ2lzdHJ5QXBwSWQKCWludGMgMjggLy8gVE1QTF9uZmRSZWdpc3RyeUFwcElkCglyZXRzdWIKCi8vIGFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQKKmFiaV9yb3V0ZV9hZGRWYWxpZGF0b3I6CgkvLyBUaGUgQUJJIHJldHVybiBwcmVmaXgKCWJ5dGVjIDIgLy8gMHgxNTFmN2M3NQoKCS8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA5IC8vIDI0MgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb25maWcpIGZvciBhZGRWYWxpZGF0b3IgbXVzdCBiZSBhICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gbmZkTmFtZTogc3RyaW5nCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglleHRyYWN0IDIgMAoKCS8vIG1iclBheW1lbnQ6IHBheQoJdHhuIEdyb3VwSW5kZXgKCWludGMgMSAvLyAxCgktCglkdXAKCWd0eG5zIFR5cGVFbnVtCglpbnRjIDEgLy8gIHBheQoJPT0KCgkvLyBhcmd1bWVudCAyIChtYnJQYXltZW50KSBmb3IgYWRkVmFsaWRhdG9yIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkVmFsaWRhdG9yKHBheSxzdHJpbmcsKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpKXVpbnQ2NAoJY2FsbHN1YiBhZGRWYWxpZGF0b3IKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRWYWxpZGF0b3IobWJyUGF5bWVudDogUGF5VHhuLCBuZmROYW1lOiBzdHJpbmcsIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnKTogdWludDY0Ci8vCi8vIEFkZHMgYSBuZXcgdmFsaWRhdG9yCi8vIFJlcXVpcmVzIGF0IGxlYXN0IDEwIEFMR08gYXMgdGhlICdmZWUnIGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gaGVscCBkaXNzdWFkZSBzcGFtbWVkIHZhbGlkYXRvciBhZGRzLgovLwovLyBAcGFyYW0ge1BheVR4bn0gbWJyUGF5bWVudCBwYXltZW50IGZyb20gY2FsbGVyIHdoaWNoIGNvdmVycyBtYnIgaW5jcmVhc2Ugb2YgbmV3IHZhbGlkYXRvciBzdG9yYWdlCi8vIEBwYXJhbSB7c3RyaW5nfSBuZmROYW1lIChPcHRpb25hbCkgTmFtZSBvZiBuZmQgKHVzZWQgYXMgZG91YmxlLWNoZWNrIGFnYWluc3QgaWQgc3BlY2lmaWVkIGluIGNvbmZpZykKLy8gQHBhcmFtIHtWYWxpZGF0b3JDb25maWd9IGNvbmZpZyBWYWxpZGF0b3JDb25maWcgc3RydWN0Ci8vIEByZXR1cm5zIHt1aW50NjR9IHZhbGlkYXRvciBpZAphZGRWYWxpZGF0b3I6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMxMwoJLy8gdGhpcy52YWxpZGF0ZUNvbmZpZyhjb25maWcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWNhbGxzdWIgdmFsaWRhdGVDb25maWcKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTUKCS8vIHZlcmlmeVBheVR4bihtYnJQYXltZW50LCB7IHJlY2VpdmVyOiB0aGlzLmFwcC5hZGRyZXNzLCBhbW91bnQ6IHRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCAwIDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFZhbGlkYXRvck1iciJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMTcKCS8vIGFzc2VydChtYnJQYXltZW50LmZlZSA+IDEwICogMTAwMDAwMCwgJ2ZlZSBtdXN0IGJlIDEwIEFMR08gb3IgbW9yZSB0byBwcmV2ZW50IHNwYW1taW5nIG9mIHZhbGlkYXRvcnMnKQoJZnJhbWVfZGlnIC0xIC8vIG1iclBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgRmVlCglwdXNoaW50IDEwMDAwMDAwCgk+CgoJLy8gZmVlIG11c3QgYmUgMTAgQUxHTyBvciBtb3JlIHRvIHByZXZlbnQgc3BhbW1pbmcgb2YgdmFsaWRhdG9ycwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzIwCgkvLyB2YWxpZGF0b3JJZCA9IHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSArIDEKCWJ5dGVjIDExIC8vICAibnVtViIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMjEKCS8vIHRoaXMubnVtVmFsaWRhdG9ycy52YWx1ZSA9IHZhbGlkYXRvcklkCglieXRlYyAxMSAvLyAgIm51bVYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglhcHBfZ2xvYmFsX3B1dAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyMwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5jcmVhdGUoKQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCXB1c2hpbnQgMTA5MgoJYm94X2NyZWF0ZQoJcG9wCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI0CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZyA9IGNvbmZpZwoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzI1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5pZCA9IHZhbGlkYXRvcklkCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgMCAvLyB2YWxpZGF0b3JJZDogdWludDY0CglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjMyOAoJLy8gY29uZmlnLm5mZEZvckluZm8gIT09IDAKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA3MiA4CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjVfZW5kCgoJLy8gKmlmNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzAKCS8vIGFzc2VydCh0aGlzLmlzTkZEQXBwSURWYWxpZChjb25maWcubmZkRm9ySW5mbyksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgLTMgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgNzIgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzMyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChjb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgICAgICdJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXInLAoJLy8gICAgICAgICAgICAgKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDcyIDgKCWJ0b2kKCWJ5dGVjIDEwIC8vICAiaS5vd25lci5hIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQoY29uZmlnLm5mZEZvckluZm8pLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKQoJYXNzZXJ0Cgk9PQoKCS8vIElmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcgoJYXNzZXJ0CgoqaWY1X2VuZDoKCS8vICppZjZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozMzgKCS8vIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPT09IEdBVElOR19UWVBFX0NSRUFURURfQllfTkZEX0FERFJFU1NFUyB8fAoJLy8gICAgICAgICAgICAgY29uZmlnLmVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDgwIDEKCWJ0b2kKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjA6CglieiAqaWY2X2VuZAoKCS8vICppZjZfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc05GREFwcElEVmFsaWQoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdKSwKCS8vICAgICAgICAgICAgICAgICAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxMTMgOAoJYnRvaQoJY2FsbHN1YiBpc05GREFwcElEVmFsaWQKCgkvLyBwcm92aWRlZCBORkQgQXBwIGlkIGZvciBnYXRpbmcgbXVzdCBiZSB2YWxpZCBORkQKCWFzc2VydAoKKmlmNl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNDcKCS8vIHRoaXMucmV0aU9QX2FkZGVkVmFsaWRhdG9yLmxvZyh7IGlkOiB2YWxpZGF0b3JJZCwgb3duZXI6IGNvbmZpZy5vd25lciwgbWFuYWdlcjogY29uZmlnLm1hbmFnZXIgfSkKCXB1c2hieXRlcyAweGE4ZGQyMWNiIC8vIHJldGlPUF9hZGRlZFZhbGlkYXRvcih1aW50NjQsYWRkcmVzcyxhZGRyZXNzKQoJZnJhbWVfZGlnIDAgLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJaXRvYgoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDQwIDMyCgljb25jYXQKCWNvbmNhdAoJbG9nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzQ4CgkvLyByZXR1cm4gdmFsaWRhdG9ySWQKCWZyYW1lX2RpZyAwIC8vIHZhbGlkYXRvcklkOiB1aW50NjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTWFuYWdlcih1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCS8vIG1hbmFnZXI6IGFkZHJlc3MKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMCAobWFuYWdlcikgZm9yIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JNYW5hZ2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG1hbmFnZXI6IEFkZHJlc3MpOiB2b2lkCi8vCi8vIENoYW5nZXMgdGhlIFZhbGlkYXRvciBtYW5hZ2VyIGZvciBhIHNwZWNpZmljIFZhbGlkYXRvciBpZC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byBjaGFuZ2UgdGhlIG1hbmFnZXIgZm9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IG1hbmFnZXIgLSBUaGUgbmV3IG1hbmFnZXIgYWRkcmVzcy4KY2hhbmdlVmFsaWRhdG9yTWFuYWdlcjoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM1OQoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MzYwCgkvLyBhc3NlcnQobWFuYWdlciAhPT0gZ2xvYmFscy56ZXJvQWRkcmVzcywgJ25lZWRzIHRvIGF0IGxlYXN0IGJlIHZhbGlkIGFkZHJlc3MnKQoJZnJhbWVfZGlnIC0yIC8vIG1hbmFnZXI6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCgkvLyBuZWVkcyB0byBhdCBsZWFzdCBiZSB2YWxpZCBhZGRyZXNzCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNjEKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIgPSBtYW5hZ2VyCglpbnRjIDIwIC8vIDQwCglmcmFtZV9kaWcgLTIgLy8gbWFuYWdlcjogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvOgoJLy8gc3Vuc2V0dGluZ1RvOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWJ0b2kKCgkvLyBzdW5zZXR0aW5nT246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclN1bnNldEluZm8odWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JTdW5zZXRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN1bnNldHRpbmdPbjogdWludDY0LCBzdW5zZXR0aW5nVG86IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKLy8KLy8gVXBkYXRlcyB0aGUgc3Vuc2V0IGluZm9ybWF0aW9uIGZvciBhIGdpdmVuIHZhbGlkYXRvci4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nT24gLSBUaGUgbmV3IHN1bnNldCB0aW1lc3RhbXAuCi8vIEBwYXJhbSB7dWludDY0fSBzdW5zZXR0aW5nVG8gLSBUaGUgbmV3IHN1bnNldCB0byB2YWxpZGF0b3IgaWQuCmNoYW5nZVZhbGlkYXRvclN1bnNldEluZm86Cglwcm90byAzIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czozNzMKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM3NAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuc3Vuc2V0dGluZ09uID0gc3Vuc2V0dGluZ09uCglpbnRjIDI3IC8vIDIyNgoJZnJhbWVfZGlnIC0yIC8vIHN1bnNldHRpbmdPbjogdWludDY0CglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzc1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nVG8gPSBzdW5zZXR0aW5nVG8KCXB1c2hpbnQgMjM0CglmcmFtZV9kaWcgLTMgLy8gc3Vuc2V0dGluZ1RvOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHVpbnQ2NCx1aW50NjQsc3RyaW5nKXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQ6CgkvLyBuZmROYW1lOiBzdHJpbmcKCXR4bmEgQXBwbGljYXRpb25BcmdzIDMKCWV4dHJhY3QgMiAwCgoJLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvck5GRCh1aW50NjQsdWludDY0LHN0cmluZyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvck5GRAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gY2hhbmdlVmFsaWRhdG9yTkZEKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIG5mZEFwcElEOiB1aW50NjQsIG5mZE5hbWU6IHN0cmluZyk6IHZvaWQKLy8KLy8gQ2hhbmdlcyB0aGUgTkZEIGZvciBhIHZhbGlkYXRvciBpbiB0aGUgdmFsaWRhdG9yTGlzdCBjb250cmFjdC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvciB0byB1cGRhdGUuCi8vIEBwYXJhbSB7dWludDY0fSBuZmRBcHBJRCAtIFRoZSBhcHBsaWNhdGlvbiBpZCBvZiB0aGUgTkZEIHRvIGFzc2lnbiB0byB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3N0cmluZ30gbmZkTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBORkQgKHdoaWNoIG11c3QgbWF0Y2gpCmNoYW5nZVZhbGlkYXRvck5GRDoKCXByb3RvIDMgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM4NwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Mzg5CgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQobmZkQXBwSUQpLCAncHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQnKQoJZnJhbWVfZGlnIC0yIC8vIG5mZEFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgdGhpcy50eG4uc2VuZGVyID09PSAoQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MpLAoJLy8gICAgICAgICAgICAgJ0lmIHNwZWNpZnlpbmcgTkZELCBhY2NvdW50IGFkZGluZyB2YWxpZGF0b3IgbXVzdCBiZSBvd25lcicsCgkvLyAgICAgICAgICkKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMiAvLyBuZmRBcHBJRDogdWludDY0CglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJPT0KCgkvLyBJZiBzcGVjaWZ5aW5nIE5GRCwgYWNjb3VudCBhZGRpbmcgdmFsaWRhdG9yIG11c3QgYmUgb3duZXIKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjM5NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcubmZkRm9ySW5mbyA9IG5mZEFwcElECglpbnRjIDIxIC8vIDcyCglmcmFtZV9kaWcgLTIgLy8gbmZkQXBwSUQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCiphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3M6CgkvLyBjb21taXNzaW9uQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChjb21taXNzaW9uQWRkcmVzcykgZm9yIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh1aW50NjQsYWRkcmVzcyl2b2lkCgljYWxsc3ViIGNoYW5nZVZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcyk6IHZvaWQKLy8KLy8gQ2hhbmdlIHRoZSBjb21taXNzaW9uIGFkZHJlc3MgdGhhdCB2YWxpZGF0b3IgcmV3YXJkcyBhcmUgc2VudCB0by4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzczoKCXByb3RvIDIgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwMwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDA0CgkvLyBhc3NlcnQoY29tbWlzc2lvbkFkZHJlc3MgIT09IEFkZHJlc3MuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTIgLy8gY29tbWlzc2lvbkFkZHJlc3M6IEFkZHJlc3MKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQwNQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcudmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgPSBjb21taXNzaW9uQWRkcmVzcwoJcHVzaGludCAxNzcKCWZyYW1lX2RpZyAtMiAvLyBjb21taXNzaW9uQWRkcmVzczogQWRkcmVzcwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJLy8gUmV3YXJkUGVyUGF5b3V0OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDYKCWJ0b2kKCgkvLyBHYXRpbmdBc3NldE1pbkJhbGFuY2U6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIEVudHJ5R2F0aW5nQXNzZXRzOiB1aW50NjRbNF0KCXR4bmEgQXBwbGljYXRpb25BcmdzIDQKCWR1cAoJbGVuCglpbnRjIDYgLy8gMzIKCT09CgoJLy8gYXJndW1lbnQgMiAoRW50cnlHYXRpbmdBc3NldHMpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSB1aW50NjRbNF0KCWFzc2VydAoKCS8vIEVudHJ5R2F0aW5nQWRkcmVzczogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChFbnRyeUdhdGluZ0FkZHJlc3MpIGZvciBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyAxIC8vIDEKCT09CgoJLy8gYXJndW1lbnQgNCAoRW50cnlHYXRpbmdUeXBlKSBmb3IgY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyBtdXN0IGJlIGEgdWludDgKCWFzc2VydAoJYnRvaQoKCS8vIHZhbGlkYXRvcklkOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWJ0b2kKCgkvLyBleGVjdXRlIGNoYW5nZVZhbGlkYXRvclJld2FyZEluZm8odWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIEVudHJ5R2F0aW5nVHlwZTogdWludDgsIEVudHJ5R2F0aW5nQWRkcmVzczogQWRkcmVzcywgRW50cnlHYXRpbmdBc3NldHM6IFN0YXRpY0FycmF5PHVpbnQ2NCwgND4sIEdhdGluZ0Fzc2V0TWluQmFsYW5jZTogdWludDY0LCBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gQWxsb3cgdGhlIGFkZGl0aW9uYWwgcmV3YXJkcyAoZ2F0aW5nIGVudHJ5LCBhZGRpdGlvbmFsIHRva2VuIHJld2FyZHMpIGluZm9ybWF0aW9uIGJlIGNoYW5nZWQgYXQgd2lsbC4KLy8gWyBPTkxZIE9XTkVSIENBTiBDSEFOR0UgXQpjaGFuZ2VWYWxpZGF0b3JSZXdhcmRJbmZvOgoJcHJvdG8gNiAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDIwCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjIKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA+PSBHQVRJTkdfVFlQRV9OT05FICYmIEVudHJ5R2F0aW5nVHlwZSA8IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdpbnZhbGlkIEVudHJ5IGdhdGluZyB0eXBlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMCAvLyAwCgk+PQoJZHVwCglieiAqc2tpcF9hbmQxCglmcmFtZV9kaWcgLTIgLy8gRW50cnlHYXRpbmdUeXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk8CgkmJgoKKnNraXBfYW5kMToKCS8vIGludmFsaWQgRW50cnkgZ2F0aW5nIHR5cGUKCWFzc2VydAoKCS8vICppZjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjYKCS8vIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjdfZW5kCgoJLy8gKmlmN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MjcKCS8vIGFzc2VydChFbnRyeUdhdGluZ0FkZHJlc3MgIT09IGdsb2JhbHMuemVyb0FkZHJlc3MpCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9Cglhc3NlcnQKCippZjdfZW5kOgoJLy8gKmlmOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzMAoJLy8gRW50cnlHYXRpbmdUeXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMgfHwKCS8vICAgICAgICAgICAgIEVudHJ5R2F0aW5nVHlwZSA9PT0gR0FUSU5HX1RZUEVfU0VHTUVOVF9PRl9ORkQKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCWR1cAoJYm56ICpza2lwX29yMQoJZnJhbWVfZGlnIC0yIC8vIEVudHJ5R2F0aW5nVHlwZTogdWludDgKCWludGMgMTUgLy8gNAoJPT0KCXx8Cgoqc2tpcF9vcjE6CglieiAqaWY4X2VuZAoKCS8vICppZjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDMzCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQoRW50cnlHYXRpbmdBc3NldHNbMF0pLCAncHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZEJykKCWZyYW1lX2RpZyAtNCAvLyBFbnRyeUdhdGluZ0Fzc2V0czogU3RhdGljQXJyYXk8dWludDY0LCA0PgoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIEFwcCBpZCBmb3IgZ2F0aW5nIG11c3QgYmUgdmFsaWQgTkZECglhc3NlcnQKCippZjhfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPSBFbnRyeUdhdGluZ1R5cGUKCWludGMgMzYgLy8gODAKCWZyYW1lX2RpZyAtMiAvLyBFbnRyeUdhdGluZ1R5cGU6IHVpbnQ4CglpdG9iCglleHRyYWN0IDcgMQoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQzNgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZW50cnlHYXRpbmdBZGRyZXNzID0gRW50cnlHYXRpbmdBZGRyZXNzCglwdXNoaW50IDgxCglmcmFtZV9kaWcgLTMgLy8gRW50cnlHYXRpbmdBZGRyZXNzOiBBZGRyZXNzCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5lbnRyeUdhdGluZ0Fzc2V0cyA9IEVudHJ5R2F0aW5nQXNzZXRzCglwdXNoaW50IDExMwoJZnJhbWVfZGlnIC00IC8vIEVudHJ5R2F0aW5nQXNzZXRzOiBTdGF0aWNBcnJheTx1aW50NjQsIDQ+CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDM4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UgPSBHYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglmcmFtZV9kaWcgLTUgLy8gR2F0aW5nQXNzZXRNaW5CYWxhbmNlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0MzkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLnJld2FyZFBlclBheW91dCA9IFJld2FyZFBlclBheW91dAoJcHVzaGludCAxNjEKCWZyYW1lX2RpZyAtNiAvLyBSZXdhcmRQZXJQYXlvdXQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoJcmV0c3ViCgovLyBhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKKmFiaV9yb3V0ZV9hZGRQb29sOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyBub2RlTnVtOiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gbWJyUGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKG1iclBheW1lbnQpIGZvciBhZGRQb29sIG11c3QgYmUgYSBwYXkgdHJhbnNhY3Rpb24KCWFzc2VydAoKCS8vIGV4ZWN1dGUgYWRkUG9vbChwYXksdWludDY0LHVpbnQ2NCkodWludDY0LHVpbnQ2NCx1aW50NjQpCgljYWxsc3ViIGFkZFBvb2wKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRQb29sKG1iclBheW1lbnQ6IFBheVR4biwgdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgbm9kZU51bTogdWludDY0KTogVmFsaWRhdG9yUG9vbEtleQovLwovLyBBZGRzIGEgbmV3IHBvb2wgdG8gYSB2YWxpZGF0b3IncyBwb29sIHNldCwgcmV0dXJuaW5nIHRoZSAna2V5JyB0byByZWZlcmVuY2UgdGhlIHBvb2wgaW4gdGhlIGZ1dHVyZSBmb3Igc3Rha2luZywgZXRjLgovLyBUaGUgY2FsbGVyIG11c3QgcGF5IHRoZSBjb3N0IG9mIHRoZSB2YWxpZGF0b3JzIE1CUiBpbmNyZWFzZSBhcyB3ZWxsIGFzIHRoZSBNQlIgdGhhdCB3aWxsIGJlIG5lZWRlZCBmb3IgdGhlIHBvb2wgaXRzZWxmLgovLwovLyBbIE9OTFkgT1dORVIgT1IgTUFOQUdFUiBDQU4gY2FsbCBdCi8vIEBwYXJhbSB7UGF5VHhufSBtYnJQYXltZW50IHBheW1lbnQgZnJvbSBjYWxsZXIgd2hpY2ggY292ZXJzIG1iciBpbmNyZWFzZSBvZiBhZGRpbmcgYSBuZXcgcG9vbAovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsaWRhdG9ySWQgaXMgaWQgb2YgdmFsaWRhdG9yIHRvIHBvb2wgdG8gKG11c3QgYmUgb3duZXIgb3IgbWFuYWdlcikKLy8gQHBhcmFtIHt1aW50NjR9IG5vZGVOdW0gaXMgbm9kZSBudW1iZXIgdG8gYWRkIHRvCi8vIEByZXR1cm5zIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sIGtleSB0byBjcmVhdGVkIHBvb2wKYWRkUG9vbDoKCXByb3RvIDMgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NTQKCS8vIHRoaXMuY2FsbGVyTXVzdEJlT3duZXJPck1hbmFnZXIodmFsaWRhdG9ySWQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ1NwoJLy8gdmVyaWZ5UGF5VHhuKG1iclBheW1lbnQsIHsgcmVjZWl2ZXI6IHRoaXMuYXBwLmFkZHJlc3MsIGFtb3VudDogdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkUG9vbE1iciB9KQoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyB2ZXJpZnkgYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gbWJyUGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWNhbGxzdWIgZ2V0TWJyQW1vdW50cwoJZXh0cmFjdCA4IDgKCWJ0b2kKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJtYnJQYXltZW50IiwiZmllbGQiOiJhbW91bnQiLCJleHBlY3RlZCI6InRoaXMuZ2V0TWJyQW1vdW50cygpLmFkZFBvb2xNYnIifQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDU5CgkvLyBhc3NlcnQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS5leGlzdHMsICJzcGVjaWZpZWQgdmFsaWRhdG9yIGlkIGlzbid0IHZhbGlkIikKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCgoJLy8gc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYxCgkvLyBudW1Qb29sczogdWludDY0ID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5zdGF0ZS5udW1Qb29scyBhcyB1aW50NjQKCWludGMgOSAvLyAyNDIKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIG51bVBvb2xzOiB1aW50NjQKCgkvLyAqaWY5X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDYyCgkvLyAobnVtUG9vbHMgYXMgdWludDY0KSA+PSBNQVhfUE9PTFMKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMyAvLyAyNAoJPj0KCWJ6ICppZjlfZW5kCgoJLy8gKmlmOV9jb25zZXF1ZW50CgkvLyBhbHJlYWR5IGF0IG1heCBwb29sIHNpemUKCWVycgoKKmlmOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NjUKCS8vIG51bVBvb2xzICs9IDEKCWZyYW1lX2RpZyAwIC8vIG51bVBvb2xzOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OAoJLy8gc2VuZEFwcENhbGwoewoJLy8gICAgICAgICAgICAgb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcCwKCS8vICAgICAgICAgICAgIGFwcHJvdmFsUHJvZ3JhbTogWwoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCgwLCA0MDk2KSwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLmV4dHJhY3QoNDA5NiwgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5zaXplIC0gNDA5NiksCgkvLyAgICAgICAgICAgICBdLAoJLy8gICAgICAgICAgICAgY2xlYXJTdGF0ZVByb2dyYW06IFN0YWtpbmdQb29sLmNsZWFyUHJvZ3JhbSgpLAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtVWludDogU3Rha2luZ1Bvb2wuc2NoZW1hLmdsb2JhbC5udW1VaW50LAoJLy8gICAgICAgICAgICAgZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZSwKCS8vICAgICAgICAgICAgIGV4dHJhUHJvZ3JhbVBhZ2VzOiAzLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gY3JlYXRpbmdDb250cmFjdElELCB2YWxpZGF0b3JJZCwgcG9vbElkLCBtaW5FbnRyeVN0YWtlCgkvLyAgICAgICAgICAgICAgICAgbWV0aG9kKCdjcmVhdGVBcHBsaWNhdGlvbih1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCcpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodGhpcy5hcHAuaWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IodmFsaWRhdG9ySWQpLAoJLy8gICAgICAgICAgICAgICAgIGl0b2IobnVtUG9vbHMgYXMgdWludDY0KSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1pbkVudHJ5U3Rha2UpLAoJLy8gICAgICAgICAgICAgXSwKCS8vICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ2OQoJLy8gb25Db21wbGV0aW9uOiBPbkNvbXBsZXRpb24uTm9PcAoJaW50YyAwIC8vICBOb09wCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3MAoJLy8gYXBwcm92YWxQcm9ncmFtOiBbCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5zdGFraW5nUG9vbEFwcHJvdmFsUHJvZ3JhbS5leHRyYWN0KDAsIDQwOTYpLAoJLy8gICAgICAgICAgICAgICAgIHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uZXh0cmFjdCg0MDk2LCB0aGlzLnN0YWtpbmdQb29sQXBwcm92YWxQcm9ncmFtLnNpemUgLSA0MDk2KSwKCS8vICAgICAgICAgICAgIF0KCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAwIC8vIDAKCWludGMgMjUgLy8gNDA5NgoJYm94X2V4dHJhY3QKCWl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKCWJ5dGVjIDkgLy8gICJwb29sVGVtcGxhdGVBcHByb3ZhbEJ5dGVzIgoJaW50YyAyNSAvLyA0MDk2CglieXRlYyA5IC8vICAicG9vbFRlbXBsYXRlQXBwcm92YWxCeXRlcyIKCWJveF9sZW4KCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2luZ1Bvb2xBcHByb3ZhbFByb2dyYW0uc2l6ZQoJYXNzZXJ0CglpbnRjIDI1IC8vIDQwOTYKCS0KCWJveF9leHRyYWN0CglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbVBhZ2VzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc0CgkvLyBjbGVhclN0YXRlUHJvZ3JhbTogU3Rha2luZ1Bvb2wuY2xlYXJQcm9ncmFtKCkKCXB1c2hieXRlcyAweDBiCglpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc1CgkvLyBnbG9iYWxOdW1VaW50OiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bVVpbnQKCWludGMgMzUgLy8gMTEKCWl0eG5fZmllbGQgR2xvYmFsTnVtVWludAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ3NgoJLy8gZ2xvYmFsTnVtQnl0ZVNsaWNlOiBTdGFraW5nUG9vbC5zY2hlbWEuZ2xvYmFsLm51bUJ5dGVTbGljZQoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgR2xvYmFsTnVtQnl0ZVNsaWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDc3CgkvLyBleHRyYVByb2dyYW1QYWdlczogMwoJaW50YyA4IC8vIDMKCWl0eG5fZmllbGQgRXh0cmFQcm9ncmFtUGFnZXMKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0NzgKCS8vIGFwcGxpY2F0aW9uQXJnczogWwoJLy8gICAgICAgICAgICAgICAgIC8vIGNyZWF0aW5nQ29udHJhY3RJRCwgdmFsaWRhdG9ySWQsIHBvb2xJZCwgbWluRW50cnlTdGFrZQoJLy8gICAgICAgICAgICAgICAgIG1ldGhvZCgnY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQnKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHRoaXMuYXBwLmlkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKHZhbGlkYXRvcklkKSwKCS8vICAgICAgICAgICAgICAgICBpdG9iKG51bVBvb2xzIGFzIHVpbnQ2NCksCgkvLyAgICAgICAgICAgICAgICAgaXRvYih0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlKSwKCS8vICAgICAgICAgICAgIF0KCXB1c2hieXRlcyAweDU5ZTkwYWE2IC8vIG1ldGhvZCAiY3JlYXRlQXBwbGljYXRpb24odWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJdHhuYSBBcHBsaWNhdGlvbnMgMAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NDg4CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzID0gbnVtUG9vbHMgYXMgdWludDE2CglpbnRjIDkgLy8gMjQyCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjQ5MQoJLy8gcG9vbEFwcElkID0gdGhpcy5pdHhuLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkCglpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECglmcmFtZV9idXJ5IDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTIKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbbnVtUG9vbHMgLSAxXS5wb29sQXBwSWQgPSBwb29sQXBwSWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDAgLy8gMAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTMKCS8vIHRoaXMuYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZCwgcG9vbEFwcElkLCBub2RlTnVtKQoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gcG9vbEFwcElkOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGFkZFBvb2xUb05vZGUKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo0OTUKCS8vIHRoaXMucmV0aU9QX3ZhbGlkYXRvckFkZGVkUG9vbC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgbnVtOiBudW1Qb29scyBhcyB1aW50MTYsCgkvLyAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKSwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGZiY2MwZjZiIC8vIHJldGlPUF92YWxpZGF0b3JBZGRlZFBvb2wodWludDY0LHVpbnQxNix1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDAgLy8gbnVtUG9vbHM6IHVpbnQ2NAoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gbnVtUG9vbHMgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgMSAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUwMQoJLy8gcmV0dXJuIHsgaWQ6IHZhbGlkYXRvcklkLCBwb29sSWQ6IG51bVBvb2xzIGFzIHVpbnQ2NCwgcG9vbEFwcElkOiB0aGlzLml0eG4hLmNyZWF0ZWRBcHBsaWNhdGlvbklELmlkIH0KCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgMCAvLyBudW1Qb29sczogdWludDY0CglpdG9iCgljb25jYXQKCWl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKCWl0b2IKCWNvbmNhdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDEKCXJldHN1YgoKLy8gYWRkU3Rha2UocGF5LHVpbnQ2NCx1aW50NjQpKHVpbnQ2NCx1aW50NjQsdWludDY0KQoqYWJpX3JvdXRlX2FkZFN0YWtlOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCXR4bmEgQXBwbGljYXRpb25BcmdzIDIKCWJ0b2kKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gc3Rha2VkQW1vdW50UGF5bWVudDogcGF5Cgl0eG4gR3JvdXBJbmRleAoJaW50YyAxIC8vIDEKCS0KCWR1cAoJZ3R4bnMgVHlwZUVudW0KCWludGMgMSAvLyAgcGF5Cgk9PQoKCS8vIGFyZ3VtZW50IDIgKHN0YWtlZEFtb3VudFBheW1lbnQpIGZvciBhZGRTdGFrZSBtdXN0IGJlIGEgcGF5IHRyYW5zYWN0aW9uCglhc3NlcnQKCgkvLyBleGVjdXRlIGFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkKCWNhbGxzdWIgYWRkU3Rha2UKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBhZGRTdGFrZShzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4sIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NCk6IFZhbGlkYXRvclBvb2xLZXkKLy8KLy8gQWRkcyBzdGFrZSB0byBhIHZhbGlkYXRvciBwb29sLgovLwovLyBAcGFyYW0ge1BheVR4bn0gc3Rha2VkQW1vdW50UGF5bWVudCAtIHBheW1lbnQgY29taW5nIGZyb20gc3Rha2VyIHRvIHBsYWNlIGludG8gYSBwb29sCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gdmFsdWVUb1ZlcmlmeSAtIG9ubHkgaWYgdmFsaWRhdG9yIGhhcyBnYXRpbmcgdG8gZW50ZXIgLSB0aGlzIGlzIGFzc2V0IGlkIG9yIG5mZCBpZCB0aGF0IGNvcnJlc3BvbmRzIHRvIGdhdGluZy4KLy8gVHhuIHNlbmRlciBpcyBmYWN0b3JlZCBpbiBhcyB3ZWxsIGlmIHRoYXQgaXMgcGFydCBvZiBnYXRpbmcuCi8vICogQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXl9IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCmFkZFN0YWtlOgoJcHJvdG8gMyAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gNQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUxNAoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkuZXhpc3RzLCAic3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWJveF9sZW4KCXN3YXAKCXBvcAoKCS8vIHNwZWNpZmllZCB2YWxpZGF0b3IgaWQgaXNuJ3QgdmFsaWQKCWFzc2VydAoKCS8vICppZjEwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiAwCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMCAvLyAwCgk+CglieiAqaWYxMF9lbmQKCgkvLyAqaWYxMF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MTkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5zdW5zZXR0aW5nT24gPiBnbG9iYWxzLmxhdGVzdFRpbWVzdGFtcCwKCS8vICAgICAgICAgICAgICAgICAiY2FuJ3Qgc3Rha2Ugd2l0aCBhIHZhbGlkYXRvciB0aGF0IGlzIHBhc3QgaXRzIHN1bnNldHRpbmcgdGltZSIsCgkvLyAgICAgICAgICAgICApCglpbnRjIDI3IC8vIDIyNgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKCT4KCgkvLyBjYW4ndCBzdGFrZSB3aXRoIGEgdmFsaWRhdG9yIHRoYXQgaXMgcGFzdCBpdHMgc3Vuc2V0dGluZyB0aW1lCglhc3NlcnQKCippZjEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUyNQoJLy8gc3Rha2VyID0gdGhpcy50eG4uc2VuZGVyCgl0eG4gU2VuZGVyCglmcmFtZV9idXJ5IDAgLy8gc3Rha2VyOiBhZGRyZXNzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTI5CgkvLyB2ZXJpZnlQYXlUeG4oc3Rha2VkQW1vdW50UGF5bWVudCwgewoJLy8gICAgICAgICAgICAgc2VuZGVyOiBzdGFrZXIsCgkvLyAgICAgICAgICAgICByZWNlaXZlcjogdGhpcy5hcHAuYWRkcmVzcywKCS8vICAgICAgICAgfSkKCS8vIHZlcmlmeSBzZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWd0eG5zIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoKCS8vIHRyYW5zYWN0aW9uIHZlcmlmaWNhdGlvbiBmYWlsZWQ6IHsidHhuIjoic3Rha2VkQW1vdW50UGF5bWVudCIsImZpZWxkIjoic2VuZGVyIiwiZXhwZWN0ZWQiOiJzdGFrZXIifQoJYXNzZXJ0CgoJLy8gdmVyaWZ5IHJlY2VpdmVyCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBSZWNlaXZlcgoJZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKCT09CgoJLy8gdHJhbnNhY3Rpb24gdmVyaWZpY2F0aW9uIGZhaWxlZDogeyJ0eG4iOiJzdGFrZWRBbW91bnRQYXltZW50IiwiZmllbGQiOiJyZWNlaXZlciIsImV4cGVjdGVkIjoidGhpcy5hcHAuYWRkcmVzcyJ9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1MzcKCS8vIHRoaXMuZG9lc1N0YWtlck1lZXRHYXRpbmcodmFsaWRhdG9ySWQsIHZhbHVlVG9WZXJpZnkpCglmcmFtZV9kaWcgLTMgLy8gdmFsdWVUb1ZlcmlmeTogdWludDY0CglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJY2FsbHN1YiBkb2VzU3Rha2VyTWVldEdhdGluZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjUzOQoJLy8gcmVhbEFtb3VudCA9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2J1cnkgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDAKCS8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NCA9IDAKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gbWJyQW10TGVmdEJlaGluZDogdWludDY0CgoJLy8gKmlmMTFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NDIKCS8vIHRoaXMuZG9lc1N0YWtlck5lZWRUb1BheU1CUihzdGFrZXIpCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgZG9lc1N0YWtlck5lZWRUb1BheU1CUgoJYnogKmlmMTFfZW5kCgoJLy8gKmlmMTFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTQ1CgkvLyBtYnJBbXRMZWZ0QmVoaW5kID0gdGhpcy5nZXRNYnJBbW91bnRzKCkuYWRkU3Rha2VyTWJyCgljYWxsc3ViIGdldE1ickFtb3VudHMKCWV4dHJhY3QgMjQgOAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NgoJLy8gcmVhbEFtb3VudCAtPSBtYnJBbXRMZWZ0QmVoaW5kCglmcmFtZV9kaWcgMSAvLyByZWFsQW1vdW50OiB1aW50NjQKCWZyYW1lX2RpZyAyIC8vIG1ickFtdExlZnRCZWhpbmQ6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU0NwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuY3JlYXRlKCkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNvbmNhdAoJcHVzaGludCAxNDQKCWJveF9jcmVhdGUKCXBvcAoKKmlmMTFfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTUxCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArIHJlYWxBbW91bnQgPCB0aGlzLm1heEFsbG93ZWRTdGFrZSgpLAoJLy8gICAgICAgICAgICAgJ3RvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcCcsCgkvLyAgICAgICAgICkKCWludGMgMTIgLy8gMjUyCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CgkrCgljYWxsc3ViIG1heEFsbG93ZWRTdGFrZQoJPAoKCS8vIHRvdGFsIHN0YWtlZCBmb3IgYWxsIG9mIGEgdmFsaWRhdG9ycyBwb29scyBtYXkgbm90IGV4Y2VlZCBoYXJkIGNhcAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NTU4CgkvLyBmaW5kUmV0ID0gdGhpcy5maW5kUG9vbEZvclN0YWtlcih2YWxpZGF0b3JJZCwgc3Rha2VyLCByZWFsQW1vdW50KQoJZnJhbWVfZGlnIDEgLy8gcmVhbEFtb3VudDogdWludDY0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGZpbmRQb29sRm9yU3Rha2VyCglmcmFtZV9idXJ5IDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU1OQoJLy8gcG9vbEtleSA9IGZpbmRSZXRbMF0KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MAoJLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciA9IGZpbmRSZXRbMV0KCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDIyIC8vIDE5MgoJZ2V0Yml0CglmcmFtZV9idXJ5IDQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MQoJLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sID0gZmluZFJldFsyXQoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCXB1c2hpbnQgMTkzCglnZXRiaXQKCWZyYW1lX2J1cnkgNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCgkvLyAqaWYxMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU2MgoJLy8gcG9vbEtleS5wb29sSWQgPT09IDAKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWYxMl9lbmQKCgkvLyAqaWYxMl9jb25zZXF1ZW50CgkvLyBObyBwb29sIGF2YWlsYWJsZSB3aXRoIGZyZWUgc3Rha2UuICBWYWxpZGF0b3IgbmVlZHMgdG8gYWRkIGFub3RoZXIgcG9vbAoJZXJyCgoqaWYxMl9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo1NjcKCS8vIHRoaXMudXBkYXRlU3Rha2VyUG9vbFNldChzdGFrZXIsIHBvb2xLZXkpCglmcmFtZV9kaWcgMyAvLyBmaW5kUmV0OiAoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxib29sLGJvb2wpCglzdG9yZSAyNTUgLy8gZnVsbCBhcnJheQoJbG9hZCAyNTUgLy8gZnVsbCBhcnJheQoJZXh0cmFjdCAwIDI0CglmcmFtZV9kaWcgMCAvLyBzdGFrZXI6IGFkZHJlc3MKCWNhbGxzdWIgdXBkYXRlU3Rha2VyUG9vbFNldAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3MAoJLy8gdGhpcy5jYWxsUG9vbEFkZFN0YWtlKAoJLy8gICAgICAgICAgICAgc3Rha2VkQW1vdW50UGF5bWVudCwKCS8vICAgICAgICAgICAgIHBvb2xLZXksCgkvLyAgICAgICAgICAgICBtYnJBbXRMZWZ0QmVoaW5kLAoJLy8gICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCwKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDUgLy8gaXNOZXdTdGFrZXJUb1Byb3RvY29sOiBib29sCglmcmFtZV9kaWcgNCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglmcmFtZV9kaWcgMiAvLyBtYnJBbXRMZWZ0QmVoaW5kOiB1aW50NjQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZWRBbW91bnRQYXltZW50OiBQYXlUeG4KCWNhbGxzdWIgY2FsbFBvb2xBZGRTdGFrZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU3NwoJLy8gdGhpcy5yZXRpT1Bfc3Rha2VBZGRlZC5sb2coewoJLy8gICAgICAgICAgICAgaWQ6IHZhbGlkYXRvcklkLAoJLy8gICAgICAgICAgICAgcG9vbE51bTogcG9vbEtleS5wb29sSWQgYXMgdWludDE2LAoJLy8gICAgICAgICAgICAgcG9vbEFwcElkOiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgIGFtb3VudFN0YWtlZDogcmVhbEFtb3VudCwKCS8vICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICB9KQoJcHVzaGJ5dGVzIDB4OTYyYjQxNDMgLy8gcmV0aU9QX3N0YWtlQWRkZWQodWludDY0LHVpbnQxNix1aW50NjQsYWRkcmVzcyx1aW50NjQpCglmcmFtZV9kaWcgLTIgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJZnJhbWVfZGlnIDMgLy8gZmluZFJldDogKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCglkdXAKCWJpdGxlbgoJaW50YyAxOCAvLyAxNgoJPD0KCgkvLyBwb29sS2V5LnBvb2xJZCBhcyB1aW50MTYgb3ZlcmZsb3dlZCAxNiBiaXRzCglhc3NlcnQKCWV4dHJhY3QgNiAyCgljb25jYXQKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIDAgLy8gc3Rha2VyOiBhZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAxIC8vIHJlYWxBbW91bnQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjU4NQoJLy8gcmV0dXJuIHBvb2xLZXkKCWZyYW1lX2RpZyAzIC8vIGZpbmRSZXQ6ICgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglleHRyYWN0IDAgMjQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA1CglyZXRzdWIKCi8vIHNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkKKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBzZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpCgljYWxsc3ViIHNldFRva2VuUGF5b3V0UmF0aW8KCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBzZXRUb2tlblBheW91dFJhdGlvKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUpOiBQb29sVG9rZW5QYXlvdXRSYXRpbwovLwovLyBzZXRUb2tlblBheW91dFJhdGlvIGlzIGNhbGxlZCBieSBTdGFraW5nIFBvb2wgIyAxIChPTkxZKSB0byBhc2sgdGhlIHZhbGlkYXRvciAodXMpIHRvIGNhbGN1bGF0ZSB0aGUgcmF0aW9zCi8vIG9mIHN0YWtlIGluIHRoZSBwb29scyBmb3Igc3Vic2VxdWVudCB0b2tlbiBwYXlvdXRzIChpZTogMiBwb29scywgJzEwMCcgYWxnbyB0b3RhbCBzdGFrZWQsIDYwIGluIHBvb2wgMSwgYW5kIDQwCi8vIGluIHBvb2wgMikgIFRoaXMgaXMgZG9uZSBzbyB3ZSBoYXZlIGEgc3RhYmxlIHNuYXBzaG90IG9mIHN0YWtlIC0gdGFrZW4gb25jZSBwZXIgZXBvY2ggLSBvbmx5IHRyaWdnZXJlZCBieQovLyBwb29sIDEgZG9pbmcgcGF5b3V0LiAgcG9vbHMgb3RoZXIgdGhhbiAxIGRvaW5nIHBheW91dCBjYWxsIHBvb2wgMSB0byBhc2sgaXQgZG8gaXQgZmlyc3QuCi8vIEl0IHdvdWxkIGJlIDYwLzQwJSBpbiB0aGUgcG9vbFBjdE9mV2hvbGUgdmFsdWVzLiAgVGhlIHRva2VuIHJld2FyZCBwYXlvdXRzIHRoZW4gdXNlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkIG9mCi8vIHRoZWlyICdjdXJyZW50JyBzdGFrZSB3aGljaCBjaGFuZ2VzIGFzIHBhcnQgb2YgdGhlIHBheW91dHMgdGhlbXNlbHZlcyAoYW5kIHBlb3BsZSBjb3VsZCBiZSBjaGFuZ2luZyBzdGFrZQovLyBkdXJpbmcgdGhlIGVwb2NoIHVwZGF0ZXMgYWNyb3NzIHBvb2xzKQovLwovLyBNdWx0aXBsZSBwb29scyB3aWxsIGNhbGwgdXMgdmlhIHBvb2wgMSAocG9vbDItPnBvb2wxLT52YWxpZGF0b3IsIGV0Yy4pIHNvIGRvbid0IGFzc2VydCBvbiBwb29sMSBjYWxsaW5nIG11bHRpcGxlCi8vIHRpbWVzIGluIHNhbWUgZXBvY2guICBKdXN0IHJldHVybi4KLy8KLy8gQHBhcmFtIHZhbGlkYXRvcklkIC0gdmFsaWRhdG9yIGlkIChhbmQgdGh1cyBwb29sKSBjYWxsaW5nIHVzLiAgVmVyaWZpZWQgc28gdGhhdCBzZW5kZXIgTVVTVCBiZSBwb29sIDEgb2YgdGhpcyB2YWxpZGF0b3IuCi8vIEByZXR1cm5zIFBvb2xUb2tlblBheW91dFJhdGlvIC0gdGhlIGZpbmlzaGVkIHJhdGlvIGRhdGEKc2V0VG9rZW5QYXlvdXRSYXRpbzoKCXByb3RvIDEgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDUKCS8vIHBvb2wxQXBwSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzWzBdLnBvb2xBcHBJZAoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDYKCS8vIGFzc2VydChwb29sMUFwcElEICE9PSAwKQoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglpbnRjIDAgLy8gMAoJIT0KCWFzc2VydAoKCS8vICppZjEzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjA4CgkvLyB0aGlzLnR4bi5zZW5kZXIgIT09IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuYWRkcmVzcwoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIDAgLy8gcG9vbDFBcHBJRDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCSE9CglieiAqaWYxM19lbmQKCgkvLyAqaWYxM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MDkKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTNfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjE1CgkvLyBjdXJSb3VuZCA9IGdsb2JhbHMucm91bmQKCWdsb2JhbCBSb3VuZAoJZnJhbWVfYnVyeSAxIC8vIGN1clJvdW5kOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTYKCS8vIGxhc3RQYXlvdXRVcGRhdGUgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dAoJaW50YyAzMSAvLyA4OTIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CgoJLy8gKmlmMTRfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MTcKCS8vIGxhc3RQYXlvdXRVcGRhdGUgIT09IDAKCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYxNF9lbmQKCgkvLyAqaWYxNF9jb25zZXF1ZW50CgkvLyAqaWYxNV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYxOQoJLy8gKEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKSBhcyB1aW50NjQpID09PSBsYXN0UGF5b3V0VXBkYXRlCglmcmFtZV9kaWcgMCAvLyBwb29sMUFwcElEOiB1aW50NjQKCXB1c2hieXRlcyAweDZjNjE3Mzc0NTA2MTc5NmY3NTc0IC8vICJsYXN0UGF5b3V0IgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbDFBcHBJRCkuZ2xvYmFsU3RhdGUoJ2xhc3RQYXlvdXQnKQoJYXNzZXJ0CglmcmFtZV9kaWcgMiAvLyBsYXN0UGF5b3V0VXBkYXRlOiB1aW50NjQKCT09CglieiAqaWYxNV9lbmQKCgkvLyAqaWYxNV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjAKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTVfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjIyCgkvLyBlcG9jaFJvdW5kTGVuZ3RoID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcuZXBvY2hSb3VuZExlbmd0aCBhcyB1aW50NjQKCXB1c2hpbnQgMTY5CglpbnRjIDE1IC8vIDQKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjMKCS8vIHRoaXNFcG9jaEJlZ2luID0gY3VyUm91bmQgLSAoY3VyUm91bmQgJSBlcG9jaFJvdW5kTGVuZ3RoKQoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJZnJhbWVfZGlnIDMgLy8gZXBvY2hSb3VuZExlbmd0aDogdWludDY0CgklCgktCglmcmFtZV9idXJ5IDQgLy8gdGhpc0Vwb2NoQmVnaW46IHVpbnQ2NAoKCS8vICppZjE2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI1CgkvLyBsYXN0UGF5b3V0VXBkYXRlIC0gKGxhc3RQYXlvdXRVcGRhdGUgJSBlcG9jaFJvdW5kTGVuZ3RoKSA9PT0gdGhpc0Vwb2NoQmVnaW4KCWZyYW1lX2RpZyAyIC8vIGxhc3RQYXlvdXRVcGRhdGU6IHVpbnQ2NAoJZnJhbWVfZGlnIDIgLy8gbGFzdFBheW91dFVwZGF0ZTogdWludDY0CglmcmFtZV9kaWcgMyAvLyBlcG9jaFJvdW5kTGVuZ3RoOiB1aW50NjQKCSUKCS0KCWZyYW1lX2RpZyA0IC8vIHRoaXNFcG9jaEJlZ2luOiB1aW50NjQKCT09CglieiAqaWYxNl9lbmQKCgkvLyAqaWYxNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MjYKCS8vIHJldHVybiB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8KCWludGMgMTQgLy8gIGhlYWRPZmZzZXQKCWludGMgMTkgLy8gMjAwCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CgliICpzZXRUb2tlblBheW91dFJhdGlvKnJldHVybgoKKmlmMTZfZW5kOgoKKmlmMTRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjI5CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnRva2VuUGF5b3V0UmF0aW8udXBkYXRlZEZvclBheW91dCA9IGN1clJvdW5kCglpbnRjIDMxIC8vIDg5MgoJZnJhbWVfZGlnIDEgLy8gY3VyUm91bmQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMQoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDUgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMgoJLy8gdG90YWxTdGFrZUZvclZhbGlkYXRvciA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuc3RhdGUudG90YWxBbGdvU3Rha2VkCglpbnRjIDEyIC8vIDI1MgoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgY3VyTnVtUG9vbHM7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgoqZm9yXzI6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2MzMKCS8vIGkgPCBjdXJOdW1Qb29scwoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglmcmFtZV9kaWcgNSAvLyBjdXJOdW1Qb29sczogdWludDY0Cgk8CglieiAqZm9yXzJfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjM4CgkvLyBvdXJQb29sUGN0T2ZXaG9sZSA9IHdpZGVSYXRpbygKCS8vICAgICAgICAgICAgICAgICBbdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1tpXS50b3RhbEFsZ29TdGFrZWQsIDFfMDAwXzAwMF0sCgkvLyAgICAgICAgICAgICAgICAgW3RvdGFsU3Rha2VGb3JWYWxpZGF0b3JdLAoJLy8gICAgICAgICAgICAgKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDExIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJcHVzaGludCAxXzAwMF8wMDAKCW11bHcKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgNiAvLyB0b3RhbFN0YWtlRm9yVmFsaWRhdG9yOiB1aW50NjQKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CglmcmFtZV9idXJ5IDggLy8gb3VyUG9vbFBjdE9mV2hvbGU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0MgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS50b2tlblBheW91dFJhdGlvLnBvb2xQY3RPZldob2xlW2ldID0gb3VyUG9vbFBjdE9mV2hvbGUKCWludGMgMTQgLy8gNzAwCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyA4IC8vIG91clBvb2xQY3RPZldob2xlOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCipmb3JfMl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjYzMwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfMgoKKmZvcl8yX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY0NAoJLy8gcmV0dXJuIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUudG9rZW5QYXlvdXRSYXRpbwoJaW50YyAxNCAvLyAgaGVhZE9mZnNldAoJaW50YyAxOSAvLyAyMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCipzZXRUb2tlblBheW91dFJhdGlvKnJldHVybjoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDgKCXJldHN1YgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcygodWludDY0LHVpbnQ2NCx1aW50NjQpLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkCiphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkczoKCS8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJYnRvaQoKCS8vIHZhbGlkYXRvckNvbW1pc3Npb246IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIGFsZ29Ub0FkZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gcG9vbEtleTogKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJZHVwCglsZW4KCWludGMgMyAvLyAyNAoJPT0KCgkvLyBhcmd1bWVudCA0IChwb29sS2V5KSBmb3Igc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzKCh1aW50NjQsdWludDY0LHVpbnQ2NCksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKCWNhbGxzdWIgc3Rha2VVcGRhdGVkVmlhUmV3YXJkcwoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyhwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBhbGdvVG9BZGQ6IHVpbnQ2NCwgcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0LCB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQsIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NCk6IHZvaWQKLy8KLy8gc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbAovLyBzdGFrZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3BlY2lmaWVkIHBvb2wuICBUaGlzIGlzIHVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0cyB3ZSBoYXZlIGluIG91ciBQb29sSW5mbyBzdG9yYWdlLgovLyBUaGUgY2FsbGluZyBBcHAgaWQgaXMgdmFsaWRhdGVkIGFnYWluc3Qgb3VyIHBvb2wgbGlzdCBhcyB3ZWxsLgovLyBAcGFyYW0ge1ZhbGlkYXRvclBvb2xLZXl9IHBvb2xLZXkgLSBWYWxpZGF0b3JQb29sS2V5IHR5cGUKLy8gQHBhcmFtIHt1aW50NjR9IGFsZ29Ub0FkZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcwovLyBAcGFyYW0ge3VpbnQ2NH0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZCAtIGFtb3VudCB0aGlzIHZhbGlkYXRvcidzIHRvdGFsIHN0YWtlIGluY3JlYXNlZCB2aWEgcmV3YXJkcyAodGhhdCBzaG91bGQgYmUKLy8gQHBhcmFtIHt1aW50NjR9IHZhbGlkYXRvckNvbW1pc3Npb24gLSB0aGUgY29tbWlzc2lvbiBhbW91bnQgdGhlIHZhbGlkYXRvciB3YXMgcGFpZCwgaWYgYW55Ci8vIEBwYXJhbSB7dWludDY0fSBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rIC0gaWYgdGhlIHBvb2wgd2FzIGluIHNhdHVyYXRlZCBzdGF0ZSwgdGhlIGFtb3VudCBzZW50IGJhY2sgdG8gdGhlIGZlZSBzaW5rLgovLyBzZWVuIGFzICdhY2NvdW50ZWQgZm9yL3BlbmRpbmcgc3BlbnQnKQpzdGFrZVVwZGF0ZWRWaWFSZXdhcmRzOgoJcHJvdG8gNSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NjY1CgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NjgKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY2OQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBhbGdvVG9BZGQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0yIC8vIGFsZ29Ub0FkZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sgKz0gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZAoJaW50YyAxMyAvLyAyNjAKCWR1cAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gcmV3YXJkVG9rZW5BbW91bnRSZXNlcnZlZDogdWludDY0CgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjY3MgoJLy8gdGhpcy50b3RhbEFsZ29TdGFrZWQudmFsdWUgKz0gYWxnb1RvQWRkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMiAvLyBhbGdvVG9BZGQ6IHVpbnQ2NAoJKwoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCXN3YXAKCWFwcF9nbG9iYWxfcHV0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Njc1CgkvLyB0aGlzLnJldmVyaWZ5TkZET3duZXJzaGlwKHBvb2xLZXkuaWQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWNhbGxzdWIgcmV2ZXJpZnlORkRPd25lcnNoaXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo2NzcKCS8vIHRoaXMucmV0aU9QX2Vwb2NoUmV3YXJkVXBkYXRlLmxvZyh7CgkvLyAgICAgICAgICAgICBpZDogcG9vbEtleS5pZCwKCS8vICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgIHBvb2xBcHBJZDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBhbGdvQWRkZWQ6IGFsZ29Ub0FkZCwKCS8vICAgICAgICAgICAgIHJld2FyZFRva2VuSGVsZEJhY2s6IHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQsCgkvLyAgICAgICAgICAgICBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rOiBzYXR1cmF0ZWRCdXJuVG9GZWVTaW5rLAoJLy8gICAgICAgICAgICAgdmFsaWRhdG9yQ29tbWlzc2lvbjogdmFsaWRhdG9yQ29tbWlzc2lvbiwKCS8vICAgICAgICAgfSkKCXB1c2hieXRlcyAweGIzZTQ3YzNkIC8vIHJldGlPUF9lcG9jaFJld2FyZFVwZGF0ZSh1aW50NjQsdWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtNCAvLyB2YWxpZGF0b3JDb21taXNzaW9uOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC01IC8vIHNhdHVyYXRlZEJ1cm5Ub0ZlZVNpbms6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gYWxnb1RvQWRkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIHJld2FyZFRva2VuQW1vdW50UmVzZXJ2ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJcmV0c3ViCgovLyBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCiphYmlfcm91dGVfc3Rha2VSZW1vdmVkOgoJLy8gc3Rha2VyUmVtb3ZlZDogYm9vbAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQoJZHVwCglsZW4KCWludGMgMSAvLyAxCgk9PQoKCS8vIGFyZ3VtZW50IDAgKHN0YWtlclJlbW92ZWQpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGJvb2wKCWFzc2VydAoJaW50YyAwIC8vIDAKCWdldGJpdAoKCS8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAoJYnRvaQoKCS8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHN0YWtlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAzIChzdGFrZXIpIGZvciBzdGFrZVJlbW92ZWQgbXVzdCBiZSBhIGFkZHJlc3MKCWFzc2VydAoKCS8vIHBvb2xLZXk6ICh1aW50NjQsdWludDY0LHVpbnQ2NCkKCXR4bmEgQXBwbGljYXRpb25BcmdzIDEKCWR1cAoJbGVuCglpbnRjIDMgLy8gMjQKCT09CgoJLy8gYXJndW1lbnQgNCAocG9vbEtleSkgZm9yIHN0YWtlUmVtb3ZlZCBtdXN0IGJlIGEgKHVpbnQ2NCx1aW50NjQsdWludDY0KQoJYXNzZXJ0CgoJLy8gZXhlY3V0ZSBzdGFrZVJlbW92ZWQoKHVpbnQ2NCx1aW50NjQsdWludDY0KSxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsYm9vbCl2b2lkCgljYWxsc3ViIHN0YWtlUmVtb3ZlZAoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gc3Rha2VSZW1vdmVkKHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXksIHN0YWtlcjogQWRkcmVzcywgYW1vdW50UmVtb3ZlZDogdWludDY0LCByZXdhcmRSZW1vdmVkOiB1aW50NjQsIHN0YWtlclJlbW92ZWQ6IGJvb2xlYW4pOiB2b2lkCi8vCi8vIHN0YWtlUmVtb3ZlZCBpcyBjYWxsZWQgYnkgU3Rha2luZyBwb29scyB0byBpbmZvcm0gdGhlIHZhbGlkYXRvciAodXMpIHRoYXQgYSBwYXJ0aWN1bGFyIGFtb3VudCBvZiB0b3RhbCBzdGFrZSBoYXMgYmVlbiByZW1vdmVkCi8vIGZyb20gdGhlIHNwZWNpZmllZCBwb29sLiAgVGhpcyBpcyB1c2VkIHRvIHVwZGF0ZSB0aGUgc3RhdHMgd2UgaGF2ZSBpbiBvdXIgUG9vbEluZm8gc3RvcmFnZS4KLy8gSWYgYW55IGFtb3VudCBvZiByZXdhcmRSZW1vdmVkIGlzIHNwZWNpZmllZCwgdGhlbiB0aGF0IGFtb3VudCBvZiByZXdhcmQgaXMgc2VudCB0byB0aGUgdXNlCi8vIFRoZSBjYWxsaW5nIEFwcCBpZCBpcyB2YWxpZGF0ZWQgYWdhaW5zdCBvdXIgcG9vbCBsaXN0IGFzIHdlbGwuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9yUG9vbEtleX0gcG9vbEtleSBjYWxsaW5nIHVzIGZyb20gd2hpY2ggc3Rha2Ugd2FzIHJlbW92ZWQKLy8gQHBhcmFtIHtBZGRyZXNzfSBzdGFrZXIKLy8gQHBhcmFtIHt1aW50NjR9IGFtb3VudFJlbW92ZWQgLSBhbGdvIGFtb3VudCByZW1vdmVkCi8vIEBwYXJhbSB7dWludDY0fSByZXdhcmRSZW1vdmVkIC0gaWYgYXBwbGljYWJsZSwgYW1vdW50IG9mIHRva2VuIHJld2FyZCByZW1vdmVkIChieSBwb29sIDEgY2FsbGVyKSBvciBUTyByZW1vdmUgYW5kIHBheSBvdXQgKHZpYSBwb29sIDEgZnJvbSBkaWZmZXJlbnQgcG9vbCBjYWxsZXIpCi8vIEBwYXJhbSB7Ym9vbGVhbn0gc3Rha2VyUmVtb3ZlZApzdGFrZVJlbW92ZWQ6Cglwcm90byA1IDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gKmlmMTdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MDcKCS8vIGdsb2JhbHMub3Bjb2RlQnVkZ2V0IDwgMzAwCglnbG9iYWwgT3Bjb2RlQnVkZ2V0CglpbnRjIDI5IC8vIDMwMAoJPAoJYnogKmlmMTdfZW5kCgoJLy8gKmlmMTdfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzA4CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMTdfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzEwCgkvLyB0aGlzLnZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CgljYWxsc3ViIHZlcmlmeVBvb2xLZXlDYWxsZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MTQKCS8vIGFzc2VydChhbW91bnRSZW1vdmVkID4gMCB8fCByZXdhcmRSZW1vdmVkID4gMCwgJ3Nob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZCcpCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJZHVwCglibnogKnNraXBfb3IyCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPgoJfHwKCipza2lwX29yMjoKCS8vIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBhbGdvIG9yIHJld2FyZCB3YXMgcmVtb3ZlZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE3CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgLT0gYW1vdW50UmVtb3ZlZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTMgLy8gYW1vdW50UmVtb3ZlZDogdWludDY0CgktCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjcxOAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCAtPSBhbW91bnRSZW1vdmVkCglpbnRjIDEyIC8vIDI1MgoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzE5CgkvLyB0aGlzLnRvdGFsQWxnb1N0YWtlZC52YWx1ZSAtPSBhbW91bnRSZW1vdmVkCglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCS0KCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKCS8vICppZjE4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzIxCgkvLyByZXdhcmRSZW1vdmVkID4gMAoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT4KCWJ6ICppZjE4X2Vsc2UKCgkvLyAqaWYxOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjIKCS8vIHJld2FyZFRva2VuSUQgPSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuY29uZmlnLnJld2FyZFRva2VuSWQKCWludGMgMzggLy8gMTUzCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjMKCS8vIGFzc2VydChyZXdhcmRUb2tlbklEICE9PSAwLCAicmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hIikKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCSE9CgoJLy8gcmV3YXJkUmVtb3ZlZCBjYW4ndCBiZSBzZXQgaWYgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSByZXdhcmQgdG9rZW4hCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MjQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUucmV3YXJkVG9rZW5IZWxkQmFjayA+PSByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgICdyZXdhcmQgYmVpbmcgcmVtb3ZlZCBtdXN0IGJlIGNvdmVyZWQgYnkgaG9sZCBiYWNrIGFtb3VudCcsCgkvLyAgICAgICAgICAgICApCglpbnRjIDEzIC8vIDI2MAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0Cgk+PQoKCS8vIHJld2FyZCBiZWluZyByZW1vdmVkIG11c3QgYmUgY292ZXJlZCBieSBob2xkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzAKCS8vIHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5zdGF0ZS5yZXdhcmRUb2tlbkhlbGRCYWNrIC09IHJld2FyZFJlbW92ZWQKCWludGMgMTMgLy8gMjYwCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJLQoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyAqaWYxOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNQoJLy8gcG9vbEtleS5wb29sSWQgIT09IDEKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCSE9CglieiAqaWYxOV9lbmQKCgkvLyAqaWYxOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKSwKCS8vICAgICAgICAgICAgICAgICAgICAgbWV0aG9kQXJnczogW3N0YWtlciwgcmV3YXJkVG9rZW5JRCwgcmV3YXJkUmVtb3ZlZF0sCgkvLyAgICAgICAgICAgICAgICAgfSkKCWl0eG5fYmVnaW4KCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJYnl0ZWMgMTMgLy8gIG1ldGhvZCAicGF5VG9rZW5SZXdhcmQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjczNwoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NCh0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbMF0ucG9vbEFwcElkKQoJaW50YyA1IC8vIDI2OAoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3MzgKCS8vIG1ldGhvZEFyZ3M6IFtzdGFrZXIsIHJld2FyZFRva2VuSUQsIHJld2FyZFJlbW92ZWRdCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JRDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC00IC8vIHJld2FyZFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoqaWYxOV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NDEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2VuQXNzZXRJZDogQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSUQpLAoJLy8gICAgICAgICAgICAgICAgIHJld2FyZFRva2Vuc1JlY2VpdmVkOiByZXdhcmRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgfSkKCWJ5dGVjIDE0IC8vICByZXRpT1Bfc3Rha2VSZW1vdmVkKHVpbnQ2NCx1aW50MTYsdWludDY0LGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQpCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaXRvYgoJZHVwCgliaXRsZW4KCWludGMgMTggLy8gMTYKCTw9CgoJLy8gcG9vbEtleS5wb29sSWQgYXMgdWludDE2IG92ZXJmbG93ZWQgMTYgYml0cwoJYXNzZXJ0CglleHRyYWN0IDYgMgoJY29uY2F0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFJlbW92ZWQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTQgLy8gcmV3YXJkUmVtb3ZlZDogdWludDY0CglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSUQ6IHVpbnQ2NAoJaXRvYgoJY29uY2F0Cgljb25jYXQKCWxvZwoJYiAqaWYxOF9lbmQKCippZjE4X2Vsc2U6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NTEKCS8vIHRoaXMucmV0aU9QX3N0YWtlUmVtb3ZlZC5sb2coewoJLy8gICAgICAgICAgICAgICAgIGlkOiBwb29sS2V5LmlkLAoJLy8gICAgICAgICAgICAgICAgIHBvb2xOdW06IHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLAoJLy8gICAgICAgICAgICAgICAgIHN0YWtlcjogc3Rha2VyLAoJLy8gICAgICAgICAgICAgICAgIGFtb3VudFVuc3Rha2VkOiBhbW91bnRSZW1vdmVkLAoJLy8gICAgICAgICAgICAgICAgIC8vIG5vIHRva2VucyByZXdhcmRlZC4uCgkvLyAgICAgICAgICAgICAgICAgcmV3YXJkVG9rZW5Bc3NldElkOiBBc3NldElELnplcm9JbmRleCwKCS8vICAgICAgICAgICAgICAgICByZXdhcmRUb2tlbnNSZWNlaXZlZDogMCwKCS8vICAgICAgICAgICAgIH0pCglieXRlYyAxNCAvLyAgcmV0aU9QX3N0YWtlUmVtb3ZlZCh1aW50NjQsdWludDE2LHVpbnQ2NCxhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDY0KQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWl0b2IKCWR1cAoJYml0bGVuCglpbnRjIDE4IC8vIDE2Cgk8PQoKCS8vIHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNiBvdmVyZmxvd2VkIDE2IGJpdHMKCWFzc2VydAoJZXh0cmFjdCA2IDIKCWNvbmNhdAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJaXRvYgoJY29uY2F0CglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRSZW1vdmVkOiB1aW50NjQKCWl0b2IKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWNvbmNhdAoJY29uY2F0Cglsb2cKCippZjE4X2VuZDoKCS8vICppZjIwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzYzCgkvLyBzdGFrZXJSZW1vdmVkCglmcmFtZV9kaWcgLTUgLy8gc3Rha2VyUmVtb3ZlZDogYm9vbGVhbgoJYnogKmlmMjBfZW5kCgoJLy8gKmlmMjBfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzY1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgLT0gMQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDUgLy8gIGhlYWRPZmZzZXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWludGMgNCAvLyAxOAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCgkrCglpbnRjIDIgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMTAgLy8gMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpdG9iCglleHRyYWN0IDYgMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NjcKCS8vIHJlbW92ZVJldCA9IHRoaXMucmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyLCA8VmFsaWRhdG9yUG9vbEtleT57CgkvLyAgICAgICAgICAgICAgICAgaWQ6IHBvb2xLZXkuaWQsCgkvLyAgICAgICAgICAgICAgICAgcG9vbElkOiBwb29sS2V5LnBvb2xJZCwKCS8vICAgICAgICAgICAgICAgICBwb29sQXBwSWQ6IHBvb2xLZXkucG9vbEFwcElkLAoJLy8gICAgICAgICAgICAgfSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJZnJhbWVfZGlnIC0yIC8vIHN0YWtlcjogQWRkcmVzcwoJY2FsbHN1YiByZW1vdmVGcm9tU3Rha2VyUG9vbFNldAoJZnJhbWVfYnVyeSAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzIKCS8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvciA9IHJlbW92ZVJldFswXQoJZnJhbWVfZGlnIDEgLy8gcmVtb3ZlUmV0OiAoYm9vbCxib29sKQoJc3RvcmUgMjU1IC8vIGZ1bGwgYXJyYXkKCWxvYWQgMjU1IC8vIGZ1bGwgYXJyYXkKCWludGMgMCAvLyAwCglnZXRiaXQKCWZyYW1lX2J1cnkgMiAvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3I6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo3NzMKCS8vIHN0YWtlck91dE9mUHJvdG9jb2wgPSByZW1vdmVSZXRbMV0KCWZyYW1lX2RpZyAxIC8vIHJlbW92ZVJldDogKGJvb2wsYm9vbCkKCXN0b3JlIDI1NSAvLyBmdWxsIGFycmF5Cglsb2FkIDI1NSAvLyBmdWxsIGFycmF5CglpbnRjIDEgLy8gMQoJZ2V0Yml0CglmcmFtZV9idXJ5IDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoKCS8vICppZjIxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc1CgkvLyBzdGFrZXJPdXRPZlRoaXNWYWxpZGF0b3IKCWZyYW1lX2RpZyAyIC8vIHN0YWtlck91dE9mVGhpc1ZhbGlkYXRvcjogYm9vbAoJYnogKmlmMjFfZW5kCgoJLy8gKmlmMjFfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6Nzc2CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUuc3RhdGUudG90YWxTdGFrZXJzIC09IDEKCWludGMgMjMgLy8gMjQ0CglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJaW50YyAxIC8vIDEKCS0KCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoqaWYyMV9lbmQ6CgkvLyAqaWYyMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjc3OQoJLy8gc3Rha2VyT3V0T2ZQcm90b2NvbAoJZnJhbWVfZGlnIDMgLy8gc3Rha2VyT3V0T2ZQcm90b2NvbDogYm9vbAoJYnogKmlmMjJfZW5kCgoJLy8gKmlmMjJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6NzgwCgkvLyB0aGlzLm51bVN0YWtlcnMudmFsdWUgLT0gMQoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglhcHBfZ2xvYmFsX2dldAoJaW50YyAxIC8vIDEKCS0KCWJ5dGVjIDYgLy8gICJudW1TdGFrZXJzIgoJc3dhcAoJYXBwX2dsb2JhbF9wdXQKCippZjIyX2VuZDoKCippZjIwX2VuZDoKCXJldHN1YgoKLy8gZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkKKmFiaV9yb3V0ZV9maW5kUG9vbEZvclN0YWtlcjoKCS8vIFRoZSBBQkkgcmV0dXJuIHByZWZpeAoJYnl0ZWMgMiAvLyAweDE1MWY3Yzc1CgoJLy8gYW1vdW50VG9TdGFrZTogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAzCglidG9pCgoJLy8gc3Rha2VyOiBhZGRyZXNzCgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglkdXAKCWxlbgoJaW50YyA2IC8vIDMyCgk9PQoKCS8vIGFyZ3VtZW50IDEgKHN0YWtlcikgZm9yIGZpbmRQb29sRm9yU3Rha2VyIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBmaW5kUG9vbEZvclN0YWtlcih1aW50NjQsYWRkcmVzcyx1aW50NjQpKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYm9vbCxib29sKQoJY2FsbHN1YiBmaW5kUG9vbEZvclN0YWtlcgoJY29uY2F0Cglsb2cKCWludGMgMSAvLyAxCglyZXR1cm4KCi8vIGZpbmRQb29sRm9yU3Rha2VyKHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUsIHN0YWtlcjogQWRkcmVzcywgYW1vdW50VG9TdGFrZTogdWludDY0KTogW1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIEZpbmRzIHRoZSBwb29sIGZvciBhIHN0YWtlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFsaWRhdG9yIGlkLCBzdGFrZXIgYWRkcmVzcywgYW5kIGFtb3VudCB0byBzdGFrZS4KLy8gRmlyc3QgY2hlY2tzIHRoZSBzdGFrZXJzICdhbHJlYWR5IHN0YWtlZCBsaXN0JyBmb3IgdGhlIHZhbGlkYXRvciBwcmVmZXJyaW5nIHRob3NlIChhZGRpbmcgaWYgcG9zc2libGUpIHRoZW4gYWRkcwovLyB0byBuZXcgcG9vbCBpZiBuZWNlc3NhcnkuCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge0FkZHJlc3N9IHN0YWtlciAtIFRoZSBhZGRyZXNzIG9mIHRoZSBzdGFrZXIuCi8vIEBwYXJhbSB7dWludDY0fSBhbW91bnRUb1N0YWtlIC0gVGhlIGFtb3VudCB0byBzdGFrZS4KLy8gQHJldHVybnMge1ZhbGlkYXRvclBvb2xLZXksIGJvb2xlYW4sIGJvb2xlYW59IC0gVGhlIHBvb2wgZm9yIHRoZSBzdGFrZXIsIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGUgc3Rha2VyIGlzICduZXcnCi8vIHRvIHRoaXMgVkFMSURBVE9SLCBhbmQgdHJ1ZS9mYWxzZSBpZiBzdGFrZXIgaXMgbmV3IHRvIHRoZSBwcm90b2NvbC4KZmluZFBvb2xGb3JTdGFrZXI6Cglwcm90byAzIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA3CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAyCgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODAzCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxMQoJLy8gbWF4UGVyUG9vbCA9IHRoaXMuZ2V0Q3VyTWF4U3Rha2VQZXJQb29sKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgZ2V0Q3VyTWF4U3Rha2VQZXJQb29sCglmcmFtZV9idXJ5IDIgLy8gbWF4UGVyUG9vbDogdWludDY0CgoJLy8gKmlmMjNfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTQKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLmV4aXN0cwoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMiAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglieiAqaWYyM19lbmQKCgkvLyAqaWYyM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTUKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTIgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE2CgkvLyBhc3NlcnQodmFsaWRhdG9ySWQgIT09IDApCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaW50YyAwIC8vIDAKCSE9Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgcG9vbFNldC5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzM6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MTcKCS8vIGkgPCBwb29sU2V0Lmxlbmd0aAoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl8zX2VuZAoKCS8vICppZjI0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODE4CgkvLyBnbG9iYWxzLm9wY29kZUJ1ZGdldCA8IDMwMAoJZ2xvYmFsIE9wY29kZUJ1ZGdldAoJaW50YyAyOSAvLyAzMDAKCTwKCWJ6ICppZjI0X2VuZAoKCS8vICppZjI0X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxOQoJLy8gaW5jcmVhc2VPcGNvZGVCdWRnZXQoKQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCWJ5dGVjIDggLy8gICNwcmFnbWEgdmVyc2lvbiAxMDsgaW50IDEKCWR1cAoJaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KCWl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KCWludGMgMjYgLy8gIERlbGV0ZUFwcGxpY2F0aW9uCglpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgoJaXR4bl9zdWJtaXQKCippZjI0X2VuZDoKCS8vICppZjI1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODIxCgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjI1X2VuZAoKCS8vICppZjI1X2NvbnNlcXVlbnQKCWIgKmZvcl8zX2NvbnRpbnVlCgoqaWYyNV9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjQKCS8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbCA9IGZhbHNlCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoKCS8vICppZjI2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODI1CgkvLyBwb29sU2V0W2ldLmlkID09PSB2YWxpZGF0b3JJZAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCT09CglieiAqaWYyNl9lbmQKCgkvLyAqaWYyNl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjcKCS8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3IgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCgoJLy8gKmlmMjdfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4MjkKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUucG9vbHNbcG9vbFNldFtpXS5wb29sSWQgLSAxXS50b3RhbEFsZ29TdGFrZWQgKwoJLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudFRvU3Rha2UgPD0KCS8vICAgICAgICAgICAgICAgICAgICAgICAgIG1heFBlclBvb2wKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAyIC8vICBoZWFkT2Zmc2V0CgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAxMSAvLyAgaGVhZE9mZnNldAoJKwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCSsKCWZyYW1lX2RpZyAyIC8vIG1heFBlclBvb2w6IHVpbnQ2NAoJPD0KCWJ6ICppZjI3X2VuZAoKCS8vICppZjI3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgzMwoJLy8gcmV0dXJuIFtwb29sU2V0W2ldLCBpc05ld1N0YWtlclRvVmFsaWRhdG9yLCBpc05ld1N0YWtlclRvUHJvdG9jb2xdCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDMgLy8gMjQKCWV4dHJhY3QzCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI3X2VuZDoKCippZjI2X2VuZDoKCipmb3JfM19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjgxNwoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfMwoKKmZvcl8zX2VuZDoKCippZjIzX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0MAoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgYW1vdW50VG9TdGFrZSA+PSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5taW5FbnRyeVN0YWtlLAoJLy8gICAgICAgICAgICAgJ211c3Qgc3Rha2UgYXQgbGVhc3QgdGhlIG1pbmltdW0gZm9yIHRoaXMgcG9vbCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMyAvLyBhbW91bnRUb1N0YWtlOiB1aW50NjQKCWludGMgMzkgLy8gMjA5CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJPj0KCgkvLyBtdXN0IHN0YWtlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGZvciB0aGlzIHBvb2wKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NgoJLy8gcG9vbHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnBvb2xzKQoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglpbnRjIDMwIC8vIDQzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0NwoJLy8gY3VyTnVtUG9vbHMgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzIGFzIHVpbnQ2NAoJaW50YyA5IC8vIDI0MgoJaW50YyAxMCAvLyAyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gY3VyTnVtUG9vbHM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCBjdXJOdW1Qb29sczsgaSArPSAxKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyBpOiB1aW50NjQKCipmb3JfNDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSA8IGN1ck51bVBvb2xzCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGN1ck51bVBvb2xzOiB1aW50NjQKCTwKCWJ6ICpmb3JfNF9lbmQKCgkvLyAqaWYyOF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OQoJLy8gcG9vbHNbaV0udG90YWxBbGdvU3Rha2VkICsgYW1vdW50VG9TdGFrZSA8PSBtYXhQZXJQb29sCglmcmFtZV9kaWcgNSAvLyBwb29sczogKHVpbnQ2NCx1aW50MTYsdWludDY0KVsyNF0KCWZyYW1lX2RpZyA3IC8vIGk6IHVpbnQ2NAoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJZnJhbWVfZGlnIC0zIC8vIGFtb3VudFRvU3Rha2U6IHVpbnQ2NAoJKwoJZnJhbWVfZGlnIDIgLy8gbWF4UGVyUG9vbDogdWludDY0Cgk8PQoJYnogKmlmMjhfZW5kCgoJLy8gKmlmMjhfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODUwCgkvLyByZXR1cm4gWwoJLy8gICAgICAgICAgICAgICAgICAgICB7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiBpICsgMSwgcG9vbEFwcElkOiBwb29sc1tpXS5wb29sQXBwSWQgfSwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwKCS8vICAgICAgICAgICAgICAgICAgICAgaXNOZXdTdGFrZXJUb1Byb3RvY29sLAoJLy8gICAgICAgICAgICAgICAgIF0KCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglpdG9iCgljb25jYXQKCWZyYW1lX2RpZyA1IC8vIHBvb2xzOiAodWludDY0LHVpbnQxNix1aW50NjQpWzI0XQoJZnJhbWVfZGlnIDcgLy8gaTogdWludDY0CglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaXRvYgoJY29uY2F0CglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yOiBib29sCglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2wKCXNldGJpdAoJY29uY2F0CgliICpmaW5kUG9vbEZvclN0YWtlcipyZXR1cm4KCippZjI4X2VuZDoKCipmb3JfNF9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg0OAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNyAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDcgLy8gaTogdWludDY0CgliICpmb3JfNAoKKmZvcl80X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg1OAoJLy8gcmV0dXJuIFt7IGlkOiB2YWxpZGF0b3JJZCwgcG9vbElkOiAwLCBwb29sQXBwSWQ6IDAgfSwgaXNOZXdTdGFrZXJUb1ZhbGlkYXRvciwgaXNOZXdTdGFrZXJUb1Byb3RvY29sXQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDcgLy8gMHgwMDAwMDAwMDAwMDAwMDAwCgljb25jYXQKCWJ5dGVjIDUgLy8gMHgwMAoJaW50YyAwIC8vIDAKCWZyYW1lX2RpZyAwIC8vIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2wKCXNldGJpdAoJaW50YyAxIC8vIDEKCWZyYW1lX2RpZyAxIC8vIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbAoJc2V0Yml0Cgljb25jYXQKCipmaW5kUG9vbEZvclN0YWtlcipyZXR1cm46CgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCgkvLyBwb3AgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIHRoZSBzdGFjawoJcG9wbiA3CglyZXRzdWIKCi8vIG1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQKKmFiaV9yb3V0ZV9tb3ZlUG9vbFRvTm9kZToKCS8vIG5vZGVOdW06IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwoJYnRvaQoKCS8vIHBvb2xBcHBJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAyCglidG9pCgoJLy8gdmFsaWRhdG9ySWQ6IHVpbnQ2NAoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQoJYnRvaQoKCS8vIGV4ZWN1dGUgbW92ZVBvb2xUb05vZGUodWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZAoJY2FsbHN1YiBtb3ZlUG9vbFRvTm9kZQoJaW50YyAxIC8vIDEKCXJldHVybgoKLy8gbW92ZVBvb2xUb05vZGUodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSwgcG9vbEFwcElkOiB1aW50NjQsIG5vZGVOdW06IHVpbnQ2NCk6IHZvaWQKLy8KLy8gRmluZCB0aGUgc3BlY2lmaWVkIHBvb2wgKGluIGFueSBub2RlIG51bWJlcikgYW5kIG1vdmUgaXQgdG8gdGhlIHNwZWNpZmllZCBub2RlLgovLyBUaGUgcG9vbCBhY2NvdW50IGlzIGZvcmNlZCBvZmZsaW5lIGlmIG1vdmVkIHNvIHByaW9yIG5vZGUgd2lsbCBzdGlsbCBydW4gZm9yIDMyMCByb3VuZHMgYnV0Ci8vIG5ldyBrZXkgZ29lcyBvbmxpbmUgb24gbmV3IG5vZGUgc29vbiBhZnRlciAoMzIwIHJvdW5kcyBhZnRlciBpdCBnb2VzIG9ubGluZSkKLy8gTm8tb3AgaWYgc3VjY2VzcywgYXNzZXJ0cyBpZiBub3QgZm91bmQgb3IgY2FuJ3QgbW92ZSAgKG5vIHNwYWNlIGluIHRhcmdldCkKLy8gWyBPTkxZIE9XTkVSIE9SIE1BTkFHRVIgQ0FOIENIQU5HRSBdCi8vCi8vIEBwYXJhbSB7VmFsaWRhdG9ySWRUeXBlfSB2YWxpZGF0b3JJZCAtIFRoZSBpZCBvZiB0aGUgdmFsaWRhdG9yLgovLyBAcGFyYW0ge3VpbnQ2NH0gcG9vbEFwcElkCi8vIEBwYXJhbSB7dWludDY0fSBub2RlTnVtCm1vdmVQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3MwoJLy8gdGhpcy5jYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZCkKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCgljYWxsc3ViIGNhbGxlck11c3RCZU93bmVyT3JNYW5hZ2VyCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc1CgkvLyBub2RlUG9vbEFzc2lnbm1lbnRzID0gY2xvbmUodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzKQoJaW50YyAxNyAvLyAgaGVhZE9mZnNldAoJaW50YyAyMiAvLyAxOTIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc2CgkvLyBhc3NlcnQobm9kZU51bSA+PSAxICYmIG5vZGVOdW0gPD0gTUFYX05PREVTLCAnbm9kZSBudW1iZXIgb3V0IG9mIGFsbG93YWJsZSByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMgoJZnJhbWVfZGlnIC0zIC8vIG5vZGVOdW06IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTw9CgkmJgoKKnNraXBfYW5kMjoKCS8vIG5vZGUgbnVtYmVyIG91dCBvZiBhbGxvd2FibGUgcmFuZ2UKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gZm9yIChsZXQgc3JjTm9kZUlkeCA9IDA7IHNyY05vZGVJZHggPCBNQVhfTk9ERVM7IHNyY05vZGVJZHggKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgoqZm9yXzU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzgKCS8vIHNyY05vZGVJZHggPCBNQVhfTk9ERVMKCWZyYW1lX2RpZyAxIC8vIHNyY05vZGVJZHg6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCTwKCWJ6ICpmb3JfNV9lbmQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4NzkKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl82OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODc5CgkvLyBpIDwgTUFYX1BPT0xTX1BFUl9OT0RFCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgOCAvLyAzCgk8CglieiAqZm9yXzZfZW5kCgoJLy8gKmlmMjlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODAKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbc3JjTm9kZUlkeF0ucG9vbEFwcElkc1tpXSA9PT0gcG9vbEFwcElkCglmcmFtZV9kaWcgMCAvLyBub2RlUG9vbEFzc2lnbm1lbnRzOiAoKHVpbnQ2NFszXSlbOF0pCglpbnRjIDAgLy8gMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglmcmFtZV9kaWcgLTIgLy8gcG9vbEFwcElkOiB1aW50NjQKCT09CglieiAqaWYyOV9lbmQKCgkvLyAqaWYyOV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODEKCS8vIGFzc2VydChub2RlTnVtIC0gMSAhPT0gc3JjTm9kZUlkeCwgImNhbid0IG1vdmUgdG8gc2FtZSBub2RlIikKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMSAvLyAxCgktCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCSE9CgoJLy8gY2FuJ3QgbW92ZSB0byBzYW1lIG5vZGUKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg4MwoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5ub2RlUG9vbEFzc2lnbm1lbnRzLm5vZGVzW3NyY05vZGVJZHhdLnBvb2xBcHBJZHNbaV0gPSAwCglpbnRjIDE3IC8vIDkwMAoJZnJhbWVfZGlnIDEgLy8gc3JjTm9kZUlkeDogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAyIC8vIDgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJYnl0ZWMgNyAvLyAweDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODYKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUuZ29PZmZsaW5lPih7CgkvLyAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCXB1c2hieXRlcyAweDUxZWYzYjIxIC8vIG1ldGhvZCAiZ29PZmZsaW5lKCl2b2lkIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo4ODcKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIC0yIC8vIHBvb2xBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6ODkxCgkvLyB0aGlzLmFkZFBvb2xUb05vZGUodmFsaWRhdG9ySWQsIHBvb2xBcHBJZCwgbm9kZU51bSkKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgYWRkUG9vbFRvTm9kZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg5MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjI5X2VuZDoKCipmb3JfNl9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OQoJLy8gaSArPSAxCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgliICpmb3JfNgoKKmZvcl82X2VuZDoKCipmb3JfNV9jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjg3OAoJLy8gc3JjTm9kZUlkeCArPSAxCglmcmFtZV9kaWcgMSAvLyBzcmNOb2RlSWR4OiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDEgLy8gc3JjTm9kZUlkeDogdWludDY0CgliICpmb3JfNQoKKmZvcl81X2VuZDoKCS8vIGNvdWxkbid0IGZpbmQgcG9vbCBhcHAgaWQgaW4gbm9kZXMgdG8gbW92ZQoJZXJyCglyZXRzdWIKCi8vIGVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NAoqYWJpX3JvdXRlX2VtcHR5VG9rZW5SZXdhcmRzOgoJLy8gVGhlIEFCSSByZXR1cm4gcHJlZml4CglieXRlYyAyIC8vIDB4MTUxZjdjNzUKCgkvLyByZWNlaXZlcjogYWRkcmVzcwoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgoJZHVwCglsZW4KCWludGMgNiAvLyAzMgoJPT0KCgkvLyBhcmd1bWVudCAwIChyZWNlaXZlcikgZm9yIGVtcHR5VG9rZW5SZXdhcmRzIG11c3QgYmUgYSBhZGRyZXNzCglhc3NlcnQKCgkvLyB2YWxpZGF0b3JJZDogdWludDY0Cgl0eG5hIEFwcGxpY2F0aW9uQXJncyAxCglidG9pCgoJLy8gZXhlY3V0ZSBlbXB0eVRva2VuUmV3YXJkcyh1aW50NjQsYWRkcmVzcyl1aW50NjQKCWNhbGxzdWIgZW1wdHlUb2tlblJld2FyZHMKCWl0b2IKCWNvbmNhdAoJbG9nCglpbnRjIDEgLy8gMQoJcmV0dXJuCgovLyBlbXB0eVRva2VuUmV3YXJkcyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCByZWNlaXZlcjogQWRkcmVzcyk6IHVpbnQ2NAovLwovLyBTZW5kcyB0aGUgcmV3YXJkIHRva2VucyBoZWxkIGluIHBvb2wgMSB0byBzcGVjaWZpZWQgcmVjZWl2ZXIuCi8vIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgb3duZXIgd2hlbiB0aGV5IHdhbnQgdG8gZ2V0IHJld2FyZCB0b2tlbnMgJ2JhY2snIHdoaWNoIHRoZXkgc2VudCB0bwovLyB0aGUgZmlyc3QgcG9vbCAobGlrZWx5IGJlY2F1c2UgdmFsaWRhdG9yIGlzIHN1bnNldHRpbmcuICBBbnkgdG9rZW5zIGN1cnJlbnRseSAncmVzZXJ2ZWQnIGZvciBzdGFrZXJzIHRvIGNsYWltIHdpbGwKLy8gTk9UIGJlIHNlbnQgYXMgdGhleSBtdXN0IGJlIGhlbGQgYmFjayBmb3Igc3Rha2VycyB0byBsYXRlciBjbGFpbS4KLy8gWyBPTkxZIE9XTkVSIENBTiBDQUxMXQovLwovLyBAcGFyYW0ge1ZhbGlkYXRvcklkVHlwZX0gdmFsaWRhdG9ySWQgLSBUaGUgaWQgb2YgdGhlIHZhbGlkYXRvci4KLy8gQHBhcmFtIHtBZGRyZXNzfSByZWNlaXZlciAtIHRoZSBhY2NvdW50IHRvIHNlbmQgdGhlIHRva2VucyB0byAobXVzdCBhbHJlYWR5IGJlIG9wdGVkLWluIHRvIHRoZSByZXdhcmQgdG9rZW4pCi8vIEByZXR1cm5zIHt1aW50NjR9IHRoZSBhbW91bnQgb2YgcmV3YXJkIHRva2VuIHNlbnQKZW1wdHlUb2tlblJld2FyZHM6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiAzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTExCgkvLyB0aGlzLmNhbGxlck11c3RCZU93bmVyKHZhbGlkYXRvcklkKQoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWNhbGxzdWIgY2FsbGVyTXVzdEJlT3duZXIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTIKCS8vIHJld2FyZFRva2VuSWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5yZXdhcmRUb2tlbklkCglpbnRjIDM4IC8vIDE1MwoJaW50YyAyIC8vIDgKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTMKCS8vIHJld2FyZFRva2VuSGVsZEJhY2sgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLnN0YXRlLnJld2FyZFRva2VuSGVsZEJhY2sKCWludGMgMTMgLy8gMjYwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjkxNAoJLy8gYXNzZXJ0KHJld2FyZFRva2VuSWQgIT09IDAsICJ0aGlzIHZhbGlkYXRvciBkb2Vzbid0IGhhdmUgYSByZXdhcmQgdG9rZW4gZGVmaW5lZCIpCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoKCS8vIHRoaXMgdmFsaWRhdG9yIGRvZXNuJ3QgaGF2ZSBhIHJld2FyZCB0b2tlbiBkZWZpbmVkCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MTUKCS8vIHBvb2xPbmVBcHBJZCA9IEFwcElELmZyb21VaW50NjQodGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5wb29sc1swXS5wb29sQXBwSWQpCglpbnRjIDUgLy8gMjY4CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTE3CgkvLyB0b2tlblJld2FyZEJhbCA9CgkvLyAgICAgICAgICAgICBwb29sT25lQXBwSWQuYWRkcmVzcy5hc3NldEJhbGFuY2UoQXNzZXRJRC5mcm9tVWludDY0KHJld2FyZFRva2VuSWQpKSAtIHJld2FyZFRva2VuSGVsZEJhY2sKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglhcHBfcGFyYW1zX2dldCBBcHBBZGRyZXNzCglwb3AKCWZyYW1lX2RpZyAwIC8vIHJld2FyZFRva2VuSWQ6IHVpbnQ2NAoJYXNzZXRfaG9sZGluZ19nZXQgQXNzZXRCYWxhbmNlCglwb3AKCWZyYW1lX2RpZyAxIC8vIHJld2FyZFRva2VuSGVsZEJhY2s6IHVpbnQ2NAoJLQoJZnJhbWVfYnVyeSAzIC8vIHRva2VuUmV3YXJkQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjEKCS8vIHNlbmRNZXRob2RDYWxsPHR5cGVvZiBTdGFraW5nUG9vbC5wcm90b3R5cGUucGF5VG9rZW5SZXdhcmQ+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IHBvb2xPbmVBcHBJZCwKCS8vICAgICAgICAgICAgIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglieXRlYyAxMyAvLyAgbWV0aG9kICJwYXlUb2tlblJld2FyZChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6OTIyCgkvLyBhcHBsaWNhdGlvbklEOiBwb29sT25lQXBwSWQKCWZyYW1lX2RpZyAyIC8vIHBvb2xPbmVBcHBJZDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjMKCS8vIG1ldGhvZEFyZ3M6IFtyZWNlaXZlciwgcmV3YXJkVG9rZW5JZCwgdG9rZW5SZXdhcmRCYWxdCglmcmFtZV9kaWcgLTIgLy8gcmVjZWl2ZXI6IEFkZHJlc3MKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMCAvLyByZXdhcmRUb2tlbklkOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCglmcmFtZV9kaWcgMyAvLyB0b2tlblJld2FyZEJhbDogdWludDY0CglpdG9iCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjUKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xPbmVBcHBJZC5hZGRyZXNzLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQocmV3YXJkVG9rZW5JZCkpID09PSByZXdhcmRUb2tlbkhlbGRCYWNrLAoJLy8gICAgICAgICAgICAgJ2JhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50JywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIDIgLy8gcG9vbE9uZUFwcElkOiB1aW50NjQKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJZnJhbWVfZGlnIDAgLy8gcmV3YXJkVG9rZW5JZDogdWludDY0Cglhc3NldF9ob2xkaW5nX2dldCBBc3NldEJhbGFuY2UKCXBvcAoJZnJhbWVfZGlnIDEgLy8gcmV3YXJkVG9rZW5IZWxkQmFjazogdWludDY0Cgk9PQoKCS8vIGJhbGFuY2Ugb2YgcmVtYWluaW5nIHJld2FyZCB0b2tlbnMgc2hvdWxkIG1hdGNoIHRoZSBoZWxkIGJhY2sgYW1vdW50Cglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czo5MjkKCS8vIHJldHVybiB0b2tlblJld2FyZEJhbAoJZnJhbWVfZGlnIDMgLy8gdG9rZW5SZXdhcmRCYWw6IHVpbnQ2NAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDMKCXJldHN1YgoKLy8gY2FsbGVyTXVzdEJlT3duZXIodmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZSk6IHZvaWQKY2FsbGVyTXVzdEJlT3duZXI6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDIyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm93bmVyLAoJLy8gICAgICAgICAgICAgJ2NhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXInLAoJLy8gICAgICAgICApCgl0eG4gU2VuZGVyCglpbnRjIDIgLy8gOAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB2YWxpZGF0b3Igb3duZXIKCWFzc2VydAoJcmV0c3ViCgovLyBjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcih2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZApjYWxsZXJNdXN0QmVPd25lck9yTWFuYWdlcjoKCXByb3RvIDEgMAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwMjkKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHRoaXMudHhuLnNlbmRlciA9PT0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcub3duZXIgfHwKCS8vICAgICAgICAgICAgICAgICB0aGlzLnR4bi5zZW5kZXIgPT09IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm1hbmFnZXIsCgkvLyAgICAgICAgICAgICAnY2FuIG9ubHkgYmUgY2FsbGVkIGJ5IG93bmVyIG9yIG1hbmFnZXIgb2YgdmFsaWRhdG9yJywKCS8vICAgICAgICAgKQoJdHhuIFNlbmRlcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJPT0KCWR1cAoJYm56ICpza2lwX29yMwoJdHhuIFNlbmRlcgoJaW50YyAyMCAvLyA0MAoJaW50YyA2IC8vIDMyCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0Cgk9PQoJfHwKCipza2lwX29yMzoKCS8vIGNhbiBvbmx5IGJlIGNhbGxlZCBieSBvd25lciBvciBtYW5hZ2VyIG9mIHZhbGlkYXRvcgoJYXNzZXJ0CglyZXRzdWIKCi8vIHZlcmlmeVBvb2xLZXlDYWxsZXIocG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKLy8KLy8gdmVyaWZ5UG9vbEtleUNhbGxlciB2ZXJpZmllcyB0aGUgcGFzc2VkIGluIGtleSAoZnJvbSBhIHN0YWtpbmcgcG9vbCBjYWxsaW5nIHVzIHRvIHVwZGF0ZSBtZXRyaWNzKSBpcyB2YWxpZAovLyBhbmQgbWF0Y2hlcyB0aGUgaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiBvdXIgc3RhdGUuICAnRmFrZScgcG9vbHMgY291bGQgY2FsbCB1cyB0byB1cGRhdGUgb3VyIGRhdGEsIGJ1dCB0aGV5Ci8vIGNhbid0IGZha2UgdGhlIGlkcyBhbmQgbW9zdCBpbXBvcnRhbnRseSBhcHBsaWNhdGlvbiBpZCghKSBvZiB0aGUgY2FsbGVyIHRoYXQgaGFzIHRvIG1hdGNoLgp2ZXJpZnlQb29sS2V5Q2FsbGVyOgoJcHJvdG8gMSAwCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MgoJLy8gYXNzZXJ0KHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS5leGlzdHMsICJ0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZCIpCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cglib3hfbGVuCglzd2FwCglwb3AKCgkvLyB0aGUgc3BlY2lmaWVkIHZhbGlkYXRvciBpZCBpc24ndCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA0MwoJLy8gYXNzZXJ0KHBvb2xLZXkucG9vbElkIDw9IE1BWF9QT09MUywgJ3Bvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlJykKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAzIC8vIDI0Cgk8PQoKCS8vIHBvb2wgaWQgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDQ0CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBwb29sS2V5LnBvb2xJZCA+IDAgJiYgKHBvb2xLZXkucG9vbElkIGFzIHVpbnQxNikgPD0gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLm51bVBvb2xzLAoJLy8gICAgICAgICAgICAgJ3Bvb2wgaWQgb3V0c2lkZSBvZiByYW5nZSBvZiBwb29scyBjcmVhdGVkIGZvciB0aGlzIHZhbGlkYXRvcicsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDggOAoJYnRvaQoJaW50YyAwIC8vIDAKCT4KCWR1cAoJYnogKnNraXBfYW5kMwoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDkgLy8gMjQyCglpbnRjIDEwIC8vIDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCgk8PQoJJiYKCipza2lwX2FuZDM6CgkvLyBwb29sIGlkIG91dHNpZGUgb2YgcmFuZ2Ugb2YgcG9vbHMgY3JlYXRlZCBmb3IgdGhpcyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTAKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIHBvb2xLZXkucG9vbEFwcElkID09PSB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS5wb29sQXBwSWQsCgkvLyAgICAgICAgICAgICAiVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcyIsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCT09CgoJLy8gVGhlIHBhc3NlZCBpbiBhcHAgaWQgZG9lc24ndCBtYXRjaCB0aGUgcGFzc2VkIGluIGlkcwoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA1NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuYWRkcmVzcykKCXR4biBTZW5kZXIKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDE2IDgKCWJ0b2kKCWFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKCXBvcAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTcKCS8vIGFzc2VydChwb29sS2V5LmlkID09PSAoQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykgYXMgdWludDY0KSkKCWZyYW1lX2RpZyAtMSAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMTYgOAoJYnRvaQoJcHVzaGJ5dGVzIDB4NzY2MTZjNjk2NDYxNzQ2ZjcyNDk2NCAvLyAidmFsaWRhdG9ySWQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NChwb29sS2V5LnBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ3ZhbGlkYXRvcklkJykKCWFzc2VydAoJPT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNTgKCS8vIGFzc2VydChwb29sS2V5LnBvb2xJZCA9PT0gKEFwcElELmZyb21VaW50NjQocG9vbEtleS5wb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdwb29sSWQnKSBhcyB1aW50NjQpKQoJZnJhbWVfZGlnIC0xIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglmcmFtZV9kaWcgLTEgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAxNiA4CglidG9pCglwdXNoYnl0ZXMgMHg3MDZmNmY2YzQ5NjQgLy8gInBvb2xJZCIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xLZXkucG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgncG9vbElkJykKCWFzc2VydAoJPT0KCWFzc2VydAoJcmV0c3ViCgovLyByZXZlcmlmeU5GRE93bmVyc2hpcCh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlKTogdm9pZAovLwovLyBUaGlzIG1ldGhvZCB2ZXJpZmllcyB0aGUgb3duZXJzaGlwIG9mIE5GRCAoTmFtZWQgRnVuY3Rpb24gRGF0YSkgYnkgYSB2YWxpZGF0b3IuCi8vIElmIHRoZSBvd25lcnNoaXAgaXMgbm8gbG9uZ2VyIHZhbGlkLCBpdCByZW1vdmVzIHRoZSBORkQgZnJvbSB0aGUgdmFsaWRhdG9yJ3MgY29uZmlndXJhdGlvbi4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3Igd2hvc2UgZGF0YSBzaG91bGQgYmUgcmUtZXZhbHVhdGVkLgpyZXZlcmlmeU5GRE93bmVyc2hpcDoKCXByb3RvIDEgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDY4CgkvLyB2YWxpZGF0b3JDb25maWcgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZwoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0CglmcmFtZV9idXJ5IDAgLy8gc3RvcmFnZSBrZXkvL3ZhbGlkYXRvckNvbmZpZwoKCS8vICppZjMwX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA2OQoJLy8gdmFsaWRhdG9yQ29uZmlnLm5mZEZvckluZm8gIT09IDAKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglpbnRjIDAgLy8gMAoJIT0KCWJ6ICppZjMwX2VuZAoKCS8vICppZjMwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzIKCS8vIG5mZE93bmVyID0gQXBwSUQuZnJvbVVpbnQ2NCh2YWxpZGF0b3JDb25maWcubmZkRm9ySW5mbykuZ2xvYmFsU3RhdGUoJ2kub3duZXIuYScpIGFzIEFkZHJlc3MKCWludGMgMjEgLy8gNzIKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglieXRlYyAxMCAvLyAgImkub3duZXIuYSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHZhbGlkYXRvckNvbmZpZy5uZmRGb3JJbmZvKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfYnVyeSAxIC8vIG5mZE93bmVyOiBhZGRyZXNzCgoJLy8gKmlmMzFfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDc0CgkvLyB2YWxpZGF0b3JDb25maWcub3duZXIgIT09IG5mZE93bmVyICYmIHZhbGlkYXRvckNvbmZpZy5tYW5hZ2VyICE9PSBuZmRPd25lcgoJaW50YyAyIC8vIDgKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CglkdXAKCWJ6ICpza2lwX2FuZDQKCWludGMgMjAgLy8gNDAKCWludGMgNiAvLyAzMgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfZGlnIDEgLy8gbmZkT3duZXI6IGFkZHJlc3MKCSE9CgkmJgoKKnNraXBfYW5kNDoKCWJ6ICppZjMxX2VuZAoKCS8vICppZjMxX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwNzYKCS8vIHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLm5mZEZvckluZm8gPSAwCglpbnRjIDIxIC8vIDcyCglieXRlYyA3IC8vIDB4MDAwMDAwMDAwMDAwMDAwMAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzFfZW5kOgoKKmlmMzBfZW5kOgoJcmV0c3ViCgovLyB2YWxpZGF0ZUNvbmZpZyhjb25maWc6IFZhbGlkYXRvckNvbmZpZyk6IHZvaWQKdmFsaWRhdGVDb25maWc6Cglwcm90byAxIDAKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDgzCgkvLyBhc3NlcnQoY29uZmlnLm93bmVyICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODQKCS8vIGFzc2VydChjb25maWcubWFuYWdlciAhPT0gQWRkcmVzcy56ZXJvQWRkcmVzcykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA0MCAzMgoJZ2xvYmFsIFplcm9BZGRyZXNzCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA4NQoJLy8gYXNzZXJ0KHRoaXMudHhuLnNlbmRlciA9PT0gY29uZmlnLm93bmVyLCAnc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3InKQoJdHhuIFNlbmRlcgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDggMzIKCT09CgoJLy8gc2VuZGVyIG11c3QgYmUgb3duZXIgdG8gYWRkIG5ldyB2YWxpZGF0b3IKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwODcKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgIGNvbmZpZy5lbnRyeUdhdGluZ1R5cGUgPj0gR0FUSU5HX1RZUEVfTk9ORSAmJiBjb25maWcuZW50cnlHYXRpbmdUeXBlIDw9IEdBVElOR19UWVBFX0NPTlNUX01BWCwKCS8vICAgICAgICAgICAgICdnYXRpbmcgdHlwZSBub3QgdmFsaWQnLAoJLy8gICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgODAgMQoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDUKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCA4MCAxCglidG9pCglpbnRjIDE1IC8vIDQKCTw9CgkmJgoKKnNraXBfYW5kNToKCS8vIGdhdGluZyB0eXBlIG5vdCB2YWxpZAoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTA5MQoJLy8gYXNzZXJ0KAoJLy8gICAgICAgICAgICAgY29uZmlnLmVwb2NoUm91bmRMZW5ndGggPj0gTUlOX0VQT0NIX0xFTkdUSCAmJiBjb25maWcuZXBvY2hSb3VuZExlbmd0aCA8PSBNQVhfRVBPQ0hfTEVOR1RILAoJLy8gICAgICAgICAgICAgJ2Vwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kNgoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDE2OSA0CglidG9pCglpbnRjIDI0IC8vIDEwMDAwMDAKCTw9CgkmJgoKKnNraXBfYW5kNjoKCS8vIGVwb2NoIGxlbmd0aCBub3QgaW4gYWxsb3dhYmxlIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMDk1CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucGVyY2VudFRvVmFsaWRhdG9yID49IE1JTl9QQ1RfVE9fVkFMSURBVE9SICYmIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgPD0gTUFYX1BDVF9UT19WQUxJREFUT1IsCgkvLyAgICAgICAgICAgICAnY29tbWlzc2lvbiBwZXJjZW50YWdlIG5vdCB2YWxpZCcsCgkvLyAgICAgICAgICkKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCT49CglkdXAKCWJ6ICpza2lwX2FuZDcKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAyNCAvLyAxMDAwMDAwCgk8PQoJJiYKCipza2lwX2FuZDc6CgkvLyBjb21taXNzaW9uIHBlcmNlbnRhZ2Ugbm90IHZhbGlkCglhc3NlcnQKCgkvLyAqaWYzMl9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEwOTkKCS8vIGNvbmZpZy5wZXJjZW50VG9WYWxpZGF0b3IgIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAxNzMgNAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzMl9lbmQKCgkvLyAqaWYzMl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTAwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRvckNvbW1pc3Npb25BZGRyZXNzICE9PSBBZGRyZXNzLnplcm9BZGRyZXNzLAoJLy8gICAgICAgICAgICAgICAgICd2YWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyBtdXN0IGJlIHNldCBpZiBwZXJjZW50IHRvIHZhbGlkYXRvciBpcyBub3QgMCcsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMTc3IDMyCglnbG9iYWwgWmVyb0FkZHJlc3MKCSE9CgoJLy8gdmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3MgbXVzdCBiZSBzZXQgaWYgcGVyY2VudCB0byB2YWxpZGF0b3IgaXMgbm90IDAKCWFzc2VydAoKKmlmMzJfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEwNQoJLy8gYXNzZXJ0KGNvbmZpZy5taW5FbnRyeVN0YWtlID49IE1JTl9BTEdPX1NUQUtFX1BFUl9QT09MLCAnc3Rha2luZyBwb29sIG11c3QgaGF2ZSBtaW5pbXVtIGVudHJ5IG9mIDEgYWxnbycpCglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjA5IDgKCWJ0b2kKCWludGMgMjQgLy8gMTAwMDAwMAoJPj0KCgkvLyBzdGFraW5nIHBvb2wgbXVzdCBoYXZlIG1pbmltdW0gZW50cnkgb2YgMSBhbGdvCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTA3CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICBjb25maWcucG9vbHNQZXJOb2RlID4gMCAmJiBjb25maWcucG9vbHNQZXJOb2RlIDw9IE1BWF9QT09MU19QRVJfTk9ERSwKCS8vICAgICAgICAgICAgICdudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyJywKCS8vICAgICAgICAgKQoJZnJhbWVfZGlnIC0xIC8vIGNvbmZpZzogVmFsaWRhdG9yQ29uZmlnCglleHRyYWN0IDIyNSAxCglidG9pCglpbnRjIDAgLy8gMAoJPgoJZHVwCglieiAqc2tpcF9hbmQ4CglmcmFtZV9kaWcgLTEgLy8gY29uZmlnOiBWYWxpZGF0b3JDb25maWcKCWV4dHJhY3QgMjI1IDEKCWJ0b2kKCWludGMgOCAvLyAzCgk8PQoJJiYKCipza2lwX2FuZDg6CgkvLyBudW1iZXIgb2YgcG9vbHMgcGVyIG5vZGUgbXVzdCBiZSBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBtYXhpbXVtIGFsbG93ZWQgbnVtYmVyCglhc3NlcnQKCgkvLyAqaWYzM19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMTEKCS8vIGNvbmZpZy5zdW5zZXR0aW5nT24gIT09IDAKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJaW50YyAwIC8vIDAKCSE9CglieiAqaWYzM19lbmQKCgkvLyAqaWYzM19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTEyCgkvLyBhc3NlcnQoY29uZmlnLnN1bnNldHRpbmdPbiA+IGdsb2JhbHMubGF0ZXN0VGltZXN0YW1wLCAnc3Vuc2V0dGluZ09uIG11c3QgYmUgbGF0ZXIgdGhhbiBub3cgaWYgc2V0JykKCWZyYW1lX2RpZyAtMSAvLyBjb25maWc6IFZhbGlkYXRvckNvbmZpZwoJZXh0cmFjdCAyMjYgOAoJYnRvaQoJZ2xvYmFsIExhdGVzdFRpbWVzdGFtcAoJPgoKCS8vIHN1bnNldHRpbmdPbiBtdXN0IGJlIGxhdGVyIHRoYW4gbm93IGlmIHNldAoJYXNzZXJ0CgoqaWYzM19lbmQ6CglyZXRzdWIKCi8vIGNhbGxQb29sQWRkU3Rha2Uoc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5LCBtYnJBbXRQYWlkOiB1aW50NjQsIGlzTmV3U3Rha2VyVG9WYWxpZGF0b3I6IGJvb2xlYW4sIGlzTmV3U3Rha2VyVG9Qcm90b2NvbDogYm9vbGVhbik6IHZvaWQKLy8KLy8gQWRkcyBhIHN0YWtlcnMgYW1vdW50IG9mIGFsZ28gdG8gYSB2YWxpZGF0b3IgcG9vbCwgdHJhbnNmZXJyaW5nIHRoZSBhbGdvIHdlIHJlY2VpdmVkIGZyb20gdGhlbSAoYWxyZWFkeSB2ZXJpZmllZAovLyBieSBvdXIgY2FsbGVyKSB0byB0aGUgc3Rha2luZyBwb29sIGFjY291bnQsIGFuZCB0aGVuIHRlbGxpbmcgaXQgYWJvdXQgdGhlIGFtb3VudCBiZWluZyBhZGRlZCBmb3IgdGhlIHNwZWNpZmllZAovLyBzdGFrZXIuCi8vCi8vIEBwYXJhbSB7UGF5VHhufSBzdGFrZWRBbW91bnRQYXltZW50IC0gcGF5bWVudCBjb21pbmcgZnJvbSBzdGFrZXIgdG8gcGxhY2UgaW50byBhIHBvb2wKLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIGtleSBvZiB0aGUgdmFsaWRhdG9yIHBvb2wuCi8vIEBwYXJhbSB7dWludDY0fSBtYnJBbXRQYWlkIC0gQW1vdW50IHRoZSB1c2VyIGlzIGxlYXZpbmcgYmVoaW5kIGluIHRoZSB2YWxpZGF0b3IgdG8gcGF5IGZvciB0aGVpciBzdGFrZXIgTUJSIGNvc3QKLy8gQHBhcmFtIHtib29sZWFufSBpc05ld1N0YWtlclRvVmFsaWRhdG9yIC0gaWYgdGhpcyBpcyBhIG5ldywgZmlyc3QtdGltZSBzdGFrZXIgdG8gdGhlIHZhbGlkYXRvcgovLyBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3U3Rha2VyVG9Qcm90b2NvbCAtIGlmIHRoaXMgaXMgYSBuZXcsIGZpcnN0LXRpbWUgc3Rha2VyIHRvIHRoZSBwcm90b2NvbApjYWxsUG9vbEFkZFN0YWtlOgoJcHJvdG8gNSAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzQKCS8vIHBvb2xBcHBJZCA9IHRoaXMudmFsaWRhdG9yTGlzdChwb29sS2V5LmlkKS52YWx1ZS5wb29sc1twb29sS2V5LnBvb2xJZCAtIDFdLnBvb2xBcHBJZAoJaW50YyA1IC8vICBoZWFkT2Zmc2V0CglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCA4IDgKCWJ0b2kKCWludGMgMSAvLyAxCgktCglpbnRjIDQgLy8gMTgKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJKwoJaW50YyAwIC8vIDAKCSsKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAwIC8vIHBvb2xBcHBJZDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTEzOAoJLy8gc2VuZE1ldGhvZENhbGw8dHlwZW9mIFN0YWtpbmdQb29sLnByb3RvdHlwZS5hZGRTdGFrZSwgdWludDY0Pih7CgkvLyAgICAgICAgICAgICBhcHBsaWNhdGlvbklEOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCksCgkvLyAgICAgICAgICAgICBtZXRob2RBcmdzOiBbCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIC8vIFRISVMgSVMgQSBTRU5EIG9mIHRoZSBhbW91bnQgcmVjZWl2ZWQgcmlnaHQgYmFjayBvdXQgYW5kIGludG8gdGhlIHN0YWtpbmcgcG9vbCBjb250cmFjdCBhY2NvdW50LgoJLy8gICAgICAgICAgICAgICAgIHsgYW1vdW50OiBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQsIHJlY2VpdmVyOiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuYWRkcmVzcyB9LAoJLy8gICAgICAgICAgICAgICAgIC8vID09PT09PT0KCS8vICAgICAgICAgICAgICAgICBzdGFrZWRBbW91bnRQYXltZW50LnNlbmRlciwKCS8vICAgICAgICAgICAgIF0sCgkvLyAgICAgICAgIH0pCglpdHhuX2JlZ2luCglpbnRjIDEgLy8gIHBheQoJaXR4bl9maWVsZCBUeXBlRW51bQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDMKCS8vIGFtb3VudDogc3Rha2VkQW1vdW50UGF5bWVudC5hbW91bnQgLSBtYnJBbXRQYWlkCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCWl0eG5fZmllbGQgQW1vdW50CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0MwoJLy8gcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzCglmcmFtZV9kaWcgMCAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwoJcG9wCglpdHhuX2ZpZWxkIFJlY2VpdmVyCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCglpdHhuX25leHQKCWludGMgNyAvLyAgYXBwbAoJaXR4bl9maWVsZCBUeXBlRW51bQoJcHVzaGJ5dGVzIDB4ZjljNzBjYmQgLy8gbWV0aG9kICJhZGRTdGFrZShwYXksYWRkcmVzcyl1aW50NjQiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExMzkKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKQoJZnJhbWVfZGlnIDAgLy8gcG9vbEFwcElkOiB1aW50NjQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNDAKCS8vIG1ldGhvZEFyZ3M6IFsKCS8vICAgICAgICAgICAgICAgICAvLyA9PT09PT09CgkvLyAgICAgICAgICAgICAgICAgLy8gVEhJUyBJUyBBIFNFTkQgb2YgdGhlIGFtb3VudCByZWNlaXZlZCByaWdodCBiYWNrIG91dCBhbmQgaW50byB0aGUgc3Rha2luZyBwb29sIGNvbnRyYWN0IGFjY291bnQuCgkvLyAgICAgICAgICAgICAgICAgeyBhbW91bnQ6IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZCwgcmVjZWl2ZXI6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5hZGRyZXNzIH0sCgkvLyAgICAgICAgICAgICAgICAgLy8gPT09PT09PQoJLy8gICAgICAgICAgICAgICAgIHN0YWtlZEFtb3VudFBheW1lbnQuc2VuZGVyLAoJLy8gICAgICAgICAgICAgXQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgU2VuZGVyCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIEZlZSBmaWVsZCBub3Qgc2V0LCBkZWZhdWx0aW5nIHRvIDAKCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoKCS8vIFN1Ym1pdCBpbm5lciB0cmFuc2FjdGlvbgoJaXR4bl9zdWJtaXQKCWl0eG4gTnVtTG9ncwoJaW50YyAxIC8vIDEKCS0KCWl0eG5hcyBMb2dzCglleHRyYWN0IDQgMAoJYnRvaQoKCS8vICppZjM0X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE0OAoJLy8gZ2xvYmFscy5vcGNvZGVCdWRnZXQgPCA1MDAKCWdsb2JhbCBPcGNvZGVCdWRnZXQKCXB1c2hpbnQgNTAwCgk8CglieiAqaWYzNF9lbmQKCgkvLyAqaWYzNF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTQ5CgkvLyBpbmNyZWFzZU9wY29kZUJ1ZGdldCgpCglpdHhuX2JlZ2luCglpbnRjIDcgLy8gIGFwcGwKCWl0eG5fZmllbGQgVHlwZUVudW0KCWludGMgMCAvLyAwCglpdHhuX2ZpZWxkIEZlZQoJYnl0ZWMgOCAvLyAgI3ByYWdtYSB2ZXJzaW9uIDEwOyBpbnQgMQoJZHVwCglpdHhuX2ZpZWxkIEFwcHJvdmFsUHJvZ3JhbQoJaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQoJaW50YyAyNiAvLyAgRGVsZXRlQXBwbGljYXRpb24KCWl0eG5fZmllbGQgT25Db21wbGV0aW9uCglpdHhuX3N1Ym1pdAoKKmlmMzRfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1MwoJLy8gcG9vbE51bVN0YWtlcnMgPSBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KHBvb2xBcHBJZCkuZ2xvYmFsU3RhdGUoJ251bVN0YWtlcnMnKQoJYXNzZXJ0CglmcmFtZV9idXJ5IDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNTQKCS8vIHBvb2xBbGdvU3Rha2VkID0gQXBwSUQuZnJvbVVpbnQ2NChwb29sQXBwSWQpLmdsb2JhbFN0YXRlKCdzdGFrZWQnKSBhcyB1aW50NjQKCWZyYW1lX2RpZyAwIC8vIHBvb2xBcHBJZDogdWludDY0CglieXRlYyA0IC8vICAic3Rha2VkIgoJYXBwX2dsb2JhbF9nZXRfZXgKCgkvLyBnbG9iYWwgc3RhdGUgdmFsdWUgZG9lcyBub3QgZXhpc3Q6IEFwcElELmZyb21VaW50NjQocG9vbEFwcElkKS5nbG9iYWxTdGF0ZSgnc3Rha2VkJykKCWFzc2VydAoJZnJhbWVfYnVyeSAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QocG9vbEtleS5pZCkudmFsdWUucG9vbHNbcG9vbEtleS5wb29sSWQgLSAxXS50b3RhbFN0YWtlcnMgPSBwb29sTnVtU3Rha2VycyBhcyB1aW50MTYKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyAgaGVhZE9mZnNldAoJKwoJZnJhbWVfZGlnIDEgLy8gcG9vbE51bVN0YWtlcnM6IHVpbnQ2NAoJaXRvYgoJZXh0cmFjdCA2IDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE1NgoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnBvb2xzW3Bvb2xLZXkucG9vbElkIC0gMV0udG90YWxBbGdvU3Rha2VkID0gcG9vbEFsZ29TdGFrZWQKCWludGMgNSAvLyAgaGVhZE9mZnNldAoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgOCA4CglidG9pCglpbnRjIDEgLy8gMQoJLQoJaW50YyA0IC8vIDE4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMTEgLy8gIGhlYWRPZmZzZXQKCSsKCWZyYW1lX2RpZyAyIC8vIHBvb2xBbGdvU3Rha2VkOiB1aW50NjQKCWl0b2IKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCWV4dHJhY3QgMCA4CglidG9pCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgoJLy8gKmlmMzVfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTU5CgkvLyBpc05ld1N0YWtlclRvVmFsaWRhdG9yCglmcmFtZV9kaWcgLTQgLy8gaXNOZXdTdGFrZXJUb1ZhbGlkYXRvcjogYm9vbGVhbgoJYnogKmlmMzVfZW5kCgoJLy8gKmlmMzVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2MAoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsU3Rha2VycyArPSAxCglpbnRjIDIzIC8vIDI0NAoJZHVwCglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJZXh0cmFjdCAwIDgKCWJ0b2kKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWludGMgMSAvLyAxCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKKmlmMzVfZW5kOgoJLy8gKmlmMzZfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTYyCgkvLyBpc05ld1N0YWtlclRvUHJvdG9jb2wKCWZyYW1lX2RpZyAtNSAvLyBpc05ld1N0YWtlclRvUHJvdG9jb2w6IGJvb2xlYW4KCWJ6ICppZjM2X2VuZAoKCS8vICppZjM2X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjMKCS8vIHRoaXMubnVtU3Rha2Vycy52YWx1ZSArPSAxCglieXRlYyA2IC8vICAibnVtU3Rha2VycyIKCWFwcF9nbG9iYWxfZ2V0CglpbnRjIDEgLy8gMQoJKwoJYnl0ZWMgNiAvLyAgIm51bVN0YWtlcnMiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoKKmlmMzZfZW5kOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE2NQoJLy8gdGhpcy52YWxpZGF0b3JMaXN0KHBvb2xLZXkuaWQpLnZhbHVlLnN0YXRlLnRvdGFsQWxnb1N0YWtlZCArPSBzdGFrZWRBbW91bnRQYXltZW50LmFtb3VudCAtIG1ickFtdFBhaWQKCWludGMgMTIgLy8gMjUyCglkdXAKCWludGMgMiAvLyA4CglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlZEFtb3VudFBheW1lbnQ6IFBheVR4bgoJZ3R4bnMgQW1vdW50CglmcmFtZV9kaWcgLTMgLy8gbWJyQW10UGFpZDogdWludDY0CgktCgkrCglpdG9iCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNjYKCS8vIHRoaXMudG90YWxBbGdvU3Rha2VkLnZhbHVlICs9IHN0YWtlZEFtb3VudFBheW1lbnQuYW1vdW50IC0gbWJyQW10UGFpZAoJYnl0ZWMgNCAvLyAgInN0YWtlZCIKCWFwcF9nbG9iYWxfZ2V0CglmcmFtZV9kaWcgLTEgLy8gc3Rha2VkQW1vdW50UGF5bWVudDogUGF5VHhuCglndHhucyBBbW91bnQKCWZyYW1lX2RpZyAtMyAvLyBtYnJBbXRQYWlkOiB1aW50NjQKCS0KCSsKCWJ5dGVjIDQgLy8gICJzdGFrZWQiCglzd2FwCglhcHBfZ2xvYmFsX3B1dAoJcmV0c3ViCgovLyB1cGRhdGVTdGFrZXJQb29sU2V0KHN0YWtlcjogQWRkcmVzcywgcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleSk6IHZvaWQKdXBkYXRlU3Rha2VyUG9vbFNldDoKCXByb3RvIDIgMAoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CglkdXBuIDIKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcwCgkvLyBhc3NlcnQodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikuZXhpc3RzKQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJYm94X2xlbgoJc3dhcAoJcG9wCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTcyCgkvLyBwb29sU2V0ID0gY2xvbmUodGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUpCglieXRlYyAzIC8vICAic3BzIgoJZnJhbWVfZGlnIC0xIC8vIHN0YWtlcjogQWRkcmVzcwoJY29uY2F0Cglib3hfZ2V0CgoJLy8gYm94IHZhbHVlIGRvZXMgbm90IGV4aXN0OiB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZQoJYXNzZXJ0CglmcmFtZV9idXJ5IDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzMKCS8vIGZpcnN0RW1wdHkgPSAwCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoOyBpICs9IDEpCglpbnRjIDAgLy8gMAoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoKKmZvcl83OgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NAoJLy8gaSA8IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlLmxlbmd0aAoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDcgLy8gNgoJPAoJYnogKmZvcl83X2VuZAoKCS8vICppZjM3X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE3NQoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDAgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWYzN19lbmQKCgkvLyAqaWYzN19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc3CgkvLyByZXR1cm4KCXJldHN1YgoKKmlmMzdfZW5kOgoJLy8gKmlmMzhfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTc5CgkvLyBmaXJzdEVtcHR5ID09PSAwICYmIHBvb2xTZXRbaV0uaWQgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglkdXAKCWJ6ICpza2lwX2FuZDkKCWZyYW1lX2RpZyAwIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWludGMgMCAvLyAwCgk9PQoJJiYKCipza2lwX2FuZDk6CglieiAqaWYzOF9lbmQKCgkvLyAqaWYzOF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMTgwCgkvLyBmaXJzdEVtcHR5ID0gaSArIDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMSAvLyBmaXJzdEVtcHR5OiB1aW50NjQKCippZjM4X2VuZDoKCipmb3JfN19jb250aW51ZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExNzQKCS8vIGkgKz0gMQoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAyIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzcKCipmb3JfN19lbmQ6CgkvLyAqaWYzOV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODMKCS8vIGZpcnN0RW1wdHkgPT09IDAKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglieiAqaWYzOV9lbmQKCgkvLyAqaWYzOV9jb25zZXF1ZW50CgkvLyBObyBlbXB0eSBzbG90IGF2YWlsYWJsZSBpbiB0aGUgc3Rha2VyIHBvb2wgc2V0CgllcnIKCippZjM5X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjExODYKCS8vIHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlW2ZpcnN0RW1wdHkgLSAxXSA9IHBvb2xLZXkKCWZyYW1lX2RpZyAxIC8vIGZpcnN0RW1wdHk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCS0KCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglmcmFtZV9kaWcgLTIgLy8gcG9vbEtleTogVmFsaWRhdG9yUG9vbEtleQoJYnl0ZWMgMyAvLyAgInNwcyIKCWZyYW1lX2RpZyAtMSAvLyBzdGFrZXI6IEFkZHJlc3MKCWNvbmNhdAoJY292ZXIgMgoJYm94X3JlcGxhY2UKCXJldHN1YgoKLy8gcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQoc3Rha2VyOiBBZGRyZXNzLCBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5KTogW2Jvb2xlYW4sIGJvb2xlYW5dCi8vCi8vIFJlbW92ZXMgYSBwb29sIGtleSBmcm9tIHRoZSBzdGFrZXIncyBhY3RpdmUgcG9vbCBzZXQgLSBmYWlscyBpZiBub3QgZm91bmQgKCEpCi8vCi8vIEBwYXJhbSB7QWRkcmVzc30gc3Rha2VyIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIHN0YWtlci4KLy8gQHBhcmFtIHtWYWxpZGF0b3JQb29sS2V5fSBwb29sS2V5IC0gVGhlIHBvb2wga2V5IHRoZXkgc2hvdWxkIGJlIHN0b3JlZCBpbgovLwovLyBAcmV0dXJuIFtib29sZWFuLCBib29sZWFuXSBbaXMgdGhlIHN0YWtlciBnb25lIGZyb20gQUxMIHBvb2xzIG9mIHRoZSBnaXZlbiBWQUxJREFUT1IsIGFuZCBpcyBzdGFrZXIgZ29uZSBmcm9tIEFMTCBwb29sc10KcmVtb3ZlRnJvbVN0YWtlclBvb2xTZXQ6Cglwcm90byAyIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTE5OQoJLy8gaW5TYW1lVmFsaWRhdG9yUG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDAKCS8vIGluQW55UG9vbENvdW50ID0gMAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwMQoJLy8gZm91bmQgPSBmYWxzZQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMiAvLyBmb3VuZDogYm9vbAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDMKCS8vIHBvb2xTZXQgPSBjbG9uZSh0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZSkKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWJveF9nZXQKCgkvLyBib3ggdmFsdWUgZG9lcyBub3QgZXhpc3Q6IHRoaXMuc3Rha2VyUG9vbFNldChzdGFrZXIpLnZhbHVlCglhc3NlcnQKCWZyYW1lX2J1cnkgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnN0YWtlclBvb2xTZXQoc3Rha2VyKS52YWx1ZS5sZW5ndGg7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgoqZm9yXzg6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA0CgkvLyBpIDwgdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWUubGVuZ3RoCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgNyAvLyA2Cgk8CglieiAqZm9yXzhfZW5kCgoJLy8gKmlmNDBfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA1CgkvLyBwb29sU2V0W2ldLmlkID09PSAwCglmcmFtZV9kaWcgMyAvLyBwb29sU2V0OiAodWludDY0LHVpbnQ2NCx1aW50NjQpWzZdCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglpbnRjIDAgLy8gMAoJKwoJaW50YyAyIC8vIDgKCWV4dHJhY3QzCglidG9pCglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQwX2VuZAoKCS8vICppZjQwX2NvbnNlcXVlbnQKCWIgKmZvcl84X2NvbnRpbnVlCgoqaWY0MF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjA4CgkvLyBpbkFueVBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDEgLy8gMQoJKwoJZnJhbWVfYnVyeSAxIC8vIGluQW55UG9vbENvdW50OiB1aW50NjQKCgkvLyAqaWY0MV9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMDkKCS8vIHBvb2xTZXRbaV0uaWQgPT09IHBvb2xLZXkuaWQKCWZyYW1lX2RpZyAzIC8vIHBvb2xTZXQ6ICh1aW50NjQsdWludDY0LHVpbnQ2NClbNl0KCWZyYW1lX2RpZyA0IC8vIGk6IHVpbnQ2NAoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCWludGMgMCAvLyAwCgkrCglpbnRjIDIgLy8gOAoJZXh0cmFjdDMKCWJ0b2kKCWZyYW1lX2RpZyAtMiAvLyBwb29sS2V5OiBWYWxpZGF0b3JQb29sS2V5CglleHRyYWN0IDAgOAoJYnRvaQoJPT0KCWJ6ICppZjQxX2VuZAoKCS8vICppZjQxX2NvbnNlcXVlbnQKCS8vICppZjQyX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMAoJLy8gcG9vbFNldFtpXSA9PT0gcG9vbEtleQoJZnJhbWVfZGlnIDMgLy8gcG9vbFNldDogKHVpbnQ2NCx1aW50NjQsdWludDY0KVs2XQoJZnJhbWVfZGlnIDQgLy8gaTogdWludDY0CglpbnRjIDMgLy8gMjQKCSogLy8gYWNjICogdHlwZUxlbmd0aAoJaW50YyAzIC8vIDI0CglleHRyYWN0MwoJZnJhbWVfZGlnIC0yIC8vIHBvb2xLZXk6IFZhbGlkYXRvclBvb2xLZXkKCT09CglieiAqaWY0Ml9lbHNlCgoJLy8gKmlmNDJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMQoJLy8gZm91bmQgPSB0cnVlCglpbnRjIDEgLy8gMQoJZnJhbWVfYnVyeSAyIC8vIGZvdW5kOiBib29sCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxMwoJLy8gdGhpcy5zdGFrZXJQb29sU2V0KHN0YWtlcikudmFsdWVbaV0gPSB7IGlkOiAwLCBwb29sSWQ6IDAsIHBvb2xBcHBJZDogMCB9CglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMyAvLyAyNAoJKiAvLyBhY2MgKiB0eXBlTGVuZ3RoCglwdXNoYnl0ZXMgMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKCWJ5dGVjIDMgLy8gICJzcHMiCglmcmFtZV9kaWcgLTEgLy8gc3Rha2VyOiBBZGRyZXNzCgljb25jYXQKCWNvdmVyIDIKCWJveF9yZXBsYWNlCgliICppZjQyX2VuZAoKKmlmNDJfZWxzZToKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMTUKCS8vIGluU2FtZVZhbGlkYXRvclBvb2xDb3VudCArPSAxCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoKKmlmNDJfZW5kOgoKKmlmNDFfZW5kOgoKKmZvcl84X2NvbnRpbnVlOgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIwNAoJLy8gaSArPSAxCglmcmFtZV9kaWcgNCAvLyBpOiB1aW50NjQKCWludGMgMSAvLyAxCgkrCglmcmFtZV9idXJ5IDQgLy8gaTogdWludDY0CgliICpmb3JfOAoKKmZvcl84X2VuZDoKCS8vICppZjQzX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIxOQoJLy8gIWZvdW5kCglmcmFtZV9kaWcgMiAvLyBmb3VuZDogYm9vbAoJIQoJYnogKmlmNDNfZW5kCgoJLy8gKmlmNDNfY29uc2VxdWVudAoJLy8gTm8gbWF0Y2hpbmcgc2xvdCBmb3VuZCB3aGVuIHRvbGQgdG8gcmVtb3ZlIGEgcG9vbCBmcm9tIHRoZSBzdGFrZXJzIHNldAoJZXJyCgoqaWY0M19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjIzCgkvLyByZXR1cm4gW2luU2FtZVZhbGlkYXRvclBvb2xDb3VudCA9PT0gMCwgaW5BbnlQb29sQ291bnQgPT09IDBdCglieXRlYyA1IC8vIDB4MDAKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgMCAvLyBpblNhbWVWYWxpZGF0b3JQb29sQ291bnQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCT09CglzZXRiaXQKCWludGMgMSAvLyAxCglmcmFtZV9kaWcgMSAvLyBpbkFueVBvb2xDb3VudDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCXNldGJpdAoKCS8vIHNldCB0aGUgc3Vicm91dGluZSByZXR1cm4gdmFsdWUKCWZyYW1lX2J1cnkgMAoKCS8vIHBvcCBhbGwgbG9jYWwgdmFyaWFibGVzIGZyb20gdGhlIHN0YWNrCglwb3BuIDQKCXJldHN1YgoKLy8gYWRkUG9vbFRvTm9kZSh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCBwb29sQXBwSWQ6IHVpbnQ2NCwgbm9kZU51bTogdWludDY0KTogdm9pZAphZGRQb29sVG9Ob2RlOgoJcHJvdG8gMyAwCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMjcKCS8vIG5vZGVQb29sQXNzaWdubWVudHMgPSBjbG9uZSh0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMpCglpbnRjIDE3IC8vICBoZWFkT2Zmc2V0CglpbnRjIDIyIC8vIDE5MgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJZnJhbWVfYnVyeSAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjI4CgkvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yID0gdGhpcy52YWxpZGF0b3JMaXN0KHZhbGlkYXRvcklkKS52YWx1ZS5jb25maWcucG9vbHNQZXJOb2RlIGFzIHVpbnQ2NAoJcHVzaGludCAyMjUKCWludGMgMSAvLyAxCglieXRlYyAwIC8vICAidiIKCWZyYW1lX2RpZyAtMSAvLyB2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlCglpdG9iCgljb25jYXQKCWNvdmVyIDIKCWJveF9leHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDEgLy8gbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcjogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTIzMAoJLy8gYXNzZXJ0KG5vZGVOdW0gPj0gMSAmJiBub2RlTnVtIDw9IE1BWF9OT0RFUywgJ25vZGUgbnVtYmVyIG5vdCBpbiB2YWxpZCByYW5nZScpCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJPj0KCWR1cAoJYnogKnNraXBfYW5kMTAKCWZyYW1lX2RpZyAtMyAvLyBub2RlTnVtOiB1aW50NjQKCWludGMgMiAvLyA4Cgk8PQoJJiYKCipza2lwX2FuZDEwOgoJLy8gbm9kZSBudW1iZXIgbm90IGluIHZhbGlkIHJhbmdlCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IG1heFBvb2xzUGVyTm9kZUZvclRoaXNWYWxpZGF0b3I7IGkgKz0gMSkKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDIgLy8gaTogdWludDY0CgoqZm9yXzk6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpIDwgbWF4UG9vbHNQZXJOb2RlRm9yVGhpc1ZhbGlkYXRvcgoJZnJhbWVfZGlnIDIgLy8gaTogdWludDY0CglmcmFtZV9kaWcgMSAvLyBtYXhQb29sc1Blck5vZGVGb3JUaGlzVmFsaWRhdG9yOiB1aW50NjQKCTwKCWJ6ICpmb3JfOV9lbmQKCgkvLyAqaWY0NF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzMKCS8vIG5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPT09IDAKCWZyYW1lX2RpZyAwIC8vIG5vZGVQb29sQXNzaWdubWVudHM6ICgodWludDY0WzNdKVs4XSkKCWludGMgMCAvLyAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMiAvLyA4CglleHRyYWN0MwoJYnRvaQoJaW50YyAwIC8vIDAKCT09CglieiAqaWY0NF9lbmQKCgkvLyAqaWY0NF9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjM1CgkvLyB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLm5vZGVQb29sQXNzaWdubWVudHMubm9kZXNbbm9kZU51bSAtIDFdLnBvb2xBcHBJZHNbaV0gPSBwb29sQXBwSWQKCWludGMgMTcgLy8gOTAwCglmcmFtZV9kaWcgLTMgLy8gbm9kZU51bTogdWludDY0CglpbnRjIDEgLy8gMQoJLQoJaW50YyAzIC8vIDI0CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWludGMgMCAvLyAwCgkrCglmcmFtZV9kaWcgMiAvLyBpOiB1aW50NjQKCWludGMgMiAvLyA4CgkqIC8vIGFjYyAqIHR5cGVMZW5ndGgKCSsKCWZyYW1lX2RpZyAtMiAvLyBwb29sQXBwSWQ6IHVpbnQ2NAoJaXRvYgoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfcmVwbGFjZQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyMzYKCS8vIHJldHVybgoJcmV0c3ViCgoqaWY0NF9lbmQ6CgoqZm9yXzlfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjMyCgkvLyBpICs9IDEKCWZyYW1lX2RpZyAyIC8vIGk6IHVpbnQ2NAoJaW50YyAxIC8vIDEKCSsKCWZyYW1lX2J1cnkgMiAvLyBpOiB1aW50NjQKCWIgKmZvcl85CgoqZm9yXzlfZW5kOgoJLy8gbm8gYXZhaWxhYmxlIHNwYWNlIGluIHNwZWNpZmllZCBub2RlIGZvciB0aGlzIHBvb2wKCWVycgoJcmV0c3ViCgovLyBkb2VzU3Rha2VyTWVldEdhdGluZyh2YWxpZGF0b3JJZDogVmFsaWRhdG9ySWRUeXBlLCB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQpOiB2b2lkCi8vCi8vIENoZWNrcyBpZiBhIHN0YWtlciBtZWV0cyB0aGUgZ2F0aW5nIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgYnkgdGhlIHZhbGlkYXRvci4KLy8KLy8gQHBhcmFtIHtWYWxpZGF0b3JJZFR5cGV9IHZhbGlkYXRvcklkIC0gVGhlIGlkIG9mIHRoZSB2YWxpZGF0b3IuCi8vIEBwYXJhbSB7dWludDY0fSB2YWx1ZVRvVmVyaWZ5IC0gVGhlIHZhbHVlIHRvIHZlcmlmeSBhZ2FpbnN0IHRoZSBnYXRpbmcgcmVxdWlyZW1lbnRzLgovLyBAcmV0dXJucyB7dm9pZH0gb3IgYXNzZXJ0cyBpZiByZXF1aXJlbWVudHMgbm90IG1ldC4KZG9lc1N0YWtlck1lZXRHYXRpbmc6Cglwcm90byAyIDAKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoJZHVwbiA4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MAoJLy8gdHlwZSA9IHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnLmVudHJ5R2F0aW5nVHlwZQoJaW50YyAzNiAvLyA4MAoJaW50YyAxIC8vIDEKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWJ0b2kKCWZyYW1lX2J1cnkgMCAvLyB0eXBlOiB1aW50OAoKCS8vICppZjQ1X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfTk9ORQoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMCAvLyAwCgk9PQoJYnogKmlmNDVfZW5kCgoJLy8gKmlmNDVfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1MgoJLy8gcmV0dXJuCglyZXRzdWIKCippZjQ1X2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTQKCS8vIHN0YWtlciA9IHRoaXMudHhuLnNlbmRlcgoJdHhuIFNlbmRlcgoJZnJhbWVfYnVyeSAxIC8vIHN0YWtlcjogYWRkcmVzcwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNTUKCS8vIGNvbmZpZyA9IGNsb25lKHRoaXMudmFsaWRhdG9yTGlzdCh2YWxpZGF0b3JJZCkudmFsdWUuY29uZmlnKQoJaW50YyAwIC8vIDAKCWludGMgOSAvLyAyNDIKCWJ5dGVjIDAgLy8gICJ2IgoJZnJhbWVfZGlnIC0xIC8vIHZhbGlkYXRvcklkOiBWYWxpZGF0b3JJZFR5cGUKCWl0b2IKCWNvbmNhdAoJY292ZXIgMgoJYm94X2V4dHJhY3QKCWZyYW1lX2J1cnkgMiAvLyBjb25maWc6ICh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KQoKCS8vICppZjQ2X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI1OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkgfHwKCS8vICAgICAgICAgICAgIHR5cGUgPT09IEdBVElOR19UWVBFX0FTU0VUX0lEIHx8CgkvLyAgICAgICAgICAgICB0eXBlID09PSBHQVRJTkdfVFlQRV9DUkVBVEVEX0JZX05GRF9BRERSRVNTRVMKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWR1cAoJYm56ICpza2lwX29yNAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCXx8Cgoqc2tpcF9vcjQ6CglkdXAKCWJueiAqc2tpcF9vcjUKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDggLy8gMwoJPT0KCXx8Cgoqc2tpcF9vcjU6CglieiAqaWY0Nl9lbmQKCgkvLyAqaWY0Nl9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjYzCgkvLyBhc3NlcnQodmFsdWVUb1ZlcmlmeSAhPT0gMCkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWludGMgMCAvLyAwCgkhPQoJYXNzZXJ0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI2NAoJLy8gYmFsUmVxdWlyZWQgPSB0aGlzLnZhbGlkYXRvckxpc3QodmFsaWRhdG9ySWQpLnZhbHVlLmNvbmZpZy5nYXRpbmdBc3NldE1pbkJhbGFuY2UKCWludGMgMzcgLy8gMTQ1CglpbnRjIDIgLy8gOAoJYnl0ZWMgMCAvLyAgInYiCglmcmFtZV9kaWcgLTEgLy8gdmFsaWRhdG9ySWQ6IFZhbGlkYXRvcklkVHlwZQoJaXRvYgoJY29uY2F0Cgljb3ZlciAyCglib3hfZXh0cmFjdAoJYnRvaQoJZnJhbWVfYnVyeSAzIC8vIGJhbFJlcXVpcmVkOiB1aW50NjQKCgkvLyAqaWY0N19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjUKCS8vIGJhbFJlcXVpcmVkID09PSAwCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CglpbnRjIDAgLy8gMAoJPT0KCWJ6ICppZjQ3X2VuZAoKCS8vICppZjQ3X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNjYKCS8vIGJhbFJlcXVpcmVkID0gMQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0CgoqaWY0N19lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjY4CgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgc3Rha2VyLmFzc2V0QmFsYW5jZShBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkpID49IGJhbFJlcXVpcmVkLAoJLy8gICAgICAgICAgICAgICAgICdtdXN0IGhhdmUgcmVxdWlyZWQgbWluaW11bSBiYWxhbmNlIG9mIHZhbGlkYXRvciBkZWZpbmVkIHRva2VuIHRvIGFkZCBzdGFrZScsCgkvLyAgICAgICAgICAgICApCglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWFzc2V0X2hvbGRpbmdfZ2V0IEFzc2V0QmFsYW5jZQoJcG9wCglmcmFtZV9kaWcgMyAvLyBiYWxSZXF1aXJlZDogdWludDY0Cgk+PQoKCS8vIG11c3QgaGF2ZSByZXF1aXJlZCBtaW5pbXVtIGJhbGFuY2Ugb2YgdmFsaWRhdG9yIGRlZmluZWQgdG9rZW4gdG8gYWRkIHN0YWtlCglhc3NlcnQKCippZjQ2X2VuZDoKCS8vICppZjQ4X2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI3MwoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQVNTRVRTX0NSRUFURURfQlkKCWZyYW1lX2RpZyAwIC8vIHR5cGU6IHVpbnQ4CglpbnRjIDEgLy8gMQoJPT0KCWJ6ICppZjQ4X2VuZAoKCS8vICppZjQ4X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyNzQKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciA9PT0gY29uZmlnLmVudHJ5R2F0aW5nQWRkcmVzcywKCS8vICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgODEgMzIKCT09CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgdGhlIHZhbGlkYXRvciBkZWZpbmVkIGFzIGEgcmVxdWlyZW1lbnQgdG8gc3Rha2UKCWFzc2VydAoKKmlmNDhfZW5kOgoJLy8gKmlmNDlfY29uZGl0aW9uCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjc5CgkvLyB0eXBlID09PSBHQVRJTkdfVFlQRV9BU1NFVF9JRAoJZnJhbWVfZGlnIDAgLy8gdHlwZTogdWludDgKCWludGMgMTAgLy8gMgoJPT0KCWJ6ICppZjQ5X2VuZAoKCS8vICppZjQ5X2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODAKCS8vIGZvdW5kID0gZmFsc2UKCWludGMgMCAvLyAwCglmcmFtZV9idXJ5IDQgLy8gZm91bmQ6IGJvb2wKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjgxCgkvLyBjb25maWcuZW50cnlHYXRpbmdBc3NldHMKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyAzMgoJZHVwCglmcmFtZV9idXJ5IDUgLy8gY29weSBvZiB0aGUgYXJyYXkgd2UgYXJlIGl0ZXJhdGluZyBvdmVyCglleHRyYWN0IDAgOAoJYnRvaQoJZnJhbWVfYnVyeSA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgNyAvLyB0aGUgb2Zmc2V0IHdlIGFyZSBleHRyYWN0aW5nIHRoZSBuZXh0IGVsZW1lbnQgZnJvbQoKKmZvck9mXzA6CgkvLyAqaWY1MF9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODIKCS8vIHZhbHVlVG9WZXJpZnkgPT09IGFzc2V0SWQKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2RpZyA2IC8vIGFzc2V0SWQ6IHVpbnQ2NAoJPT0KCWJ6ICppZjUwX2VuZAoKCS8vICppZjUwX2NvbnNlcXVlbnQKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyODMKCS8vIGZvdW5kID0gdHJ1ZQoJaW50YyAxIC8vIDEKCWZyYW1lX2J1cnkgNCAvLyBmb3VuZDogYm9vbAoJYiAqZm9yT2ZfMF9lbmQKCippZjUwX2VuZDoKCipmb3JPZl8wX2NvbnRpbnVlOgoJLy8gaW5jcmVtZW50IG9mZnNldCBhbmQgbG9vcCBpZiBub3Qgb3V0IG9mIGJvdW5kcwoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CgkrCglkdXAKCWludGMgNiAvLyAgb2Zmc2V0IG9mIGxhc3QgZWxlbWVudAoJPAoJYnogKmZvck9mXzBfZW5kCglmcmFtZV9idXJ5IDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWZyYW1lX2RpZyA1IC8vIGNvcHkgb2YgdGhlIGFycmF5IHdlIGFyZSBpdGVyYXRpbmcgb3ZlcgoJZnJhbWVfZGlnIDcgLy8gdGhlIG9mZnNldCB3ZSBhcmUgZXh0cmFjdGluZyB0aGUgbmV4dCBlbGVtZW50IGZyb20KCWludGMgMiAvLyA4CglleHRyYWN0CglidG9pCglmcmFtZV9idXJ5IDYgLy8gYXNzZXRJZDogdWludDY0CgliICpmb3JPZl8wCgoqZm9yT2ZfMF9lbmQ6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjg3CgkvLyBhc3NlcnQoZm91bmQsICdzcGVjaWZpZWQgYXNzZXQgbXVzdCBiZSBpZGVudGljYWwgdG8gdGhlIGFzc2V0IGlkIGRlZmluZWQgYXMgYSByZXF1aXJlbWVudCB0byBzdGFrZScpCglmcmFtZV9kaWcgNCAvLyBmb3VuZDogYm9vbAoKCS8vIHNwZWNpZmllZCBhc3NldCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgYXNzZXQgaWQgZGVmaW5lZCBhcyBhIHJlcXVpcmVtZW50IHRvIHN0YWtlCglhc3NlcnQKCippZjQ5X2VuZDoKCS8vICppZjUxX2NvbmRpdGlvbgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI4OQoJLy8gdHlwZSA9PT0gR0FUSU5HX1RZUEVfQ1JFQVRFRF9CWV9ORkRfQUREUkVTU0VTCglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyA4IC8vIDMKCT09CglieiAqaWY1MV9lbmQKCgkvLyAqaWY1MV9jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMjkyCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgdGhpcy5pc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QoY29uZmlnLmVudHJ5R2F0aW5nQXNzZXRzWzBdLCBBc3NldElELmZyb21VaW50NjQodmFsdWVUb1ZlcmlmeSkuY3JlYXRvciksCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBhc3NldCBtdXN0IGJlIGNyZWF0ZWQgYnkgY3JlYXRvciB0aGF0IGlzIG9uZSBvZiB0aGUgbGlua2VkIGFkZHJlc3NlcyBpbiBhbiBuZmQnLAoJLy8gICAgICAgICAgICAgKQoJZnJhbWVfZGlnIC0yIC8vIHZhbHVlVG9WZXJpZnk6IHVpbnQ2NAoJYXNzZXRfcGFyYW1zX2dldCBBc3NldENyZWF0b3IKCXBvcAoJZnJhbWVfZGlnIDIgLy8gY29uZmlnOiAodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkKCWV4dHJhY3QgMTEzIDgKCWJ0b2kKCWNhbGxzdWIgaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0CgoJLy8gc3BlY2lmaWVkIGFzc2V0IG11c3QgYmUgY3JlYXRlZCBieSBjcmVhdG9yIHRoYXQgaXMgb25lIG9mIHRoZSBsaW5rZWQgYWRkcmVzc2VzIGluIGFuIG5mZAoJYXNzZXJ0CgoqaWY1MV9lbmQ6CgkvLyAqaWY1Ml9jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEyOTcKCS8vIHR5cGUgPT09IEdBVElOR19UWVBFX1NFR01FTlRfT0ZfTkZECglmcmFtZV9kaWcgMCAvLyB0eXBlOiB1aW50OAoJaW50YyAxNSAvLyA0Cgk9PQoJYnogKmlmNTJfZW5kCgoJLy8gKmlmNTJfY29uc2VxdWVudAoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTI5OQoJLy8gdXNlck9mZmVyZWRORkRBcHBJRCA9IHZhbHVlVG9WZXJpZnkKCWZyYW1lX2RpZyAtMiAvLyB2YWx1ZVRvVmVyaWZ5OiB1aW50NjQKCWZyYW1lX2J1cnkgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzAwCgkvLyBhc3NlcnQodGhpcy5pc05GREFwcElEVmFsaWQodXNlck9mZmVyZWRORkRBcHBJRCksICdwcm92aWRlZCBORkQgbXVzdCBiZSB2YWxpZCcpCglmcmFtZV9kaWcgOCAvLyB1c2VyT2ZmZXJlZE5GREFwcElEOiB1aW50NjQKCWNhbGxzdWIgaXNORkRBcHBJRFZhbGlkCgoJLy8gcHJvdmlkZWQgTkZEIG11c3QgYmUgdmFsaWQKCWFzc2VydAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMDMKCS8vIGFzc2VydCgKCS8vICAgICAgICAgICAgICAgICByYXdCeXRlcyhBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm93bmVyLmEnKSBhcyBBZGRyZXNzKSA9PT0KCS8vICAgICAgICAgICAgICAgICAgICAgcmF3Qnl0ZXMoc3Rha2VyKSB8fCB0aGlzLmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCh1c2VyT2ZmZXJlZE5GREFwcElELCBzdGFrZXIpLAoJLy8gICAgICAgICAgICAgICAgICJwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyIiwKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJYnl0ZWMgMTAgLy8gICJpLm93bmVyLmEiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5vd25lci5hJykKCWFzc2VydAoJZnJhbWVfZGlnIDEgLy8gc3Rha2VyOiBhZGRyZXNzCgk9PQoJZHVwCglibnogKnNraXBfb3I2CglmcmFtZV9kaWcgMSAvLyBzdGFrZXI6IGFkZHJlc3MKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJY2FsbHN1YiBpc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QKCXx8Cgoqc2tpcF9vcjY6CgkvLyBwcm92aWRlZCBuZmQgZm9yIGVudHJ5IGlzbid0IG93bmVkIG9yIGxpbmtlZCB0byB0aGUgc3Rha2VyCglhc3NlcnQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzEwCgkvLyBhc3NlcnQoCgkvLyAgICAgICAgICAgICAgICAgYnRvaShBcHBJRC5mcm9tVWludDY0KHVzZXJPZmZlcmVkTkZEQXBwSUQpLmdsb2JhbFN0YXRlKCdpLnBhcmVudEFwcElEJykgYXMgYnl0ZXMpID09PQoJLy8gICAgICAgICAgICAgICAgICAgICBjb25maWcuZW50cnlHYXRpbmdBc3NldHNbMF0sCgkvLyAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50JywKCS8vICAgICAgICAgICAgICkKCWZyYW1lX2RpZyA4IC8vIHVzZXJPZmZlcmVkTkZEQXBwSUQ6IHVpbnQ2NAoJcHVzaGJ5dGVzIDB4NjkyZTcwNjE3MjY1NmU3NDQxNzA3MDQ5NDQgLy8gImkucGFyZW50QXBwSUQiCglhcHBfZ2xvYmFsX2dldF9leAoKCS8vIGdsb2JhbCBzdGF0ZSB2YWx1ZSBkb2VzIG5vdCBleGlzdDogQXBwSUQuZnJvbVVpbnQ2NCh1c2VyT2ZmZXJlZE5GREFwcElEKS5nbG9iYWxTdGF0ZSgnaS5wYXJlbnRBcHBJRCcpCglhc3NlcnQKCWJ0b2kKCWZyYW1lX2RpZyAyIC8vIGNvbmZpZzogKHVpbnQ2NCxhZGRyZXNzLGFkZHJlc3MsdWludDY0LHVpbnQ4LGFkZHJlc3MsdWludDY0WzRdLHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQzMix1aW50MzIsYWRkcmVzcyx1aW50NjQsdWludDY0LHVpbnQ4LHVpbnQ2NCx1aW50NjQpCglleHRyYWN0IDExMyA4CglidG9pCgk9PQoKCS8vIHNwZWNpZmllZCBuZmQgbXVzdCBiZSBhIHNlZ21lbnQgb2YgdGhlIG5mZCB0aGUgdmFsaWRhdG9yIHNwZWNpZmllZCBhcyBhIHJlcXVpcmVtZW50Cglhc3NlcnQKCippZjUyX2VuZDoKCXJldHN1YgoKLy8gaXNORkRBcHBJRFZhbGlkKG5mZEFwcElEOiB1aW50NjQpOiBib29sZWFuCi8vCi8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gTkZEIEFwcCBpZCBpcyB2YWxpZC4gIFVzaW5nIG9ubHkgdGhlIEFwcCBpZCB0aGVyZSdzIG5vIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgbmFtZSAoaWU6IHRoYXQgbmZkIFggaXMgbmFtZSBZKQovLyBTbyBpdCdzIGFzc3VtZWQgZm9yIHRoZSBjYWxsZXIsIHRoZSBhcHAgaWQgYWxvbmUgaXMgZmluZS4gIFRoZSBuYW1lIGlzIGZldGNoZWQgZnJvbSB0aGUgc3BlY2lmaWVkIGFwcCBpZCBhbmQgdGhlIHR3bwovLyB0b2dldGhlciBhcmUgdXNlZCBmb3IgdmFsaWRpdHkgY2hlY2sgY2FsbCB0byB0aGUgbmZkIHJlZ2lzdHJ5LgovLwovLyBAcGFyYW0ge3VpbnQ2NH0gbmZkQXBwSUQgLSBUaGUgTkZEIEFwcCBpZCB0byB2ZXJpZnkuCi8vCi8vIEByZXR1cm5zIHtib29sZWFufSAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgTkZEIEFwcCBpZCBpcyB2YWxpZCwgb3RoZXJ3aXNlIGZhbHNlLgppc05GREFwcElEVmFsaWQ6Cglwcm90byAxIDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMjkKCS8vIHVzZXJPZmZlcmVkTkZETmFtZSA9IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLmdsb2JhbFN0YXRlKCdpLm5hbWUnKSBhcyBzdHJpbmcKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglwdXNoYnl0ZXMgMHg2OTJlNmU2MTZkNjUgLy8gImkubmFtZSIKCWFwcF9nbG9iYWxfZ2V0X2V4CgoJLy8gZ2xvYmFsIHN0YXRlIHZhbHVlIGRvZXMgbm90IGV4aXN0OiBBcHBJRC5mcm9tVWludDY0KG5mZEFwcElEKS5nbG9iYWxTdGF0ZSgnaS5uYW1lJykKCWFzc2VydAoJZnJhbWVfYnVyeSAwIC8vIHVzZXJPZmZlcmVkTkZETmFtZTogc3RyaW5nCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTMzMQoJLy8gcmV0dXJuIHNlbmRNZXRob2RDYWxsPFtzdHJpbmcsIHVpbnQ2NF0sIGJvb2xlYW4+KHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKSwKCS8vICAgICAgICAgICAgIG5hbWU6ICdpc1ZhbGlkTmZkQXBwSWQnLAoJLy8gICAgICAgICAgICAgbWV0aG9kQXJnczogW3VzZXJPZmZlcmVkTkZETmFtZSwgbmZkQXBwSURdLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCglwdXNoYnl0ZXMgMHg0YmUyMmZjNiAvLyBtZXRob2QgImlzVmFsaWROZmRBcHBJZChzdHJpbmcsdWludDY0KWJvb2wiCglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzIKCS8vIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQodGhpcy5uZmRSZWdpc3RyeUFwcElkKQoJaW50YyAyOCAvLyBUTVBMX25mZFJlZ2lzdHJ5QXBwSWQKCWl0eG5fZmllbGQgQXBwbGljYXRpb25JRAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzMzQKCS8vIG1ldGhvZEFyZ3M6IFt1c2VyT2ZmZXJlZE5GRE5hbWUsIG5mZEFwcElEXQoJZnJhbWVfZGlnIDAgLy8gdXNlck9mZmVyZWRORkROYW1lOiBzdHJpbmcKCWR1cAoJbGVuCglpdG9iCglleHRyYWN0IDYgMgoJc3dhcAoJY29uY2F0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwoJZnJhbWVfZGlnIC0xIC8vIG5mZEFwcElEOiB1aW50NjQKCWl0b2IKCWl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCgoJLy8gRmVlIGZpZWxkIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gMAoJaW50YyAwIC8vIDAKCWl0eG5fZmllbGQgRmVlCgoJLy8gU3VibWl0IGlubmVyIHRyYW5zYWN0aW9uCglpdHhuX3N1Ym1pdAoJaXR4biBOdW1Mb2dzCglpbnRjIDEgLy8gMQoJLQoJaXR4bmFzIExvZ3MKCWV4dHJhY3QgNCAwCglpbnRjIDAgLy8gMAoJZ2V0Yml0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdChuZmRBcHBJRDogdWludDY0LCBhZGRyVG9GaW5kOiBBZGRyZXNzKTogYm9vbGVhbgovLwovLyBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBhZGRyZXNzIGlzIHByZXNlbnQgaW4gYW4gTkZEcyBsaXN0IG9mIHZlcmlmaWVkIGFkZHJlc3Nlcy4KLy8gVGhlIE5GRCBpcyBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRlZCBhcyBvZmZpY2lhbC4KLy8KLy8gQHBhcmFtIHt1aW50NjR9IG5mZEFwcElEIC0gVGhlIE5GRCBhcHBsaWNhdGlvbiBpZC4KLy8gQHBhcmFtIHtBZGRyZXNzfSBhZGRyVG9GaW5kIC0gVGhlIGFkZHJlc3MgdG8gZmluZCBpbiB0aGUgdi5jYUFsZ28uMC5hcyBwcm9wZXJ0eQovLyBAcmV0dXJuIHtib29sZWFufSAtIGB0cnVlYCBpZiB0aGUgYWRkcmVzcyBpcyBwcmVzZW50LCBgZmFsc2VgIG90aGVyd2lzZS4KaXNBZGRyZXNzSW5ORkRDQUFsZ29MaXN0OgoJcHJvdG8gMiAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCWR1cG4gMgoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNDcKCS8vIHNlbmRBcHBDYWxsKHsKCS8vICAgICAgICAgICAgIGFwcGxpY2F0aW9uSUQ6IEFwcElELmZyb21VaW50NjQobmZkQXBwSUQpLAoJLy8gICAgICAgICAgICAgYXBwbGljYXRpb25BcmdzOiBbJ3JlYWRfcHJvcGVydHknLCAndi5jYUFsZ28uMC5hcyddLAoJLy8gICAgICAgICB9KQoJaXR4bl9iZWdpbgoJaW50YyA3IC8vICBhcHBsCglpdHhuX2ZpZWxkIFR5cGVFbnVtCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM0OAoJLy8gYXBwbGljYXRpb25JRDogQXBwSUQuZnJvbVVpbnQ2NChuZmRBcHBJRCkKCWZyYW1lX2RpZyAtMSAvLyBuZmRBcHBJRDogdWludDY0CglpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzQ5CgkvLyBhcHBsaWNhdGlvbkFyZ3M6IFsncmVhZF9wcm9wZXJ0eScsICd2LmNhQWxnby4wLmFzJ10KCXB1c2hieXRlcyAweDcyNjU2MTY0NWY3MDcyNmY3MDY1NzI3NDc5IC8vICJyZWFkX3Byb3BlcnR5IgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCXB1c2hieXRlcyAweDc2MmU2MzYxNDE2YzY3NmYyZTMwMmU2MTczIC8vICJ2LmNhQWxnby4wLmFzIgoJaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKCgkvLyBGZWUgZmllbGQgbm90IHNldCwgZGVmYXVsdGluZyB0byAwCglpbnRjIDAgLy8gMAoJaXR4bl9maWVsZCBGZWUKCgkvLyBTdWJtaXQgaW5uZXIgdHJhbnNhY3Rpb24KCWl0eG5fc3VibWl0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MQoJLy8gY2FBbGdvRGF0YSA9IHRoaXMuaXR4bi5sYXN0TG9nCglpdHhuIExhc3RMb2cKCWZyYW1lX2J1cnkgMCAvLyBjYUFsZ29EYXRhOiBieXRlW10KCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBmb3IgKGxldCBpID0gMDsgaSA8IGNhQWxnb0RhdGEubGVuZ3RoOyBpICs9IDMyKQoJaW50YyAwIC8vIDAKCWZyYW1lX2J1cnkgMSAvLyBpOiB1aW50NjQKCipmb3JfMTA6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpIDwgY2FBbGdvRGF0YS5sZW5ndGgKCWZyYW1lX2RpZyAxIC8vIGk6IHVpbnQ2NAoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglsZW4KCTwKCWJ6ICpmb3JfMTBfZW5kCgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM1MwoJLy8gYWRkciA9IGV4dHJhY3QzKGNhQWxnb0RhdGEsIGksIDMyKQoJZnJhbWVfZGlnIDAgLy8gY2FBbGdvRGF0YTogYnl0ZVtdCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJZXh0cmFjdDMKCWZyYW1lX2J1cnkgMiAvLyBhZGRyOiBieXRlW10KCgkvLyAqaWY1M19jb25kaXRpb24KCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTQKCS8vIGFkZHIgIT09IHJhd0J5dGVzKGdsb2JhbHMuemVyb0FkZHJlc3MpICYmIGFkZHIgPT09IHJhd0J5dGVzKGFkZHJUb0ZpbmQpCglmcmFtZV9kaWcgMiAvLyBhZGRyOiBieXRlW10KCWdsb2JhbCBaZXJvQWRkcmVzcwoJIT0KCWR1cAoJYnogKnNraXBfYW5kMTEKCWZyYW1lX2RpZyAyIC8vIGFkZHI6IGJ5dGVbXQoJZnJhbWVfZGlnIC0yIC8vIGFkZHJUb0ZpbmQ6IEFkZHJlc3MKCT09CgkmJgoKKnNraXBfYW5kMTE6CglieiAqaWY1M19lbmQKCgkvLyAqaWY1M19jb25zZXF1ZW50CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzU1CgkvLyByZXR1cm4gdHJ1ZQoJaW50YyAxIC8vIDEKCWIgKmlzQWRkcmVzc0luTkZEQ0FBbGdvTGlzdCpyZXR1cm4KCippZjUzX2VuZDoKCipmb3JfMTBfY29udGludWU6CgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzUyCgkvLyBpICs9IDMyCglmcmFtZV9kaWcgMSAvLyBpOiB1aW50NjQKCWludGMgNiAvLyAzMgoJKwoJZnJhbWVfYnVyeSAxIC8vIGk6IHVpbnQ2NAoJYiAqZm9yXzEwCgoqZm9yXzEwX2VuZDoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNTgKCS8vIHJldHVybiBmYWxzZQoJaW50YyAwIC8vIDAKCippc0FkZHJlc3NJbk5GRENBQWxnb0xpc3QqcmV0dXJuOgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCgoJLy8gcG9wIGFsbCBsb2NhbCB2YXJpYWJsZXMgZnJvbSB0aGUgc3RhY2sKCXBvcG4gMgoJcmV0c3ViCgovLyBhbGdvU2F0dXJhdGlvbkxldmVsKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBtYXhpbXVtIGFsbG93ZWQgc3Rha2UgcGVyIHZhbGlkYXRvciBiYXNlZCBvbiBhIHBlcmNlbnRhZ2Ugb2YgYWxsIGN1cnJlbnQgb25saW5lIHN0YWtlIGJlZm9yZQovLyB0aGUgdmFsaWRhdG9yIGlzIGNvbnNpZGVyZWQgc2F0dXJhdGVkIC0gd2hlcmUgcmV3YXJkcyBhcmUgZGltaW5pc2hlZC4KLy8gTk9URTogdGhpcyBmdW5jdGlvbiBpcyBkZWZpbmVkIHR3aWNlIC0gaGVyZSBhbmQgaW4gc3Rha2luZyBwb29sIGNvbnRyYWN0LiAgQm90aCBtdXN0IGJlIGlkZW50aWNhbC4KYWxnb1NhdHVyYXRpb25MZXZlbDoKCXByb3RvIDAgMQoKCS8vIFB1c2ggZW1wdHkgYnl0ZXMgYWZ0ZXIgdGhlIGZyYW1lIHBvaW50ZXIgdG8gcmVzZXJ2ZSBzcGFjZSBmb3IgbG9jYWwgdmFyaWFibGVzCglieXRlYyAxIC8vIDB4CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM2NwoJLy8gb25saW5lID0gdGhpcy5nZXRDdXJyZW50T25saW5lU3Rha2UoKQoJY2FsbHN1YiBnZXRDdXJyZW50T25saW5lU3Rha2UKCWZyYW1lX2J1cnkgMCAvLyBvbmxpbmU6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzNjkKCS8vIHJldHVybiB3aWRlUmF0aW8oW29ubGluZSwgTUFYX1ZBTElEQVRPUl9TT0ZUX1BDVF9PRl9PTkxJTkVfMURFQ0lNQUxdLCBbMTAwMF0pCglmcmFtZV9kaWcgMCAvLyBvbmxpbmU6IHVpbnQ2NAoJcHVzaGludCAxMDAKCW11bHcKCWludGMgMCAvLyAwCglpbnRjIDMyIC8vIDEwMDAKCWRpdm1vZHcKCXBvcAoJcG9wCglzd2FwCgkhCgoJLy8gd2lkZVJhdGlvIGZhaWxlZAoJYXNzZXJ0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIG1heEFsbG93ZWRTdGFrZSgpOiB1aW50NjQKLy8KLy8gUmV0dXJucyB0aGUgTUFYSU1VTSBhbGxvd2VkIHN0YWtlIHBlciB2YWxpZGF0b3IgYmFzZWQgb24gYSBwZXJjZW50YWdlIG9mIGFsbCBjdXJyZW50IG9ubGluZSBzdGFrZS4KLy8gQWRkaW5nIHN0YWtlIGlzIGNvbXBsZXRlbHkgYmxvY2tlZCBhdCB0aGlzIGFtb3VudC4KbWF4QWxsb3dlZFN0YWtlOgoJcHJvdG8gMCAxCgoJLy8gUHVzaCBlbXB0eSBieXRlcyBhZnRlciB0aGUgZnJhbWUgcG9pbnRlciB0byByZXNlcnZlIHNwYWNlIGZvciBsb2NhbCB2YXJpYWJsZXMKCWJ5dGVjIDEgLy8gMHgKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzc3CgkvLyBvbmxpbmUgPSB0aGlzLmdldEN1cnJlbnRPbmxpbmVTdGFrZSgpCgljYWxsc3ViIGdldEN1cnJlbnRPbmxpbmVTdGFrZQoJZnJhbWVfYnVyeSAwIC8vIG9ubGluZTogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTM3OQoJLy8gcmV0dXJuIHdpZGVSYXRpbyhbb25saW5lLCBNQVhfVkFMSURBVE9SX0hBUkRfUENUX09GX09OTElORV8xREVDSU1BTF0sIFsxMDAwXSkKCWZyYW1lX2RpZyAwIC8vIG9ubGluZTogdWludDY0CglwdXNoaW50IDE1MAoJbXVsdwoJaW50YyAwIC8vIDAKCWludGMgMzIgLy8gMTAwMAoJZGl2bW9kdwoJcG9wCglwb3AKCXN3YXAKCSEKCgkvLyB3aWRlUmF0aW8gZmFpbGVkCglhc3NlcnQKCgkvLyBzZXQgdGhlIHN1YnJvdXRpbmUgcmV0dXJuIHZhbHVlCglmcmFtZV9idXJ5IDAKCXJldHN1YgoKLy8gbWF4QWxnb0FsbG93ZWRQZXJQb29sKCk6IHVpbnQ2NAovLwovLyBSZXR1cm5zIHRoZSBNQVhJTVVNIGFsbG93ZWQgc3Rha2UgcGVyIHBvb2wgYW5kIHN0aWxsIHJlY2VpdmUgaW5jZW50aXZlcyAtIHdlJ2xsIHRyZWF0IHRoaXMgYXMgdGhlICdtYXggcGVyIHBvb2wnCm1heEFsZ29BbGxvd2VkUGVyUG9vbDoKCXByb3RvIDAgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjEzODYKCS8vIHJldHVybiBnbG9iYWxzLnBheW91dHNNYXhCYWxhbmNlCglnbG9iYWwgUGF5b3V0c01heEJhbGFuY2UKCXJldHN1YgoKLy8gZ2V0Q3VycmVudE9ubGluZVN0YWtlKCk6IHVpbnQ2NApnZXRDdXJyZW50T25saW5lU3Rha2U6Cglwcm90byAwIDEKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxMzkwCgkvLyByZXR1cm4gb25saW5lU3Rha2UoKQoJb25saW5lX3N0YWtlCglyZXRzdWIKCi8vIG1pbkJhbGFuY2VGb3JBY2NvdW50KGNvbnRyYWN0czogdWludDY0LCBleHRyYVBhZ2VzOiB1aW50NjQsIGFzc2V0czogdWludDY0LCBsb2NhbEludHM6IHVpbnQ2NCwgbG9jYWxCeXRlczogdWludDY0LCBnbG9iYWxJbnRzOiB1aW50NjQsIGdsb2JhbEJ5dGVzOiB1aW50NjQpOiB1aW50NjQKbWluQmFsYW5jZUZvckFjY291bnQ6Cglwcm90byA3IDEKCgkvLyBQdXNoIGVtcHR5IGJ5dGVzIGFmdGVyIHRoZSBmcmFtZSBwb2ludGVyIHRvIHJlc2VydmUgc3BhY2UgZm9yIGxvY2FsIHZhcmlhYmxlcwoJYnl0ZWMgMSAvLyAweAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDIKCS8vIG1pbkJhbCA9IEFMR09SQU5EX0FDQ09VTlRfTUlOX0JBTEFOQ0UKCWludGMgMTYgLy8gMTAwMDAwCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDAzCgkvLyBtaW5CYWwgKz0gY29udHJhY3RzICogQVBQTElDQVRJT05fQkFTRV9GRUUKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CglmcmFtZV9kaWcgLTEgLy8gY29udHJhY3RzOiB1aW50NjQKCWludGMgMTYgLy8gMTAwMDAwCgkqCgkrCglmcmFtZV9idXJ5IDAgLy8gbWluQmFsOiB1aW50NjQKCgkvLyBjb250cmFjdHMvdmFsaWRhdG9yUmVnaXN0cnkuYWxnby50czoxNDA0CgkvLyBtaW5CYWwgKz0gZXh0cmFQYWdlcyAqIEFQUExJQ0FUSU9OX0JBU0VfRkVFCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC0yIC8vIGV4dHJhUGFnZXM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDUKCS8vIG1pbkJhbCArPSBhc3NldHMgKiBBU1NFVF9IT0xESU5HX0ZFRQoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtMyAvLyBhc3NldHM6IHVpbnQ2NAoJaW50YyAxNiAvLyAxMDAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDYKCS8vIG1pbkJhbCArPSBsb2NhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNCAvLyBsb2NhbEludHM6IHVpbnQ2NAoJaW50YyAzMyAvLyAyODUwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwNwoJLy8gbWluQmFsICs9IGdsb2JhbEludHMgKiBTU0NfVkFMVUVfVUlOVAoJZnJhbWVfZGlnIDAgLy8gbWluQmFsOiB1aW50NjQKCWZyYW1lX2RpZyAtNiAvLyBnbG9iYWxJbnRzOiB1aW50NjQKCWludGMgMzMgLy8gMjg1MDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MDgKCS8vIG1pbkJhbCArPSBsb2NhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC01IC8vIGxvY2FsQnl0ZXM6IHVpbnQ2NAoJaW50YyAzNCAvLyA1MDAwMAoJKgoJKwoJZnJhbWVfYnVyeSAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gY29udHJhY3RzL3ZhbGlkYXRvclJlZ2lzdHJ5LmFsZ28udHM6MTQwOQoJLy8gbWluQmFsICs9IGdsb2JhbEJ5dGVzICogU1NDX1ZBTFVFX0JZVEVTCglmcmFtZV9kaWcgMCAvLyBtaW5CYWw6IHVpbnQ2NAoJZnJhbWVfZGlnIC03IC8vIGdsb2JhbEJ5dGVzOiB1aW50NjQKCWludGMgMzQgLy8gNTAwMDAKCSoKCSsKCWZyYW1lX2J1cnkgMCAvLyBtaW5CYWw6IHVpbnQ2NAoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTAKCS8vIHJldHVybiBtaW5CYWwKCWZyYW1lX2RpZyAwIC8vIG1pbkJhbDogdWludDY0CgoJLy8gc2V0IHRoZSBzdWJyb3V0aW5lIHJldHVybiB2YWx1ZQoJZnJhbWVfYnVyeSAwCglyZXRzdWIKCi8vIGNvc3RGb3JCb3hTdG9yYWdlKHRvdGFsTnVtQnl0ZXM6IHVpbnQ2NCk6IHVpbnQ2NApjb3N0Rm9yQm94U3RvcmFnZToKCXByb3RvIDEgMQoKCS8vIGNvbnRyYWN0cy92YWxpZGF0b3JSZWdpc3RyeS5hbGdvLnRzOjE0MTcKCS8vIHJldHVybiBTQ0JPWF9QRVJCT1ggKyB0b3RhbE51bUJ5dGVzICogU0NCT1hfUEVSQllURQoJcHVzaGludCAyNTAwCglmcmFtZV9kaWcgLTEgLy8gdG90YWxOdW1CeXRlczogdWludDY0CglwdXNoaW50IDQwMAoJKgoJKwoJcmV0c3ViCgoqY3JlYXRlX05vT3A6CglwdXNoYnl0ZXMgMHhiODQ0N2IzNiAvLyBtZXRob2QgImNyZWF0ZUFwcGxpY2F0aW9uKCl2b2lkIgoJdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAoJbWF0Y2ggKmFiaV9yb3V0ZV9jcmVhdGVBcHBsaWNhdGlvbgoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjcmVhdGUgTm9PcAoJZXJyCgoqY2FsbF9Ob09wOgoJcHVzaGJ5dGVzIDB4MWI1ZTgyYzYgLy8gbWV0aG9kICJpbml0U3Rha2luZ0NvbnRyYWN0KHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4Nzk0NzJkODMgLy8gbWV0aG9kICJsb2FkU3Rha2luZ0NvbnRyYWN0RGF0YSh1aW50NjQsYnl0ZVtdKXZvaWQiCglwdXNoYnl0ZXMgMHg1ZjdhY2ZkOSAvLyBtZXRob2QgImZpbmFsaXplU3Rha2luZ0NvbnRyYWN0KCl2b2lkIgoJcHVzaGJ5dGVzIDB4MzE3MmNhOWQgLy8gbWV0aG9kICJnYXMoKXZvaWQiCglwdXNoYnl0ZXMgMHg4YTg3MTQyZCAvLyBtZXRob2QgImdldE1ickFtb3VudHMoKSh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4ZDEzNjZjYzMgLy8gbWV0aG9kICJnZXRQcm90b2NvbENvbnN0cmFpbnRzKCkodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgzYjA0NWM1YyAvLyBtZXRob2QgImdldE51bVZhbGlkYXRvcnMoKXVpbnQ2NCIKCXB1c2hieXRlcyAweDc1YWZmNjFkIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yQ29uZmlnKHVpbnQ2NCkodWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDMyLHVpbnQzMixhZGRyZXNzLHVpbnQ2NCx1aW50NjQsdWludDgsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHgxZjJmMDEwOSAvLyBtZXRob2QgImdldFZhbGlkYXRvclN0YXRlKHVpbnQ2NCkodWludDE2LHVpbnQ2NCx1aW50NjQsdWludDY0KSIKCXB1c2hieXRlcyAweDJmYTIyYzRiIC8vIG1ldGhvZCAiZ2V0VmFsaWRhdG9yT3duZXJBbmRNYW5hZ2VyKHVpbnQ2NCkoYWRkcmVzcyxhZGRyZXNzKSIKCXB1c2hieXRlcyAweDkxMGU5NGFjIC8vIG1ldGhvZCAiZ2V0UG9vbHModWludDY0KSh1aW50NjQsdWludDE2LHVpbnQ2NClbXSIKCXB1c2hieXRlcyAweDU3Mjc2N2QxIC8vIG1ldGhvZCAiZ2V0UG9vbEFwcElkKHVpbnQ2NCx1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4OWI1MDRhYWYgLy8gbWV0aG9kICJnZXRQb29sSW5mbygodWludDY0LHVpbnQ2NCx1aW50NjQpKSh1aW50NjQsdWludDE2LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhmYmM2MzE3OCAvLyBtZXRob2QgImdldEN1ck1heFN0YWtlUGVyUG9vbCh1aW50NjQpdWludDY0IgoJcHVzaGJ5dGVzIDB4MjQ0OThjZjQgLy8gbWV0aG9kICJkb2VzU3Rha2VyTmVlZFRvUGF5TUJSKGFkZHJlc3MpYm9vbCIKCXB1c2hieXRlcyAweGY4NDZkZDdhIC8vIG1ldGhvZCAiZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50KGFkZHJlc3MpKHVpbnQ2NCx1aW50NjQsdWludDY0KVtdIgoJcHVzaGJ5dGVzIDB4ODMwNTA1MDEgLy8gbWV0aG9kICJnZXRUb2tlblBheW91dFJhdGlvKHVpbnQ2NCkodWludDY0WzI0XSx1aW50NjQpIgoJcHVzaGJ5dGVzIDB4N2JiYjZjOGQgLy8gbWV0aG9kICJnZXROb2RlUG9vbEFzc2lnbm1lbnRzKHVpbnQ2NCkoKHVpbnQ2NFszXSlbOF0pIgoJcHVzaGJ5dGVzIDB4ZjgzOTQxNGEgLy8gbWV0aG9kICJnZXRORkRSZWdpc3RyeUlEKCl1aW50NjQiCglwdXNoYnl0ZXMgMHgwYzMxN2NmYiAvLyBtZXRob2QgImFkZFZhbGlkYXRvcihwYXksc3RyaW5nLCh1aW50NjQsYWRkcmVzcyxhZGRyZXNzLHVpbnQ2NCx1aW50OCxhZGRyZXNzLHVpbnQ2NFs0XSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50MzIsdWludDMyLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50OCx1aW50NjQsdWludDY0KSl1aW50NjQiCglwdXNoYnl0ZXMgMHgzZTI4ODk3MiAvLyBtZXRob2QgImNoYW5nZVZhbGlkYXRvck1hbmFnZXIodWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweGRkNWZhYWRhIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yU3Vuc2V0SW5mbyh1aW50NjQsdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4MThhYWM3YTcgLy8gbWV0aG9kICJjaGFuZ2VWYWxpZGF0b3JORkQodWludDY0LHVpbnQ2NCxzdHJpbmcpdm9pZCIKCXB1c2hieXRlcyAweGY5OWVmNTRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yQ29tbWlzc2lvbkFkZHJlc3ModWludDY0LGFkZHJlc3Mpdm9pZCIKCXB1c2hieXRlcyAweDEwODA5ZDRkIC8vIG1ldGhvZCAiY2hhbmdlVmFsaWRhdG9yUmV3YXJkSW5mbyh1aW50NjQsdWludDgsYWRkcmVzcyx1aW50NjRbNF0sdWludDY0LHVpbnQ2NCl2b2lkIgoJcHVzaGJ5dGVzIDB4ZTc3OGRkNWEgLy8gbWV0aG9kICJhZGRQb29sKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHhiZjUyNTlkMCAvLyBtZXRob2QgImFkZFN0YWtlKHBheSx1aW50NjQsdWludDY0KSh1aW50NjQsdWludDY0LHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0ZGY4ZDg2ZSAvLyBtZXRob2QgInNldFRva2VuUGF5b3V0UmF0aW8odWludDY0KSh1aW50NjRbMjRdLHVpbnQ2NCkiCglwdXNoYnl0ZXMgMHg0MThmY2VmYyAvLyBtZXRob2QgInN0YWtlVXBkYXRlZFZpYVJld2FyZHMoKHVpbnQ2NCx1aW50NjQsdWludDY0KSx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpdm9pZCIKCXB1c2hieXRlcyAweGEyZGM1MWI1IC8vIG1ldGhvZCAic3Rha2VSZW1vdmVkKCh1aW50NjQsdWludDY0LHVpbnQ2NCksYWRkcmVzcyx1aW50NjQsdWludDY0LGJvb2wpdm9pZCIKCXB1c2hieXRlcyAweDI4NzNmNTA0IC8vIG1ldGhvZCAiZmluZFBvb2xGb3JTdGFrZXIodWludDY0LGFkZHJlc3MsdWludDY0KSgodWludDY0LHVpbnQ2NCx1aW50NjQpLGJvb2wsYm9vbCkiCglwdXNoYnl0ZXMgMHgwNTQ3ZjRmZSAvLyBtZXRob2QgIm1vdmVQb29sVG9Ob2RlKHVpbnQ2NCx1aW50NjQsdWludDY0KXZvaWQiCglwdXNoYnl0ZXMgMHhjYjY2ODM1OCAvLyBtZXRob2QgImVtcHR5VG9rZW5SZXdhcmRzKHVpbnQ2NCxhZGRyZXNzKXVpbnQ2NCIKCXR4bmEgQXBwbGljYXRpb25BcmdzIDAKCW1hdGNoICphYmlfcm91dGVfaW5pdFN0YWtpbmdDb250cmFjdCAqYWJpX3JvdXRlX2xvYWRTdGFraW5nQ29udHJhY3REYXRhICphYmlfcm91dGVfZmluYWxpemVTdGFraW5nQ29udHJhY3QgKmFiaV9yb3V0ZV9nYXMgKmFiaV9yb3V0ZV9nZXRNYnJBbW91bnRzICphYmlfcm91dGVfZ2V0UHJvdG9jb2xDb25zdHJhaW50cyAqYWJpX3JvdXRlX2dldE51bVZhbGlkYXRvcnMgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JDb25maWcgKmFiaV9yb3V0ZV9nZXRWYWxpZGF0b3JTdGF0ZSAqYWJpX3JvdXRlX2dldFZhbGlkYXRvck93bmVyQW5kTWFuYWdlciAqYWJpX3JvdXRlX2dldFBvb2xzICphYmlfcm91dGVfZ2V0UG9vbEFwcElkICphYmlfcm91dGVfZ2V0UG9vbEluZm8gKmFiaV9yb3V0ZV9nZXRDdXJNYXhTdGFrZVBlclBvb2wgKmFiaV9yb3V0ZV9kb2VzU3Rha2VyTmVlZFRvUGF5TUJSICphYmlfcm91dGVfZ2V0U3Rha2VkUG9vbHNGb3JBY2NvdW50ICphYmlfcm91dGVfZ2V0VG9rZW5QYXlvdXRSYXRpbyAqYWJpX3JvdXRlX2dldE5vZGVQb29sQXNzaWdubWVudHMgKmFiaV9yb3V0ZV9nZXRORkRSZWdpc3RyeUlEICphYmlfcm91dGVfYWRkVmFsaWRhdG9yICphYmlfcm91dGVfY2hhbmdlVmFsaWRhdG9yTWFuYWdlciAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclN1bnNldEluZm8gKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JORkQgKmFiaV9yb3V0ZV9jaGFuZ2VWYWxpZGF0b3JDb21taXNzaW9uQWRkcmVzcyAqYWJpX3JvdXRlX2NoYW5nZVZhbGlkYXRvclJld2FyZEluZm8gKmFiaV9yb3V0ZV9hZGRQb29sICphYmlfcm91dGVfYWRkU3Rha2UgKmFiaV9yb3V0ZV9zZXRUb2tlblBheW91dFJhdGlvICphYmlfcm91dGVfc3Rha2VVcGRhdGVkVmlhUmV3YXJkcyAqYWJpX3JvdXRlX3N0YWtlUmVtb3ZlZCAqYWJpX3JvdXRlX2ZpbmRQb29sRm9yU3Rha2VyICphYmlfcm91dGVfbW92ZVBvb2xUb05vZGUgKmFiaV9yb3V0ZV9lbXB0eVRva2VuUmV3YXJkcwoKCS8vIHRoaXMgY29udHJhY3QgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBnaXZlbiBBQkkgbWV0aG9kIGZvciBjYWxsIE5vT3AKCWVycg==","clear":"I3ByYWdtYSB2ZXJzaW9uIDEx"},"templateVariables":{"nfdRegistryAppId":{"type":"uint64"}},"scratchVariables":{"nfdRegistryAppId":{"type":"uint64","slot":200}},"compilerInfo":{"compiler":"algod","compilerVersion":{"major":3,"minor":27,"patch":237217,"commitHash":"0bc3d7e4"}}} as unknown as Arc56Contract /** * A state record containing binary data