From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: osstest Massachusetts test lab resource usage investigation Date: Thu, 25 Aug 2016 16:27:11 +0100 Message-ID: <22463.3663.160061.177962@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wg-test-framework@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org QmVjYXVzZSBJIGhhdmUgc3VzcGVjdGVkIHRoYXQgd2UgYXJlIG5vdCBnZXR0aW5nIGFzIG11Y2gg b3V0IG9mIHRoZQp0ZXN0IGxhYiBhcyB3ZSBjb3VsZCBoYXZlLCBJIGhhdmUgYmVlbiBkb2luZyBz b21lIGRpZ2dpbmcgaW4gdGhlCmRhdGFiYXNlLgoKSSB3cm90ZSBzb21lIGNvZGUgdG8gbWluZSB0 aGUgZGF0YWJhc2UgZm9yIGhpc3RvcmljYWwgaW5mb3JtYXRpb24KYWJvdXQgcmVzb3VyY2UgdXNh Z2UuICAoUGF0Y2ggYmVsb3csIHdoaWNoIEkgd2lsbCBwdXNoIHRvIG9zc3Rlc3QKcHJvZHVjdGlv biBhdCBzb21lIHBvaW50LikKCkkgcmFuIGl0IG9uIHRoZSBsYXN0IDkyIGRheXMgb2YgaGlzdG9y eSAoc3RyaWN0bHksIDkyIGRheXMgc3RhcnRpbmcgNwpkYXlzIGFnbywgYmVjYXVzZSBmb3Igb2Jz Y3VyZSB0ZWNobmljYWwgcmVhc29ucyBpdCBkb2Vzbid0IHdhbnQgdG8KbG9vayByaWdodCBhdCB0 aGUgbW9zdCByZWNlbnQgZGF0YSkuCgoKVGhlIG1vc3Qgbm90ZXdvcnRoeSBjb25jbHVzaW9uIEkg aGF2ZSBkcmF3biBpcyB0aGF0IGFib3V0IDMwJSBvZiB0aGUKY2FwYWNpdHkgaXMgbm90IGJlaW5n IHVzZWQuICBUaGF0IGlzLCBhdCBhbnkgb25lIHRpbWUsIG9uIGF2ZXJhZ2UsCmFib3V0IH4zMCUg b2YgdGhlIGNhcGFjaXR5IGlzIGlkbGUuCgpTb21lIG9mIHRoaXMgd2lsbCBiZSBpbmV2aXRhYmxl OiBmb3IgZXhhbXBsZSwgaWYgd2UgbmVlZCB0byBzaHV0IHRoZQpzeXN0ZW0gZG93biBmb3IgbWFp bnRlbmFuY2UsIHdlIHdpbGwgbmVlZCB0byBhc2sgaXQgdG8gZHJhaW4gaXRzIHF1ZXVlCnNvIHRo YXQgaXQgaXMgaWRsZSBieSB0aGUgc3RhcnQgb2YgdGhlIG1haW50ZW5hbmNlIHdpbmRvdy4KCkl0 IGlzIGFsc28gcG9zc2libGUgdGhhdCBzb21lIG9mIHRoaXMgaXMgYSBnZW51aW5lIGxhY2sgb2Yg d29yayB0byBkbywKaW4gdGhlIHNlbnNlIHRoYXQgdGhlIHByb2dyYW1tZWQgdGVzdCBmbGlnaHRz IGFyZSBub3QgYWJsZSB0byB1c2UgdGhlCmNhcGFjaXR5LiAgSSBkb24ndCB0aGluayB0aGlzIGlz IHZlcnkgbGlrZWx5IChidXQgSSBoYXZlbid0IHlldApmaWd1cmVkIG91dCBmb3Igc3VyZSkuICBD ZXJ0YWlubHksIG15IHBlcnNvbmFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGUKbGVhZCB0aW1lIG9u IHRlc3RzIGhhcyB2YXJpZWQgZ3JlYXRseTsgY3VycmVudGx5IGl0IGlzIHF1aXRlIGxvdwpiZWNh dXNlIHRoZSBzdGFibGUgdHJlZXMgaGF2ZW4ndCBoYWQgcmVjZW50IHVwZGF0ZXMuCgpQZXJzb25h bCBleHBlcmllbmNlIGFuZCBhZC1ob2MgbG9nIHJlYWRpbmcgbGVhZHMgbWUgdG8gdGhpbmsgdGhh dCB0aGUKYmlnZ2VzdCBsaWtlbHkgY2F1c2Ugb2YgaWRsZSB0ZXN0IGJveGVzIGlzIGRhdGFiYXNl IGNvbnRlbnRpb24uICBUaGF0CmlzLCB0aGVyZSBpcyB3b3JrIHdoaWNoIHRoZSBzeXN0ZW0gaW4g c29tZSBzZW5zZSBrbm93cyBpdCBvdWdodCB0byBiZQpkb2luZywgYnV0IGl0IGlzIHN0dWNrIG9u IGJvb2trZWVwaW5nIG9wZXJhdGlvbnMgaW52b2x2ZWQgaW4gc2V0dGluZwp1cCBhIGZsaWdodCwg c2NoZWR1bGluZyB0aGUgam9icywgYW5kIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1lCmFsbG9jYXRp bmcgYSB0ZXN0IGJveCBmb3IgZWFjaCBzdWNoIGpvYiwgYW5kIHNvbiBvbi4gIERlcGVuZGluZyBv bgpsb2NraW5nIHN0cmF0ZWdpZXMsIHRoZXNlIGRhdGFiYXNlIG9wZXJhdGlvbnMgY2FuIGJlIGJs b2NrZWQgYnkKbG9uZy1ydW5uaW5nIHJlcG9ydCBqb2JzLiAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0 aGF0IHRoZSBkYXRhYmFzZQpxdWVyaWVzIGludm9sdmVkIGluIGhvc3Qgc2NoZWR1bGluZyBuZWVk IHR1bmluZy4KCkluIHBhcmFsbGVsIHdpdGggdGhlIHdvcmsgSSBhbSByZXBvcnRpbmcgaW4gdGhp cyBlbWFpbCwgSSBhbSBhbHJlYWR5CnRha2luZyBzdGVwcyB0byBpbnZlc3RpZ2F0ZSB0aGUgcGVy Zm9ybWFuY2Ugb2YgdGhlIHZhcmlvdXMgZGF0YWJhc2UKcXVlcmllcywgYW5kIHRoZSBzaXR1YXRp b24gd2l0aCBsb2NraW5nLgoKSSBob3BlIHRoYXQgdGhpcyB3aWxsIHByb2R1Y2UgYWN0aW9uYWJs ZSBpZGVhcyBmb3IgaW1wcm92ZW1lbnQuCgoKQWRkaXRpb25hbGx5LCBlYWNoIHRlc3QgYm94IHNw ZW5kcyBhYm91dCB+MTYlIG9mIHRoZSB0aW1lIGJlaW5nIHdpcGVkCmFuZCByZWluc3RhbGxlZCBm b3IgZWFjaCB0ZXN0LiAgVGhpcyBpcyBiZWNhdXNlIHRoZSByZWluc3RhbGxhdGlvbgp0aW1lIGlz IHNpZ25pZmljYW50IHdoZW4gY29tcGFyZWQgdG8gdGhlIGR1cmF0aW9uIG9mIGVhY2ggdGVzdC4K SXQgaXMgbmVjZXNzYXJ5IHRvIHJlaW5zdGFsbCB3aGVuIGEgaG9zdCB3YXMgcHJldmlvdXNseSB1 c2VkIGJ5IGEKY29tcGxldGVseSBkaWZmZXJlbnQgZmxpZ2h0ICh3aGljaCBtaWdodCBpbnZvbHZl IGEgZGlmZmVyZW50Cmh5cGVydmlzb3IpLCBvciBpZiB3ZSBhcmVuJ3Qgc3VyZSB0aGF0IHRoZSBw cmV2aW91cyB0ZXN0IGxlZnQgdGhlIGhvc3QKaW4gYSBnb29kIHN0YXRlLiAgQnV0IG1vc3QgZmxp Z2h0cyBjb250YWluIG1hbnkgc2ltaWxhciBob3N0Cmluc3RhbGxhdGlvbnMgYW5kIG1vc3Qgam9i cyBsZWF2ZSB0aGUgaG9zdCBpbiBhIGdvb2Qgc3RhdGUuCgpTbyB0aGVyZSBpcyBhbiBvcHBvcnR1 bml0eSBmb3IgYSB3b3J0aHdoaWxlIGltcHJvdmVtZW50IGluIHRocm91Z2hwdXQKYnkgYXJyYW5n aW5nIGZvciB0ZXN0IGhvc3QgcmV1c2Ugd2l0aGluIGEgZmxpZ2h0LgoKb3NzdGVzdCBhbHJlYWR5 IHVuZGVyc3RhbmRzIHNoYXJpbmcgZm9yIHRoZSBwdXJwb3NlIG9mIGJ1aWxkczsgbWFraW5nCml0 IHNoYXJlIGZvciB0ZXN0cywgdW5kZXIgdGhlIHJpZ2h0IGNvbmRpdGlvbnMsIGlzIGEgbW9kZXJh dGVseQpleHRlbnNpdmUsIGJ1dCBzdHJhaWdodGZvcndhcmQsIHRhc2suCgoKQWJvdXQgNCUgb2Yg dGhlIGNhcGFjaXR5IGlzIHVzZWQgZm9yIGJ1aWxkcywgYnV0IGEgZnVydGhlciA1JSBvciBzbwpw cmVwYXJpbmcgYSBib3ggdG8gYmUgYSBidWlsZCBob3N0LiAgV2UgY291bGQgcHJvYmFibHkgb3B0 aW1pc2UgdGhpcwpieSBwcm92aWRpbmcgYSBmZXcgZGVkaWNhdGVkIGJ1aWxkIGhvc3RzLCBhcyB0 aGlzIHdvdWxkIHJlc3VsdCBpbgpmZXdlciByZWluc3RhbGxzLiAgV2Ugc2hvdWxkIGNvbnNpZGVy IHRoaXMgaW4gb3VyIG5leHQgcm91bmQgb2YKcHJvdmlzaW9uaW5nLgoKKFRoZSByZXBvcnQgYWxz byBjbGFpbXMgdGhhdCBhYm91dCAzJSBvZiB0aGUgY2FwYWNpdHkgaXMgInVudXNlZCIgd2hlbgph IG1hY2hpbmUgaXMgY29uZmlndXJlZCBmb3IgYnVpbGRpbmcsIGFuZCBvc3N0ZXN0IHdvdWxkIGJl IHdpbGxpbmcgaW4KcHJpbmNpcGxlIHRvIHJ1biBtdWx0aXBsZSBkaWZmZXJlbnQgYnVpbGRzIGF0 IG9uY2UsIGJ1dCBmb3Igc2NoZWR1bGluZwpyZWFzb25zIG9ubHkgb25lIGJ1aWxkIGlzIHJ1bm5p bmcuKQoKCk90aGVyIGludGVyZXN0aW5nIHJlc3VsdHM6IGFib3V0IDMtNCUgb2YgdGhlIHRpbWUg aXMgc3BlbnQgZG9pbmcKYmlzZWN0aW9ucy4KCkxvb2tpbmcgYXQgdGhlIGJyYW5jaGVzOiB0aGUg eGVuLXVuc3RhYmxlLXNtb2tlIGZsaWdodHMgYXJlIGFib3V0IDMlLgp4ZW4tdW5zdGFibGUgaXRz ZWxmIGNvbnN1bWVzIHRoZSBidWxrIG9mIHRoZSBjYXBhY2l0eSwgYXQgYWJvdXQgMjglLgpxZW11 LW1haW5saW5lICh3aGljaCB1cGRhdGVzIGZyZXF1ZW50bHkpIGlzIHRoZSBuZXh0IGJpZ2dlc3Qu CgoKVGhlIGdyYXBocyBhcmUgZ2VuZXJhdGVkIHVzaW5nIHB5dGhvbjMtbWF0cGxvdGxpYiBhbmQg c2hvd24gb24gbXkKd29ya3N0YXRpb24ncyBYIGRpc3BsYXkuICBJIGhhdmVuJ3QgYXJyYW5nZWQg Zm9yIHRoZW0gdG8gYmUgb3V0cHV0IGFzClBvc3RTY3JpcHQgb3IgcG5nIG9yIGFueXRoaW5nIC0g aW5zdGVhZCBJIGhhdmUgcHV0IGEgc2NyZWVuc2hvdCBoZXJlOgoKIGh0dHA6Ly94ZW5iaXRzLnhl bi5vcmcvcGVvcGxlL2l3ai8yMDE2L21nLXJlcG9ydC1ob3N0LXVzYWdlLjIwMTYtMDgtMjUucG5n CgpJJ20gYWZyYWlkIHRoYXQgdGhpcyBpcyBsaWtlbHkgdG8gYmUgcmF0aGVyIG9wYXF1ZSB1bmxl c3MgeW91IGxvb2sgYXQKdGhlIHNvdXJjZSBjb2RlIChpbiBvc3N0ZXN0LCBhbmQgdGhlIHBhdGNo IGJlbG93KSB0byBzZWUgd2hhdCB0aGUKdmFyaW91cyBjYXRlZ29yaWVzIG1lYW4uICBJIGFsc28g aGF2ZW4ndCBib3RoZXJlZCBwcmV0dGlmeWluZyB0aGUKZm9ybWF0dGluZywgYmV5b25kIHdoYXQn cyBuZWVkZWQgdG8gYmUgYWJsZSB0byByZWFkIHRoZSBjaGFydHMuCgoKVGhhbmtzIGFsbCBmb3Ig eW91ciBhdHRlbnRpb24uCgpJYW4uCgoKCkZyb20gNjg5NWM4NGQ4OTBhMmRiOWY2OGU3OTk0MTk4 NzgzYzBlNDQ2NTE4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSWFuIEphY2tzb24g PGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkRhdGU6IFRodSwgMjUgQXVnIDIwMTYgMTU6NTk6 MjggKzAxMDAKU3ViamVjdDogW09TU1RFU1QgUEFUQ0hdIG1nLXJlcG9ydC1ob3N0LXVzYWdlLSo6 IE5ldyBhZG1pbiBkZWJ1Z2dpbmcgdG9vbHMKClRoZXNlIHR3byB0b29scyBjYW4gYmUgdXNlZCB0 byBkaWcgaW50byB0aGUgb3NzdGVzdCBoaXN0b3J5IGFuZApwcm9kdWNlIHNvbWUgZ3JhcGhzIG9m IHdoYXQgdGhlIHN5c3RlbSBpcyBzcGVuZGluZyBpdHMgcmVzb3VyY2VzIG9uLgoKU2lnbmVkLW9m Zi1ieTogSWFuIEphY2tzb24gPElhbi5KYWNrc29uQGV1LmNpdHJpeC5jb20+Ci0tLQogbWctcmVw b3J0LWhvc3QtdXNhZ2UtY29sbGVjdCB8IDQ0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBtZy1yZXBvcnQtaG9zdC11c2FnZS10dXBsZXMgIHwgMTI0ICsrKysr KysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCA1NjcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUg MTAwNzU1IG1nLXJlcG9ydC1ob3N0LXVzYWdlLWNvbGxlY3QKIGNyZWF0ZSBtb2RlIDEwMDc1NSBt Zy1yZXBvcnQtaG9zdC11c2FnZS10dXBsZXMKCmRpZmYgLS1naXQgYS9tZy1yZXBvcnQtaG9zdC11 c2FnZS1jb2xsZWN0IGIvbWctcmVwb3J0LWhvc3QtdXNhZ2UtY29sbGVjdApuZXcgZmlsZSBtb2Rl IDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYjQzYzVmCi0tLSAvZGV2L251bGwKKysrIGIvbWctcmVw b3J0LWhvc3QtdXNhZ2UtY29sbGVjdApAQCAtMCwwICsxLDQ0MyBAQAorIyEvdXNyL2Jpbi9wZXJs IC13CisKKyMgVGhpcyBpcyBwYXJ0IG9mICJvc3N0ZXN0IiwgYW4gYXV0b21hdGVkIHRlc3Rpbmcg ZnJhbWV3b3JrIGZvciBYZW4uCisjIENvcHlyaWdodCAoQykgMjAwOS0yMDE2IENpdHJpeCBJbmMu CisjIAorIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZl cm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMgCisjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisjIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorIyAKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisKK3VzZSBz dHJpY3QgcXcodmFycyk7CisKK3VzZSBEQkk7Cit1c2UgT3NzdGVzdDsKK3VzZSBJTzo6SGFuZGxl OwordXNlIFBPU0lYOwordXNlIEpTT047Cit1c2UgRGF0YTo6RHVtcGVyOwordXNlIENhcnA7CisK KyRTSUd7X19XQVJOX199ID0gc3ViIHsgY29uZmVzcyAkX1swXTsgfTsKKworbXkgJWhoOyAjIGhv c3QgaGlzdG9yeQorIyBjb250YWlucyBhIGxpc3Qgb2YgcGhhc2VzCisjIGEgcGhhc2UgaXMgInRo aXMgaG9zdCB3YXMgdXNlZCBpbiB0aGlzIHdheSBkdXJpbmcgdGhpcyBwZXJpb2QiCisjIGluaXRp YWxseSBwaGFzZXMgbWF5IG92ZXJsYXAgaW4gY29tcGxleCB3YXlzCisjCisjICRoaHtIT1NUfVtd e0Zyb219ICAgID0gdGltZV90CisjICRoaHtIT1NUfVtde1RvfSAgICAgID0gdGltZV90CisjICRo aHtIT1NUfVtde0tWfXtLZXl9ID0gVkFMVUUKKyMKKyMgS2V5cyBhcmUgdGhlIGRiIHJlc3VsdHMg cGx1cyAoY2FwcyBhcmUgc3ludGggb25lcyk6CisjCisjICAgUFJFUCAgICAgICAgICA9ICBib29s aXNoOiAxIG1lYW5zIHdhcyBob3N0IGluc3RhbGwgb3IgaC1idWlsZC1wcmVwCisjICAgU0hBUkVB QkxFICAgICA9ICBib29saXNoOiAxIG1lYW5zIHdhcyBzaGFyYWJsZSBkdXJpbmcgdGhpcyBwZXJp b2QKKyMKKyMgQ2FsY3VsYXRlZCBkdXJpbmcgY29uc29saWRhdGU6CisjICAgU0hBUkVTICAgICAg ICA9ICAxIG9yIDMgKG9yICdzaGFyZWQgbWF4IHRhc2tzJyBob3N0IHByb3ApCisjICAgSURMRSAg ICAgICAgICA9ICAxIG9yIHVuZGVmCisjCisjIENvbWJpbmF0aW9ucyBvZiB0aGUgYWJvdmUKKyMg ICBPVkVSQUxMICAgICAgSURMCisjICAgICAgICAgICAgICAgIFRFU1QtUFJFUCBURVNUCisjICAg ICAgICAgICAgICAgIEJVSUxELVBSRVAgQlVJTEQgQlVJTEQtSURMRSAgICBJRExFLVBSRVBQRUQK KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIGlkbGUgc2hhcmUgIF4gYWxsIHNo YXJlcyBpZGxlCisjCisjICAgV0VJR0hUICAgICAgICAxLjAvU0hBUkVTICAob3IgMS4wKQorCitv dXIgJGR1cmF0aW9uID0gMzEgKiA4NjQwMDsKK291ciAkbWF4X2pvYl9sZW4gPSA4NjQwMCAqIDc7 CitvdXIgJHByb2dyZXNzID0gMTsKK291ciAkZGVidWcgPSAwOworCitjc3JlYWRjb25maWcoKTsK Kworb3BlbiBERUJVRywgIj4gL2Rldi9udWxsIiBvciBkaWUgJCE7CitvcGVuIFBST0dSLCAiPiYg U1RERVJSIiBvciBkaWUgJCE7CisKK3doaWxlIChAQVJHVikgeworICAgICRfID0gc2hpZnQgQEFS R1Y7CisgICAgbGFzdCBpZiBtL14tLT8kLzsKKyAgICB3aGlsZSAobS9eLS4vKSB7CisJaWYgKHMv Xi1ELy0vKSB7CisJICAgIG9wZW4gREVCVUcsICI+JiBTVERFUlIiIG9yIGRpZSAkITsKKwkgICAg b3BlbiBQUk9HUiwgIj4gL2Rldi9udWxsIiBvciBkaWUgJCE7CisJICAgICRkZWJ1ZyA9IDE7CisJ fSBlbHNpZiAocy9eLXEvLS8pIHsKKwkgICAgb3BlbiBQUk9HUiwgIj4gL2Rldi9udWxsIiBvciBk aWUgJCE7CisJfSBlbHNpZiAocy9eLWwoXGQrKShbeXxtfHd8ZF0pJC8vKSB7CisJICAgICRkdXJh dGlvbiA9ICQxICogKCQyIGVxICd5JyA/ICAgIDM2NiA6CisJCQkgICAgICAkMiBlcSAnbScgPyAg ICAgMzEgOgorCQkJICAgICAgJDIgZXEgJ3cnID8gICAgICA3IDoKKwkJCSAgICAgICAgICAgICAg ICAgICAgICAgMSkgKiA4NjQwMDsKKwl9IGVsc2lmIChzL14tLW1heC1qb2ItbGVuPShcZCspJC8v KSB7CisJICAgICRtYXhfam9iX2xlbiA9ICQxOworCX0gZWxzZSB7CisJICAgIGRpZSAiJF8gPyI7 CisJfQorICAgIH0KK30KKworUFJPR1ItPmF1dG9mbHVzaCgxKTsKKworb3VyICRjdXRvZmZfZW5k ID0gdGltZSAtICRtYXhfam9iX2xlbjsKK291ciAkY3V0b2ZmX3N0YXJ0ID0gJGN1dG9mZl9lbmQg LSAkZHVyYXRpb247CisKK3ByaW50ZiBTVERFUlIgImN1dG9mZiBzdGFydDogJXNcbiIsIHNob3df YWJzX3RpbWUgJGN1dG9mZl9zdGFydDsKK3ByaW50ZiBTVERFUlIgImN1dG9mZiBlbmQ6ICAgJXNc biIsIHNob3dfYWJzX3RpbWUgJGN1dG9mZl9lbmQ7CisKK291ciAkbGFzdF9wcm9ncmVzcyA9IDA7 CisKK3N1YiBwcm9ncmVzczEgeworICAgIHByaW50IERFQlVHICJAX1xuIiBpZiAkZGVidWc7Cisg ICAgcHJpbnRmIFBST0dSICIlLTc5Ljc5c1xyIiwgIkBfIjsKKyAgICAkbGFzdF9wcm9ncmVzcyA9 IHRpbWU7Cit9CisKK3N1YiBwcm9ncmVzcyB7CisgICAgcmV0dXJuIHVubGVzcyB0aW1lID4gJGxh c3RfcHJvZ3Jlc3M7CisgICAgcHJpbnQgREVCVUcgIkBfXG4iIGlmICRkZWJ1ZzsKKyAgICBsb2Nh bCAkZGVidWcgPSAwOworICAgIHByb2dyZXNzMSBAXzsKK30KKworbXkgJHByb3BxID0gZGJfcHJl cGFyZSg8PEVORCk7CisgICAgU0VMRUNUIHZhbAorICAgICAgRlJPTSByZXNvdXJjZV9wcm9wZXJ0 aWVzCisgICAgIFdIRVJFIHJlc3R5cGU9J2hvc3QnCisgICAgICAgQU5EIHJlc25hbWU9PworICAg ICAgIEFORCBuYW1lPT8KK0VORAorCitzdWIgY29sbGVjdGRhdGEgKCkgeworICAgIG15ICRzdGFy dHEgPSBkYl9wcmVwYXJlKDw8RU5EKTsKKyAgICAgICAgU0VMRUNUICoKKyAgICAgICAgICBGUk9N IGZsaWdodHMKKyAgICAgICAgIFdIRVJFIGZsaWdodHMuc3RhcnRlZCA+PSA/CisgICAgICBPUkRF UiBCWSBmbGlnaHQgYXNjCisgICAgICAgICBMSU1JVCAxCitFTkQKKyAgICAkc3RhcnRxLT5leGVj dXRlKCRjdXRvZmZfc3RhcnQgLSAkbWF4X2pvYl9sZW4pOworICAgIG15ICgkbWluZmxpZ2h0KSA9 ICRzdGFydHEtPmZldGNocm93X2FycmF5KCk7CisgICAgZGllIHVubGVzcyBkZWZpbmVkICRtaW5m bGlnaHQ7CisKKyAgICBwcm9ncmVzczEgIm1pbmZsaWdodCAkbWluZmxpZ2h0IjsKKworICAgIG15 ICRqb2JzcSA9IGRiX3ByZXBhcmUoPDxFTkQpOworICAgICAgICBTRUxFQ1QgZmxpZ2h0cy5mbGln aHQgICAgZmxpZ2h0LAorICAgICAgICAgICAgICAgZmxpZ2h0cy5ibGVzc2luZyAgYmxlc3Npbmcs CisgICAgICAgICAgICAgICBmbGlnaHRzLmJyYW5jaCAgICBicmFuY2gsCisgICAgICAgICAgICAg ICBmbGlnaHRzLmludGVuZGVkICBpbnRlbmRlZCwKKyAgICAgICAgICAgICAgIGFsbG9jLmZpbmlz aGVkICAgIGFsbG9jX2ZpbmlzaGVkLAorICAgICAgICAgICAgICAgam9icy5qb2IgICAgICAgICAg am9iCisgICAgICAgICAgRlJPTSBmbGlnaHRzCisgICAgICAgICAgSk9JTiBqb2JzIFVTSU5HIChm bGlnaHQpCisgICAgICAgICAgSk9JTiBzdGVwcyBhbGxvYyBVU0lORyAoZmxpZ2h0LGpvYikKKyAg ICAgICAgIFdIRVJFIGZsaWdodHMuZmxpZ2h0ID49ID8KKyAgICAgICAgICAgQU5EIGFsbG9jLnN0 ZXA9J3RzLWhvc3RzLWFsbG9jYXRlJyAKKyAgICAgICAgICAgQU5EIGFsbG9jLnN0YXR1cz0ncGFz cycKKwkgICBBTkQgYWxsb2MuZmluaXNoZWQgSVMgTk9UIE5VTEwKK0VORAorCisgICAgbXkgJHBy ZXBxID0gZGJfcHJlcGFyZSg8PEVORCk7CisgICAgICAgIFNFTEVDVCBmaW5pc2hlZCAgICBwcmVw X2ZpbmlzaGVkLAorICAgICAgICAgICAgICAgc3RhdHVzICAgICAgcHJlcF9zdGF0dXMKKyAgICAg ICAgICBGUk9NIHN0ZXBzIHByZXAKKyAgICAgICAgIFdIRVJFIGZsaWdodD0/IGFuZCBqb2I9Pwor ICAgICAgICAgICBBTkQgcHJlcC5maW5pc2hlZCBJUyBOT1QgTlVMTAorICAgICAgICAgICBBTkQg KHByZXAuc3RlcD0ndHMtaG9zdC1idWlsZC1wcmVwJworICAgICAgICAgICAgT1IgIHByZXAuc3Rl cCBsaWtlICd0cy1ob3N0LWluc3RhbGwlJykKKyAgICAgIE9SREVSIEJZIHN0ZXBubyBERVNDCisg ICAgICAgICBMSU1JVCAxCitFTkQKKworICAgIG15ICRob3N0c3EgPSBkYl9wcmVwYXJlKDw8RU5E KTsKKyAgICAgICAgU0VMRUNUIHZhbCwgc3ludGgKKyAgICAgICAgICBGUk9NIHJ1bnZhcnMKKyAg ICAgICAgIFdIRVJFIGZsaWdodD0/IGFuZCBqb2I9PworICAgICAgICAgICBBTkQgKG5hbWUgbGlr ZSAnJV9ob3N0JyBvciBuYW1lPSdob3N0JykKK0VORAorCisgICAgbXkgJGZpbmlzaHEgPSBkYl9w cmVwYXJlKDw8RU5EKTsKKyAgICAgICAgU0VMRUNUIG1heChmaW5pc2hlZCkgQVMgZmluaXNoZWQK KyAgICAgICAgICBGUk9NIHN0ZXBzCisgICAgICAgICBXSEVSRSBmbGlnaHQ9PyBhbmQgam9iPT8K K0VORAorCisgICAgcHJvZ3Jlc3MxICJtaW5mbGlnaHQgJG1pbmZsaWdodCBleGVjdXRpbmcuLi4i OworICAgICRqb2JzcS0+ZXhlY3V0ZSgkbWluZmxpZ2h0KTsKKworICAgIHByb2dyZXNzMSAibWlu ZmxpZ2h0ICRtaW5mbGlnaHQgZmV0Y2hpbmcuLi4iOworICAgICRsYXN0X3Byb2dyZXNzID0gMDsg IyBmb3JjZXMgbmV4dCBwcm9ncmVzcyBtZXNzYWdlIHRvIGJlIHByaW50ZWQKKworICAgIHdoaWxl IChteSAkam9icm93ID0gJGpvYnNxLT5mZXRjaHJvd19oYXNocmVmKCkpIHsKKwlteSBAZmogPSAo JGpvYnJvdy0+e2ZsaWdodH0sICRqb2Jyb3ctPntqb2J9KTsKKwlwcm9ncmVzcyAiUFJPQ0VTU0lO RyBAZmoiOworCW15IEBrdnMgPSAoJSRqb2Jyb3cpOworCisJJGZpbmlzaHEtPmV4ZWN1dGUoQGZq KTsKKwlteSAoJGZpbmlzaCkgPSAkZmluaXNocS0+ZmV0Y2hyb3dfYXJyYXkoKTsKKwlkaWUgIkBm aiA/IiB1bmxlc3MgZGVmaW5lZCAkZmluaXNoOworCisJJGhvc3RzcS0+ZXhlY3V0ZShAZmopOwor CW15ICRob3N0cyA9ICRob3N0c3EtPmZldGNoYWxsX2FycmF5cmVmKHsgfSk7CisKKwlteSAkcmVj b3JkX3BoYXNlID0gc3ViIHsKKwkgICAgbXkgKCRzdGFydCwkZmluaXNoLEB4a3ZzKSA9IEBfOwor CSAgICAkZmluaXNoID0gJHN0YXJ0IGlmICRmaW5pc2ggPCAkc3RhcnQ7ICMgd3RmCisJICAgIGZv cmVhY2ggbXkgJGhvc3Ryb3cgKEAkaG9zdHMpIHsKKwkJbXkgJGhuID0gJGhvc3Ryb3ctPnt2YWx9 OworCQlwcmludCBERUJVRyAiIHBoYXNlICRobiAkc3RhcnQuLiRmaW5pc2ggQGt2cyBAeGt2c1xu IjsKKwkJcHVzaCBAeyAkaGh7JGhufSB9LCB7CisJCSAgICBGcm9tID0+ICRzdGFydCwKKyAgICAg ICAgICAgICAgICAgICAgVG8gPT4gJGZpbmlzaCwKKyAgICAgICAgICAgICAgICAgICAgS1YgPT4g eyBAa3ZzLCBAeGt2cywgaG9zdF9maXhlZCA9PiAhJGhvc3Ryb3ctPntzeW50aH0gfSwKKyAgICAg ICAgICAgICAgICB9OworCSAgICB9CisJfTsKKworCSRwcmVwcS0+ZXhlY3V0ZShAZmopOworCW15 ICRwcmVwcm93ID0gJHByZXBxLT5mZXRjaHJvd19oYXNocmVmKCk7CisJaWYgKGRlZmluZWQgJHBy ZXByb3cpIHsKKwkgICAgcHVzaCBAa3ZzLCAlJHByZXByb3c7CisJICAgIGlmICgoZGVmaW5lZCAk cHJlcHJvdy0+e3ByZXBfc3RhdHVzfSkgJiYKKwkJJHByZXByb3ctPntwcmVwX3N0YXR1c30gZXEg J3Bhc3MnKSB7CisJCSRyZWNvcmRfcGhhc2UtPigkam9icm93LT57YWxsb2NfZmluaXNoZWR9LAor CQkJCSRwcmVwcm93LT57cHJlcF9maW5pc2hlZH0sCisJCQkJJ1BSRVAnID0+IDEsCisJCQkJJ1NI QVJFQUJMRScgPT4gMCk7CisJCSRyZWNvcmRfcGhhc2UtPigkcHJlcHJvdy0+e3ByZXBfZmluaXNo ZWR9LAorCQkJCSRmaW5pc2gsCisJCQkJJ1BSRVAnID0+IDAsCisJCQkJJ1NIQVJFQUJMRScgPT4g MSk7CisJICAgIH0gZWxzZSB7CisJCSMgdGhlcmUgd2FzIGEgcHJlcCBhdHRlbXB0IGJ1dCBpdCBk aWRuJ3QgcGFzcworCQkkcmVjb3JkX3BoYXNlLT4oJGpvYnJvdy0+e2FsbG9jX2ZpbmlzaGVkfSwK KwkJCQkkZmluaXNoLAorCQkJCSdQUkVQJyA9PiAxLAorCQkJCSdTSEFSRUFCTEUnID0+IDApOwor CSAgICB9CisJfSBlbHNlIHsKKwkgICAgIyBzb21ldGhpbmcgc3RyYW5nZSwgd2VsbCwgZmluZQor CSAgICAkcmVjb3JkX3BoYXNlLT4oJGpvYnJvdy0+e2FsbG9jX2ZpbmlzaGVkfSwKKwkJCSAgICAk ZmluaXNoLAorCQkJICAgIFBSRVAgPT4gMCwKKwkJCSAgICBTSEFSRUFCTEUgPT4gMCk7CisJfQor ICAgIH0KK30KKworc3ViIGNvbnNvbGlkYXRlX2hvc3QgKCQpIHsKKyAgICBteSAoJGhvc3RuYW1l KSA9IEBfOworCisgICAgcHJvZ3Jlc3MxICJob3N0ICRob3N0bmFtZSI7CisKKyAgICAkcHJvcHEt PmV4ZWN1dGUoJGhvc3RuYW1lLCAnc2hhcmVkIG1heCB0YXNrcycpOworICAgIG15ICgkbWF4X3No YXJlcykgPSAkcHJvcHEtPmZldGNocm93X2FycmF5KCk7CisgICAgJG1heF9zaGFyZXMgfHw9IDM7 CisKKyAgICBwcmludCBERUJVRyAiaG9zdCAkaG9zdG5hbWUgbWF4X3NoYXJlcz0kbWF4X3NoYXJl c1xuIjsKKworICAgIHByaW50IERFQlVHICJob3N0ICRob3N0bmFtZSBzb3J0aW5nXG4iOworCisg ICAgbXkgQHNvcnRlZCA9IHNvcnQgeyAkYS0+e0Zyb219IDw9PiAkYi0+e0Zyb219IH0gQHsgJGho eyRob3N0bmFtZX0gfTsKKyAgICBteSBAb3V0OworICAgICRoaHskaG9zdG5hbWV9ID0gXEBvdXQ7 CisKKyAgICBwcmludCBERUJVRyAiaG9zdCAkaG9zdG5hbWUgY2hvcHBpbmdcbiI7CisKKyAgICB3 aGlsZSAoQHNvcnRlZCkgeworCW15ICRzdWJwaGFzZV9zdGFydCA9ICRzb3J0ZWRbMF17RnJvbX07 CisJbXkgJHN1YnBoYXNlX2VuZCA9ICRzb3J0ZWRbMF17VG99OworCisJIyBXZSBjb21wdXRlIHRo ZSBuZXh0IHN1YnBoYXNlIHBlcmlvZCwgYW5kIGhvdyBtYW55IG9mIHRoZQorCSMgaW5jb21pbmcg cGhhc2VzIG92ZXJsYXAgd2l0aCBpdC4KKwkjCisJIyBUaGVyZSBhcmUgb25lIG9yIG1vcmUgcGhh c2VzIHdoaWNoIHN0YXJ0IGF0ICRzdWJwaGFzZV9zdGFydC4KKwkjIEl0IGlzIGV4YWN0bHkgdGhl c2UgcGhhc2VzIHdoaWNoIG9jY3VyIGluIHRoZSBzdWJwaGFzZS4KKwkjCisJIyBUaGUgc3VicGhh c2UgZW5kcyB3aGVuIGVpdGhlcjogb25lIG9mIHRob3NlIHN1YnBoYXNlcyBlbmRzLAorCSMgb3Ig YSBzdWJzZXF1ZW50IHN1YnBoYXNlIGJlZ2lucworCisJIyBXZSBmaWd1cmUgb3V0IHdoZW4gdGhl IG5leHQgc3VicGhhc2UgCisKKwlteSAkZWF0X3BoYXNlcyA9IDA7CisJbXkgJG5leHRfZXZlbnQg PSAkc3VicGhhc2VfZW5kOworCisJZm9yIChteSAkaT0wOyAkaTxAc29ydGVkOyAkaSsrKSB7CisJ ICAgIG15ICRjYW5kX3BoYXNlID0gJHNvcnRlZFskaV07CisKKwkgICAgbGFzdCBpZiAkY2FuZF9w aGFzZS0+e0Zyb219ID4gJHN1YnBoYXNlX2VuZDsKKwkgICAgIyAuLi4gd2UgYXJlIHdlbGwgYmV5 b25kIHRoZSBzdWJwaGFzZSB0aGVuCisKKwkgICAgaWYgKCRjYW5kX3BoYXNlLT57RnJvbX0gPT0g JHN1YnBoYXNlX3N0YXJ0KSB7CisJCSRlYXRfcGhhc2VzKys7CisJCSRuZXh0X2V2ZW50ID0gJGNh bmRfcGhhc2UtPntUb307CisJICAgIH0gZWxzZSB7CisJCSRjYW5kX3BoYXNlLT57RnJvbX0gPiAk c3VicGhhc2Vfc3RhcnQgb3IgZGllOworCQkkbmV4dF9ldmVudCA9ICRjYW5kX3BoYXNlLT57RnJv bX07CisJICAgIH0KKwkgICAgJHN1YnBoYXNlX2VuZCA9ICRuZXh0X2V2ZW50IGlmICRuZXh0X2V2 ZW50IDwgJHN1YnBoYXNlX2VuZDsKKwl9CisKKwlwcm9ncmVzcyBzcHJpbnRmICJzdWJwaGFzZSAl LTIwcyAlMTVkICUxNWQgJTNkIiwKKwkgICAgJGhvc3RuYW1lLCAkc3VicGhhc2Vfc3RhcnQsICRz dWJwaGFzZV9lbmQsICRlYXRfcGhhc2VzOworCisJbXkgQHNlY29uZGhhbHZlczsKKwlteSBAc3Vi cGhhc2VzOworCWZvciAobXkgJGk9MDsgJGk8JGVhdF9waGFzZXM7ICRpKyspIHsKKwkgICAgbXkg JGVhdGluZyA9IHNoaWZ0IEBzb3J0ZWQ7CisJICAgIGRpZSB1bmxlc3MgJGVhdGluZy0+e0Zyb219 ID09ICRzdWJwaGFzZV9zdGFydDsKKwkgICAgZGllIGlmICRlYXRpbmctPntUb30gPCAkc3VicGhh c2VfZW5kOworCSAgICBpZiAoJGVhdGluZy0+e1RvfSA+ICRzdWJwaGFzZV9lbmQpIHsKKwkJIyBF YWNoIG9mIHRoZSBpbmNvbWluZyBwaGFzZXMgd2hpY2ggc3RhcnQgYXQgdGhlCisJCSMgc3VicGhh c2UgcGVyaW9kIGFuZCBmaW5pc2ggYWZ0ZXIgaXRzIGVuZCBpcyBicm9rZW4KKwkJIyB1cCBpbnRv IHR3byBuZXcgcGhhc2VzOiBvbmUgd2hpY2ggZ29lcyBpbnRvIHRoZQorCQkjIG91dHB1dC4KKwkJ cHVzaCBAc2Vjb25kaGFsdmVzLCB7CisgICAgICAgICAgICAgICAgICAgIEZyb20gPT4gJHN1YnBo YXNlX2VuZCwKKwkJICAgIFRvID0+ICRlYXRpbmctPntUb30sCisgICAgICAgICAgICAgICAgICAg IEtWID0+IHsgJXsgJGVhdGluZy0+e0tWfSB9IH0sCisJICAgICAgICB9OworCQkkZWF0aW5nLT57 VG99ID0gJHN1YnBoYXNlX2VuZDsKKwkgICAgfQorCSAgICBwdXNoIEBzdWJwaGFzZXMsICRlYXRp bmc7CisJfQorCXVuc2hpZnQgQHNvcnRlZCwgQHNlY29uZGhhbHZlczsKKworCSMgU2VlIGlmIHdl IGFyZSBzaGFyaW5nLCBhbmQgaWYgc28gY2FsY3VsYXRlIHRoZSBzaGFyaW5nCisJIyBmcmFjdGlv biBhbmQgYWxzbyBwZXJoYXBzIGludmVudCBhbiBpZGxlIHNoYXJlLiAgV2UgZG8gdGhpcworCSMg aGVyZSBzbyB0aGF0IHdlIGFyZSBlZGl0aW5nIGluIEBvdXQuICBFZGl0aW5nIGluIEBzb3J0ZWQK KwkjIHdvdWxkIGJlIHdyb25nIGJlY2F1c2UgaXQgd291bGQgYWZmZWN0IG90aGVyIHN1YnBoYXNl cy4KKworCW15ICRhbGxfc2hhcmVzID0gMTsKKwlteSAkbWF4X3NoYXJlc19ub3cgPSAxOworCWZv cmVhY2ggbXkgJHNwIChAc3VicGhhc2VzKSB7CisJICAgICRhbGxfc2hhcmVzICYmPSAkc3AtPntL Vn17U0hBUkVBQkxFfTsKKwkgICAgaWYgKGRlZmluZWQgJHNwLT57S1Z9e2pvYn0gJiYKKwkJJHNw LT57S1Z9e2pvYn0gPX4gbS9eYnVpbGQvKSB7CisJCSRtYXhfc2hhcmVzX25vdyA9ICRtYXhfc2hh cmVzOworCSAgICB9CisJfQorCW15IEBzcDBrdnMgPSAleyAkc3VicGhhc2VzWzBde0tWfSB9Owor CisJaWYgKCRhbGxfc2hhcmVzKSB7CisJICAgIGlmIChAc3VicGhhc2VzID4gJG1heF9zaGFyZXNf bm93KSB7CisJCXByb2dyZXNzMSAnJzsKKwkJcHJpbnQgU1RERVJSICJ3YXJuaW5nOiAkaG9zdG5h bWUiLgorCQkgICAgIiAkc3VicGhhc2Vfc3RhcnQuLiRzdWJwaGFzZV9lbmQ6Ii4KKwkJICAgICIg bXNuPSRtYXhfc2hhcmVzX25vdyAhPSAiLihzY2FsYXIgQHN1YnBoYXNlcykuIlxuIjsKKwkJJG1h eF9zaGFyZXNfbm93ID0gQHN1YnBoYXNlczsKKwkgICAgfQorCisJICAgIGZvcmVhY2ggbXkgJHNw IChAc3VicGhhc2VzKSB7CisJCSRzcC0+e0tWfXtTSEFSRVN9ID0gJG1heF9zaGFyZXNfbm93Owor CSAgICB9CisKKwkgICAgd2hpbGUgKEBzdWJwaGFzZXMgPCAkbWF4X3NoYXJlc19ub3cpIHsKKwkJ cHVzaCBAc3VicGhhc2VzLCB7CisgICAgICAgICAgICAgICAgICAgIEZyb20gPT4gJHN1YnBoYXNl X3N0YXJ0LAorCQkgICAgVG8gPT4gJHN1YnBoYXNlX2VuZCwKKwkJICAgIEtWID0+IHsgQHNwMGt2 cywgU0hBUkVTID0+ICRtYXhfc2hhcmVzX25vdywgSURMRSA9PiAxIH0sCisgICAgICAgICAgICAg ICAgfTsKKwkgICAgfQorCX0KKworCW15ICRuZXh0X3BoYXNlID0gJHNvcnRlZFswXTsKKwlpZiAo JG5leHRfcGhhc2UgJiYKKwkgICAgJG5leHRfcGhhc2UtPntGcm9tfSAhPSAkc3VicGhhc2VfZW5k KSB7CisJICAgICMgTmVlZCB0byBhZGQgYW4gaWRsZSBwaGFzZSwgdG8gYnJpZGdlIHRvIG5leHQg aW5jb21pbmcKKwkgICAgIyBwaGFzZS4KKwkgICAgZGllIHVubGVzcyAkbmV4dF9waGFzZS0+e0Zy b219ID4gJHN1YnBoYXNlX2VuZDsKKwkgICAgcHVzaCBAc3VicGhhc2VzLCB7CisJICAgICAgICBG cm9tID0+ICRzdWJwaGFzZV9lbmQsCisJICAgICAgICBUbyA9PiAkbmV4dF9waGFzZS0+e0Zyb219 LAorICAgICAgICAgICAgICAgIEtWID0+ICRhbGxfc2hhcmVzID8geyBAc3Awa3ZzLCBJRExFID0+ IDEgfSA6IHsgSURMRSA9PiAxIH0sCisgICAgICAgICAgICB9OworCX0KKworCWZvcmVhY2ggbXkg JHNwIChAc3VicGhhc2VzKSB7CisJICAgIG15ICRrdiA9ICRzcC0+e0tWfTsKKwkgICAgbXkgJGpr ID0gKAorCQkgICFkZWZpbmVkICRrdi0+e2pvYn0gICAgICAgICAgICAgID8gJycgICAgICAgICAg ICAgIDoKKwkJICAka3YtPntqb2J9ID1+IG0vXmJ1aWxkLyAgICAgICAgICA/ICdCVUlMRCcgICAg ICAgICA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdURVNUJworCQkpOworCSAgICAka3YtPntPVkVSQUxMfSA9CisJCSggJGt2LT57SURMRX0g PyAoICRrdi0+e1NIQVJFU30gICAgPyAiSURMRS1TSEFSRS0kamsiICAgOgorCQkJCSAgJGt2LT57 U0hBUkVBQkxFfSA/ICJJRExFLVBSRVBQRUQtJGprIiA6CisJCQkJICAgICAgICAgICAgICAgICAg ICAgIklETEUiICkgICAgICAgICAgIDoKKwkJICAka3YtPntQUkVQfSAgICAgICAgICAgICAgICAg ICAgICA/ICJQUkVQLSRqayIgICAgICAgICA6CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiJGprIgorCQkpOworCQkKKwkgICAgJGt2LT57V0VJR0hUfSA9CisJCTEuMCAv ICggJGt2LT57U0hBUkVTfSAvLyAxLjAgKTsKKwl9CisKKwlmb3JlYWNoIG15ICRzcCAoQHN1YnBo YXNlcykgeworCSAgICBteSBAa3ZzID0gbWFwIHsgIiRfPSRzcC0+e0tWfXskX30iIH0gc29ydCBr ZXlzICV7ICRzcC0+e0tWfSB9OworCSAgICBteSAkdCA9ICRzcC0+e1RvfSAtICRzcC0+e0Zyb219 OworCSAgICBwcmludGYgREVCVUcgIiBTUCAlcyAlNWQgJXMuLiVzICVza3ZzXG4iLAorCQkkaG9z dG5hbWUsICR0LCAkc3AtPntGcm9tfSwgJHNwLT57VG99LCAiQGt2cyI7CisgICAgICAgICAgICAk c3AtPntGcm9tfSA9ICRjdXRvZmZfc3RhcnQgaWYgJHNwLT57RnJvbX0gPCAkY3V0b2ZmX3N0YXJ0 OworCSAgICAkc3AtPntUb30gICA9ICRjdXRvZmZfZW5kICAgaWYgJHNwLT57VG99ICAgPiAkY3V0 b2ZmX2VuZDsKKwkgICAgbmV4dCB1bmxlc3MgJHNwLT57RnJvbX0gPCAkc3AtPntUb307CisJICAg IHB1c2ggQG91dCwgJHNwOworCX0KKyAgICB9CisgICAgcHJvZ3Jlc3MxICcnOworfQorCitzdWIg b3V0cHV0X2hvc3QgKCQpIHsKKyAgICBteSAoJGhuKSA9IEBfOworCisgICAgbXkgJGhvc3RmbGFn c3EgPSBkYl9wcmVwYXJlKDw8RU5EKTsKKyAgICAgICAgU0VMRUNUIGhvc3RmbGFnIGYKKyAgICAg ICAgICBGUk9NIGhvc3RmbGFncworICAgICAgICAgV0hFUkUgaG9zdG5hbWUgPSA/CitFTkQKKwor ICAgIG15ICVoaW5mbzsKKyAgICAkaG9zdGZsYWdzcS0+ZXhlY3V0ZSgkaG4pOworICAgIHdoaWxl IChteSAoJGYpID0gJGhvc3RmbGFnc3EtPmZldGNocm93X2FycmF5KCkpIHsKKwlpZiAoJGYgPX4g bS9eYmxlc3NlZC1yZWFsJC8pIHsKKwkgICAgJGhpbmZveydIT1NUX0JMRVNTRURfUkVBTCd9ID0g MTsKKwl9IGVsc2lmICgkZiA9fiBtL15hcmNoLSg/OmFtZDY0fGkzODYpJC8pIHsKKwkgICAgJGhp bmZveydIT1NUX0FSQ0hfR1JPVVAnfSA9ICd4ODYnOworCX0gZWxzaWYgKCRmID1+IG0vXmFyY2gt YXJtLykgeworCSAgICAkaGluZm97J0hPU1RfQVJDSF9HUk9VUCd9ID0gJ2FybSc7CisJfQorICAg IH0KKworICAgIG15ICRoZCA9ICRoaHskaG59OworICAgIGZvcmVhY2ggbXkgJGUgKEAkaGQpIHsK KwlteSAkZHVyYXRpb24gPSAkZS0+e1RvfSAtICRlLT57RnJvbX07CisJbXkgJG9iaiA9IHsgJXsg JGUtPntLVn0gfSwgJWhpbmZvIH07CisJZGVsZXRlICRvYmotPnskX30gZm9yZWFjaCBxdyhmbGln aHQgYWxsb2NfZmluaXNoZWQgcHJlcF9maW5pc2hlZCk7CisJJG9iai0+e0hPU1ROQU1FfSA9ICRo bjsKKwkkb2JqLT57RFVSQVRJT059ID0gJGR1cmF0aW9uOworCSRvYmotPntXRFVSQVRJT059ID0g JG9iai0+e1dFSUdIVH0gKiAkb2JqLT57RFVSQVRJT059OworCXByaW50IGVuY29kZV9qc29uKCRv YmopLCJcbiIgb3IgZGllICQhOworICAgIH0KK30KKworY29sbGVjdGRhdGEoKTsKKworZm9yZWFj aCBteSAkaCAoc29ydCBrZXlzICVoaCkgeworIyAgICBwcmludCBERUJVRyAiXG4tLS0tLS0tLS0t LS0tLS0tLS0tLSAkaCAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKyMgICAgcHJpbnQgREVCVUcg IlxuIixEdW1wZXIoJGhoeyRofSk7CisgICAgY29uc29saWRhdGVfaG9zdCgkaCk7CisjICAgIHBy aW50IERFQlVHICJcbiIsRHVtcGVyKCRoaHskaH0pOworICAgIG91dHB1dF9ob3N0KCRoKTsKK30K ZGlmZiAtLWdpdCBhL21nLXJlcG9ydC1ob3N0LXVzYWdlLXR1cGxlcyBiL21nLXJlcG9ydC1ob3N0 LXVzYWdlLXR1cGxlcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zNzVkYTg4 Ci0tLSAvZGV2L251bGwKKysrIGIvbWctcmVwb3J0LWhvc3QtdXNhZ2UtdHVwbGVzCkBAIC0wLDAg KzEsMTI0IEBACisjIS91c3IvYmluL3B5dGhvbjMKKworaW1wb3J0IHJlIGFzIHJlZ2V4cAoraW1w b3J0IHN5cworaW1wb3J0IGpzb24KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0 Citmcm9tIG1hdGggaW1wb3J0IGZsb29yLCBzcXJ0LCBjZWlsCisKK2ltcG9ydCBudW1weSBhcyBu cAoraW1wb3J0IG1hdHBsb3RsaWIucHlwbG90IGFzIHBsdAorCitrdiA9IGRlZmF1bHRkaWN0KGxh bWJkYTogZGVmYXVsdGRpY3QoaW50KSkKKwordW5kZWZzdHIgPSAnKHVuZGVmKScKKworZGVmIHJl YWRpbigpOgorICAgIGYgPSBvcGVuKHN5cy5hcmd2WzFdKQorCisgICAga2V5X2JhZF9yZSA9IHJl Z2V4cC5jb21waWxlKHInXFcnKQorCisgICAgZm9yIGwgaW4gZjoKKyAgICAgICAgb2JqID0ganNv bi5sb2FkcyhsKQorICAgICAgICB3ID0gb2JqWydEVVJBVElPTiddCisgICAgICAgIGZvciBrLCB2 IGluIG9iai5pdGVtcygpOgorICAgICAgICAgICAgYXNzZXJ0KG5vdCBrZXlfYmFkX3JlLm1hdGNo KGspKQorICAgICAgICAgICAgYXNzZXJ0KGxlbihrKSkKKyAgICAgICAgICAgIGFzc2VydChub3Qg dj09dW5kZWZzdHIpCisgICAgICAgICAgICBpZiBrPT0nRFVSQVRJT04nIG9yIGs9PSdXRFVSQVRJ T04nOiBjb250aW51ZQorICAgICAgICAgICAga3Zba11bdl0gKz0gdworCitkZWYgdHJ1bmN0byh0 b3RhbHMsIG1heHZsZW4pOgorICAgIG50b3RhbHMgPSBkZWZhdWx0ZGljdChpbnQpCisgICAgZm9y IHYsIHcgaW4gdG90YWxzLml0ZW1zKCk6CisgICAgICAgIHYgPSB2WzA6bWF4dmxlbl0KKyAgICAg ICAgbnRvdGFsc1t2XSArPSB3CisgICAgcmV0dXJuIG50b3RhbHMKKworZGVmIG1ha2VncmFwaChr LCB0b3RhbHMpOgorICAgIHByaW50KGspCisKKyAgICBtYXh2bGVuID0gMjUKKyAgICBtYXhpdGVt cyA9IDMwCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0b3RhbHMgPSB0cnVuY3RvKHRvdGFs cywgbWF4dmxlbikKKworICAgICAgICBpZiBtYXh2bGVuIDw9IDE6IGJyZWFrCisgICAgICAgIGlm IGxlbih0b3RhbHMpIDw9IG1heGl0ZW1zOiBicmVhaworCisgICAgICAgIHByaW50KCIgIHJlZHVj aW5nIiwgbWF4dmxlbiwgbGVuKHRvdGFscykpCisgICAgICAgIG1heHZsZW4gLT0gMQorCisgICAg dmFscyA9IHRvdGFscy5rZXlzKCkKKyAgICB2YWxzID0gc29ydGVkKHZhbHMpCisgICAgdmFscy5y ZXZlcnNlKCkKKworICAgIG52YWxzID0gbGVuKHZhbHMpCisgICAgaW5kaWNlcyA9IG5wLmFyYW5n ZShudmFscykKKyAgICB0b3RhbHMgPSBbdG90YWxzW3ZhbHNbaXhdXSBmb3IgaXggaW4gaW5kaWNl c10KKworICAgIHRvdGFsID0gc3VtKHRvdGFscykKKyAgICBpZiB0b3RhbDoKKyAgICAgICAgdG90 YWxzID0gW3ggKiAxMDAgLyB0b3RhbCBmb3IgeCBpbiB0b3RhbHNdCisKKyAgICAjcHJpbnQoc3Ry KFt2YWxzLGluZGljZXMsdG90YWxzXSkpCisKKyAgICBnbG9iYWwgc3VicGxvdG51bQorICAgIGF4 ID0gcGx0LnN1YnBsb3Qoc3VicGxvdHNfbnJvd3MsIHN1YnBsb3RzX25jb2xzLCBzdWJwbG90bnVt KQorICAgIHN1YnBsb3RudW0gKz0gMQorCisgICAgcGx0Lnl0aWNrcyhpbmRpY2VzICsgMC4zNSwg dmFscykKKyAgICBwbHQuYmFyaChpbmRpY2VzLCB0b3RhbHMpCisgICAgYXguc2V0X3RpdGxlKGsp CisKK2FrdncgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVs dGRpY3QoZmxvYXQpKSkKKworZGVmIHJlY29yZGluKG9iaiwgdywga3Z3KToKKyAgICBmb3IgayBp biBrZG86CisgICAgICAgIHYgPSBvYmouZ2V0KGssdW5kZWZzdHIpCisgICAgICAgIGt2d1trXVtz dHIodildICs9IHcKKworZGVmIHJlYWRpbjIoKToKKyAgICBnbG9iYWwga2RvCisKKyAgICBrZG8g PSBzb3J0ZWQoa3Yua2V5cygpKQorICAgICNrZG8gPSBbICdicmFuY2gnLCAnT1ZFUkFMTCcsJ2pv YicgXQorCisgICAgZiA9IG9wZW4oc3lzLmFyZ3ZbMV0pCisgICAgZm9yIGwgaW4gZjoKKyAgICAg ICAgb2JqID0ganNvbi5sb2FkcyhsKQorICAgICAgICB3ID0gb2JqWydXRFVSQVRJT04nXQorICAg ICAgICByZWNvcmRpbihvYmosIHcsIGFrdndbJyonXSkKKyAgICAgICAgYWcgPSBvYmouZ2V0KCdI T1NUX0FSQ0hfR1JPVVAnLHVuZGVmc3RyKQorICAgICAgICByZWNvcmRpbihvYmosIHcsIGFrdndb YWddKQorCitmaWdudW0gPSAwCisKK2RlZiBiYXNpY2dyYXBocyhhZywga3Z3KToKKyAgICBnbG9i YWwgZmlnbnVtCisgICAgZ2xvYmFsIHN1YnBsb3RudW0KKyAgICBnbG9iYWwgc3VicGxvdHNfbnJv d3MKKyAgICBnbG9iYWwgc3VicGxvdHNfbmNvbHMKKworICAgIGZpZ251bSA9IGZpZ251bSArIDEK KyAgICBzdWJwbG90bnVtID0gMQorCisgICAgZmlnID0gcGx0LmZpZ3VyZShmaWdudW0pCisgICAg dGl0bGVtc2cgPSBhZworICAgIHBsdC5zdXB0aXRsZSh0aXRsZW1zZykKKyAgICBmaWcuY2FudmFz LnNldF93aW5kb3dfdGl0bGUoIm1nLXJlcG9ydC1ob3N0LXVzYWdlLXR1cGxlcyAiICsgYWcpCisK KyAgICBzdWJwbG90c19ucm93cyA9IGZsb29yKHNxcnQobGVuKGtkbykpKQorICAgIHN1YnBsb3Rz X25jb2xzID0gY2VpbChsZW4oa2RvKSAvIHN1YnBsb3RzX25yb3dzKQorICAgIGZvciBrIGluIGtk bzoKKyAgICAgICAgbWFrZWdyYXBoKGssIGt2d1trXSkKKworZGVmIGdyYXBocygpOgorICAgIGZv ciBhZyBpbiBzb3J0ZWQoYWt2dy5rZXlzKCkpOgorICAgICAgICBiYXNpY2dyYXBocyhhZywgYWt2 d1thZ10pCisgICAgcGx0LnNob3coKQorCityZWFkaW4oKQorcmVhZGluMigpCitncmFwaHMoKQot LSAKMi4xLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8v bGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK