From owner-freebsd-chromium@FreeBSD.ORG Sun Mar 20 21:14:14 2011 Return-Path: Delivered-To: freebsd-chromium@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 241C41065679; Sun, 20 Mar 2011 21:14:14 +0000 (UTC) (envelope-from geo.liaskos@gmail.com) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id A7E078FC1B; Sun, 20 Mar 2011 21:14:13 +0000 (UTC) Received: by gwb15 with SMTP id 15so2515149gwb.13 for ; Sun, 20 Mar 2011 14:14:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=3EPpYH+txh6+YJHezp58HTB9qH4Im4tZbNQYqtNLoG8=; b=TLh30MsWlBObHh81OAAEW2+vzd0zZVfAoGUzlzX77K+wxT5AmvBU23mZYxq2fh5o37 VmD1w2O0GVb3RDlsCSI0q4seRLt72h/JPKPh38iCxVTd8u2wz0Vt7QWmCGwiC9NcrZ/Y fUyBMlMhVFIrLPIFbEeaRNW9Fc2CAe0pRv1oY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=CZF31aQYUQR6vEE+A2dpIchXTQWO18QWIKTzu/tYfKUf6M24SjBfseN2Nzr2cTyqnA CaxGXMi09nSksuJpc+SVRvQQ+5dyPf2aw2Z3Wt856XT+Hpe/nR5appyzRcUVNoJga02N 4gxvgq95vpZHmoLbLPXLTMoxcc/ybXbNID/Oo= MIME-Version: 1.0 Received: by 10.100.249.4 with SMTP id w4mr2323539anh.65.1300655652818; Sun, 20 Mar 2011 14:14:12 -0700 (PDT) Received: by 10.100.11.10 with HTTP; Sun, 20 Mar 2011 14:14:12 -0700 (PDT) In-Reply-To: <4D7FC392.1000401@freebsd.org> References: <4D7E83EE.90803@freebsd.org> <4D7FC392.1000401@freebsd.org> Date: Sun, 20 Mar 2011 23:14:12 +0200 Message-ID: From: George Liaskos To: Rene Ladan Content-Type: multipart/mixed; boundary=0016369fa2532950ce049ef07e8c X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd-chromium@freebsd.org Subject: Re: versions shifted X-BeenThere: freebsd-chromium@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD-specific Chromium issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 20 Mar 2011 21:14:14 -0000 --0016369fa2532950ce049ef07e8c Content-Type: text/plain; charset=UTF-8 Hi The attached patches resolve the compilation errors and fix the v8 stack overflow error on amd64 (backported from the bleeding_edge upstream branch). Chromium does not render pages yet, i have done some progress in this regard too but lets fix the build first. Regards --0016369fa2532950ce049ef07e8c Content-Type: application/octet-stream; name="v8.diff" Content-Disposition: attachment; filename="v8.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gligsja11 SW5kZXg6IHNyYy9pYTMyL2NvZGUtc3R1YnMtaWEzMi5jYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMvaWEz Mi9jb2RlLXN0dWJzLWlhMzIuY2MJKHJldmlzaW9uIDcxNTMpCisrKyBzcmMvaWEzMi9jb2RlLXN0 dWJzLWlhMzIuY2MJKHdvcmtpbmcgY29weSkKQEAgLTU1MDksOCArNTUwOSw4IEBACiAgIFNUQVRJ Q19BU1NFUlQoU21pOjprTWF4VmFsdWUgPT0gU3RyaW5nOjprTWF4TGVuZ3RoKTsKICAgLy8gSGFu ZGxlIGV4Y2VwdGlvbmFsbHkgbG9uZyBzdHJpbmdzIGluIHRoZSBydW50aW1lIHN5c3RlbS4KICAg X18gaihvdmVyZmxvdywgJnN0cmluZ19hZGRfcnVudGltZSk7Ci0gIC8vIFVzZSB0aGUgcnVudGlt ZSBzeXN0ZW0gd2hlbiBhZGRpbmcgdHdvIG9uZSBjaGFyYWN0ZXIgc3RyaW5ncywgYXMgaXQKLSAg Ly8gY29udGFpbnMgb3B0aW1pemF0aW9ucyBmb3IgdGhpcyBzcGVjaWZpYyBjYXNlIHVzaW5nIHRo ZSBzeW1ib2wgdGFibGUuCisgIC8vIFVzZSB0aGUgc3ltYm9sIHRhYmxlIHdoZW4gYWRkaW5nIHR3 byBvbmUgY2hhcmFjdGVyIHN0cmluZ3MsIGFzIGl0CisgIC8vIGhlbHBzIGxhdGVyIG9wdGltaXph dGlvbnMgdG8gcmV0dXJuIGEgc3ltYm9sIGhlcmUuCiAgIF9fIGNtcChPcGVyYW5kKGVieCksIElt bWVkaWF0ZShTbWk6OkZyb21JbnQoMikpKTsKICAgX18gaihub3RfZXF1YWwsICZsb25nZXJfdGhh bl90d28pOwogCkBAIC01OTI3LDYgKzU5MjcsOCBAQAogICAgIC8vIElmIGVudHJ5IGlzIHVuZGVm aW5lZCBubyBzdHJpbmcgd2l0aCB0aGlzIGhhc2ggY2FuIGJlIGZvdW5kLgogICAgIF9fIGNtcChj YW5kaWRhdGUsIEZhY3Rvcnk6OnVuZGVmaW5lZF92YWx1ZSgpKTsKICAgICBfXyBqKGVxdWFsLCBu b3RfZm91bmQpOworICAgIF9fIGNtcChjYW5kaWRhdGUsIEZhY3Rvcnk6Om51bGxfdmFsdWUoKSk7 CisgICAgX18gaihlcXVhbCwgJm5leHRfcHJvYmVbaV0pOwogCiAgICAgLy8gSWYgbGVuZ3RoIGlz IG5vdCAyIHRoZSBzdHJpbmcgaXMgbm90IGEgY2FuZGlkYXRlLgogICAgIF9fIGNtcChGaWVsZE9w ZXJhbmQoY2FuZGlkYXRlLCBTdHJpbmc6OmtMZW5ndGhPZmZzZXQpLApJbmRleDogc3JjL2lhMzIv ZnVsbC1jb2RlZ2VuLWlhMzIuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL2lhMzIvZnVsbC1jb2RlZ2Vu LWlhMzIuY2MJKHJldmlzaW9uIDcxNTMpCisrKyBzcmMvaWEzMi9mdWxsLWNvZGVnZW4taWEzMi5j Ywkod29ya2luZyBjb3B5KQpAQCAtMzA0OSw4ICszMDQ5LDggQEAKICAgLy8gRmV0Y2ggdGhlIG1h cCBhbmQgY2hlY2sgaWYgYXJyYXkgaXMgaW4gZmFzdCBjYXNlLgogICAvLyBDaGVjayB0aGF0IG9i amVjdCBkb2Vzbid0IHJlcXVpcmUgc2VjdXJpdHkgY2hlY2tzIGFuZAogICAvLyBoYXMgbm8gaW5k ZXhlZCBpbnRlcmNlcHRvci4KLSAgX18gQ21wT2JqZWN0VHlwZShvYmplY3QsIEZJUlNUX0pTX09C SkVDVF9UWVBFLCB0ZW1wKTsKLSAgX18gaihiZWxvdywgJnNsb3dfY2FzZSk7CisgIF9fIENtcE9i amVjdFR5cGUob2JqZWN0LCBKU19PQkpFQ1RfVFlQRSwgdGVtcCk7CisgIF9fIGoobm90X2VxdWFs LCAmc2xvd19jYXNlKTsKICAgX18gdGVzdF9iKEZpZWxkT3BlcmFuZCh0ZW1wLCBNYXA6OmtCaXRG aWVsZE9mZnNldCksCiAgICAgICAgICAgICBLZXllZExvYWRJQzo6a1Nsb3dDYXNlQml0RmllbGRN YXNrKTsKICAgX18gaihub3RfemVybywgJnNsb3dfY2FzZSk7CkluZGV4OiBzcmMveDY0L2Fzc2Vt Ymxlci14NjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveDY0L2Fzc2VtYmxlci14NjQuaAkocmV2aXNp b24gNzE1MykKKysrIHNyYy94NjQvYXNzZW1ibGVyLXg2NC5oCSh3b3JraW5nIGNvcHkpCkBAIC02 NTYsNyArNjU2LDcgQEAKIAogICAvLyBNb3ZlIHNpZ24gZXh0ZW5kZWQgaW1tZWRpYXRlIHRvIG1l bW9yeSBsb2NhdGlvbi4KICAgdm9pZCBtb3ZxKGNvbnN0IE9wZXJhbmQmIGRzdCwgSW1tZWRpYXRl IHZhbHVlKTsKLSAgLy8gTmV3IHg2NCBpbnN0cnVjdGlvbnMgdG8gbG9hZCBhIDY0LWJpdCBpbW1l ZGlhdGUgaW50byBhIHJlZ2lzdGVyLgorICAvLyBJbnN0cnVjdGlvbnMgdG8gbG9hZCBhIDY0LWJp dCBpbW1lZGlhdGUgaW50byBhIHJlZ2lzdGVyLgogICAvLyBBbGwgNjQtYml0IGltbWVkaWF0ZXMg bXVzdCBoYXZlIGEgcmVsb2NhdGlvbiBtb2RlLgogICB2b2lkIG1vdnEoUmVnaXN0ZXIgZHN0LCB2 b2lkKiBwdHIsIFJlbG9jSW5mbzo6TW9kZSBybW9kZSk7CiAgIHZvaWQgbW92cShSZWdpc3RlciBk c3QsIGludDY0X3QgdmFsdWUsIFJlbG9jSW5mbzo6TW9kZSBybW9kZSk7CkBAIC02ODEsNyArNjgx LDcgQEAKICAgdm9pZCByZXBtb3ZzbCgpOwogICB2b2lkIHJlcG1vdnNxKCk7CiAKLSAgLy8gTmV3 IHg2NCBpbnN0cnVjdGlvbiB0byBsb2FkIGZyb20gYW4gaW1tZWRpYXRlIDY0LWJpdCBwb2ludGVy IGludG8gUkFYLgorICAvLyBJbnN0cnVjdGlvbiB0byBsb2FkIGZyb20gYW4gaW1tZWRpYXRlIDY0 LWJpdCBwb2ludGVyIGludG8gUkFYLgogICB2b2lkIGxvYWRfcmF4KHZvaWQqIHB0ciwgUmVsb2NJ bmZvOjpNb2RlIHJtb2RlKTsKICAgdm9pZCBsb2FkX3JheChFeHRlcm5hbFJlZmVyZW5jZSBleHQp OwogCkluZGV4OiBzcmMveDY0L2NvZGUtc3R1YnMteDY0LmNjCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94 NjQvY29kZS1zdHVicy14NjQuY2MJKHJldmlzaW9uIDcxNTMpCisrKyBzcmMveDY0L2NvZGUtc3R1 YnMteDY0LmNjCSh3b3JraW5nIGNvcHkpCkBAIC0yMjQ0LDExICsyMjQ0LDE0IEBACiAgIExhYmVs IHNsb3c7CiAgIF9fIEp1bXBJZk5vdFNtaShyZHgsICZzbG93KTsKIAotICAvLyBDaGVjayBpZiB0 aGUgY2FsbGluZyBmcmFtZSBpcyBhbiBhcmd1bWVudHMgYWRhcHRvciBmcmFtZS4KKyAgLy8gQ2hl Y2sgaWYgdGhlIGNhbGxpbmcgZnJhbWUgaXMgYW4gYXJndW1lbnRzIGFkYXB0b3IgZnJhbWUuICBX ZSBsb29rIGF0IHRoZQorICAvLyBjb250ZXh0IG9mZnNldCwgYW5kIGlmIHRoZSBmcmFtZSBpcyBu b3QgYSByZWd1bGFyIG9uZSwgdGhlbiB3ZSBmaW5kIGEKKyAgLy8gU21pIGluc3RlYWQgb2YgdGhl IGNvbnRleHQuICBXZSBjYW4ndCB1c2UgU21pQ29tcGFyZSBoZXJlLCBiZWNhdXNlIHRoYXQKKyAg Ly8gb25seSB3b3JrcyBmb3IgY29tcGFyaW5nIHR3byBzbWlzLgogICBMYWJlbCBhZGFwdG9yOwog ICBfXyBtb3ZxKHJieCwgT3BlcmFuZChyYnAsIFN0YW5kYXJkRnJhbWVDb25zdGFudHM6OmtDYWxs ZXJGUE9mZnNldCkpOwotICBfXyBTbWlDb21wYXJlKE9wZXJhbmQocmJ4LCBTdGFuZGFyZEZyYW1l Q29uc3RhbnRzOjprQ29udGV4dE9mZnNldCksCi0gICAgICAgICAgICAgICAgU21pOjpGcm9tSW50 KFN0YWNrRnJhbWU6OkFSR1VNRU5UU19BREFQVE9SKSk7CisgIF9fIENtcChPcGVyYW5kKHJieCwg U3RhbmRhcmRGcmFtZUNvbnN0YW50czo6a0NvbnRleHRPZmZzZXQpLAorICAgICAgICAgU21pOjpG cm9tSW50KFN0YWNrRnJhbWU6OkFSR1VNRU5UU19BREFQVE9SKSk7CiAgIF9fIGooZXF1YWwsICZh ZGFwdG9yKTsKIAogICAvLyBDaGVjayBpbmRleCBhZ2FpbnN0IGZvcm1hbCBwYXJhbWV0ZXJzIGNv dW50IGxpbWl0IHBhc3NlZCBpbgpAQCAtMjMwMyw4ICsyMzA2LDggQEAKICAgLy8gQ2hlY2sgaWYg dGhlIGNhbGxpbmcgZnJhbWUgaXMgYW4gYXJndW1lbnRzIGFkYXB0b3IgZnJhbWUuCiAgIExhYmVs IGFkYXB0b3JfZnJhbWUsIHRyeV9hbGxvY2F0ZSwgcnVudGltZTsKICAgX18gbW92cShyZHgsIE9w ZXJhbmQocmJwLCBTdGFuZGFyZEZyYW1lQ29uc3RhbnRzOjprQ2FsbGVyRlBPZmZzZXQpKTsKLSAg X18gU21pQ29tcGFyZShPcGVyYW5kKHJkeCwgU3RhbmRhcmRGcmFtZUNvbnN0YW50czo6a0NvbnRl eHRPZmZzZXQpLAotICAgICAgICAgICAgICAgIFNtaTo6RnJvbUludChTdGFja0ZyYW1lOjpBUkdV TUVOVFNfQURBUFRPUikpOworICBfXyBDbXAoT3BlcmFuZChyZHgsIFN0YW5kYXJkRnJhbWVDb25z dGFudHM6OmtDb250ZXh0T2Zmc2V0KSwKKyAgICAgICAgIFNtaTo6RnJvbUludChTdGFja0ZyYW1l OjpBUkdVTUVOVFNfQURBUFRPUikpOwogICBfXyBqKGVxdWFsLCAmYWRhcHRvcl9mcmFtZSk7CiAK ICAgLy8gR2V0IHRoZSBsZW5ndGggZnJvbSB0aGUgZnJhbWUuCkBAIC00MTU3LDggKzQxNjAsOCBA QAogICAvLyBMb29rIGF0IHRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdCBvZiBhZGRpbmcgdGhlIHR3 byBzdHJpbmdzLgogICBTVEFUSUNfQVNTRVJUKFN0cmluZzo6a01heExlbmd0aCA8PSBTbWk6OmtN YXhWYWx1ZSAvIDIpOwogICBfXyBTbWlBZGQocmJ4LCByYngsIHJjeCk7Ci0gIC8vIFVzZSB0aGUg cnVudGltZSBzeXN0ZW0gd2hlbiBhZGRpbmcgdHdvIG9uZSBjaGFyYWN0ZXIgc3RyaW5ncywgYXMg aXQKLSAgLy8gY29udGFpbnMgb3B0aW1pemF0aW9ucyBmb3IgdGhpcyBzcGVjaWZpYyBjYXNlIHVz aW5nIHRoZSBzeW1ib2wgdGFibGUuCisgIC8vIFVzZSB0aGUgc3ltYm9sIHRhYmxlIHdoZW4gYWRk aW5nIHR3byBvbmUgY2hhcmFjdGVyIHN0cmluZ3MsIGFzIGl0CisgIC8vIGhlbHBzIGxhdGVyIG9w dGltaXphdGlvbnMgdG8gcmV0dXJuIGEgc3ltYm9sIGhlcmUuCiAgIF9fIFNtaUNvbXBhcmUocmJ4 LCBTbWk6OkZyb21JbnQoMikpOwogICBfXyBqKG5vdF9lcXVhbCwgJmxvbmdlcl90aGFuX3R3byk7 CiAKQEAgLTQ1MTAsMTUgKzQ1MTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgRmllbGRPcGVy YW5kKHN5bWJvbF90YWJsZSwgU3ltYm9sVGFibGU6OmtDYXBhY2l0eU9mZnNldCkpOwogICBfXyBk ZWNsKG1hc2spOwogCi0gIFJlZ2lzdGVyIHVuZGVmaW5lZCA9IHNjcmF0Y2g0OwotICBfXyBMb2Fk Um9vdCh1bmRlZmluZWQsIEhlYXA6OmtVbmRlZmluZWRWYWx1ZVJvb3RJbmRleCk7CisgIFJlZ2lz dGVyIG1hcCA9IHNjcmF0Y2g0OwogCiAgIC8vIFJlZ2lzdGVycwogICAvLyBjaGFyczogICAgICAg IHR3byBjaGFyYWN0ZXIgc3RyaW5nLCBjaGFyIDEgaW4gYnl0ZSAwIGFuZCBjaGFyIDIgaW4gYnl0 ZSAxLgogICAvLyBoYXNoOiAgICAgICAgIGhhc2ggb2YgdHdvIGNoYXJhY3RlciBzdHJpbmcgKDMy LWJpdCBpbnQpCiAgIC8vIHN5bWJvbF90YWJsZTogc3ltYm9sIHRhYmxlCiAgIC8vIG1hc2s6ICAg ICAgICAgY2FwYWNpdHkgbWFzayAoMzItYml0IGludCkKLSAgLy8gdW5kZWZpbmVkOiAgICB1bmRl ZmluZWQgdmFsdWUKKyAgLy8gbWFwOiAgICAgICAgICAtCiAgIC8vIHNjcmF0Y2g6ICAgICAgLQog CiAgIC8vIFBlcmZvcm0gYSBudW1iZXIgb2YgcHJvYmVzIGluIHRoZSBzeW1ib2wgdGFibGUuCkBA IC00NTMzLDcgKzQ1MzUsNyBAQAogICAgIH0KICAgICBfXyBhbmRsKHNjcmF0Y2gsIG1hc2spOwog Ci0gICAgLy8gTG9hZCB0aGUgZW50cnkgZnJvbSB0aGUgc3ltYmxlIHRhYmxlLgorICAgIC8vIExv YWQgdGhlIGVudHJ5IGZyb20gdGhlIHN5bWJvbCB0YWJsZS4KICAgICBSZWdpc3RlciBjYW5kaWRh dGUgPSBzY3JhdGNoOyAgLy8gU2NyYXRjaCByZWdpc3RlciBjb250YWlucyBjYW5kaWRhdGUuCiAg ICAgU1RBVElDX0FTU0VSVChTeW1ib2xUYWJsZTo6a0VudHJ5U2l6ZSA9PSAxKTsKICAgICBfXyBt b3ZxKGNhbmRpZGF0ZSwKQEAgLTQ1NDMsOSArNDU0NSwxNyBAQAogICAgICAgICAgICAgICAgICAg ICAgICAgIFN5bWJvbFRhYmxlOjprRWxlbWVudHNTdGFydE9mZnNldCkpOwogCiAgICAgLy8gSWYg ZW50cnkgaXMgdW5kZWZpbmVkIG5vIHN0cmluZyB3aXRoIHRoaXMgaGFzaCBjYW4gYmUgZm91bmQu Ci0gICAgX18gY21wcShjYW5kaWRhdGUsIHVuZGVmaW5lZCk7CisgICAgTmVhckxhYmVsIGlzX3N0 cmluZzsKKyAgICBfXyBDbXBPYmplY3RUeXBlKGNhbmRpZGF0ZSwgT0REQkFMTF9UWVBFLCBtYXAp OworICAgIF9fIGoobm90X2VxdWFsLCAmaXNfc3RyaW5nKTsKKworICAgIF9fIENvbXBhcmVSb290 KGNhbmRpZGF0ZSwgSGVhcDo6a1VuZGVmaW5lZFZhbHVlUm9vdEluZGV4KTsKICAgICBfXyBqKGVx dWFsLCBub3RfZm91bmQpOworICAgIC8vIE11c3QgYmUgbnVsbCAoZGVsZXRlZCBlbnRyeSkuCisg ICAgX18gam1wKCZuZXh0X3Byb2JlW2ldKTsKIAorICAgIF9fIGJpbmQoJmlzX3N0cmluZyk7CisK ICAgICAvLyBJZiBsZW5ndGggaXMgbm90IDIgdGhlIHN0cmluZyBpcyBub3QgYSBjYW5kaWRhdGUu CiAgICAgX18gU21pQ29tcGFyZShGaWVsZE9wZXJhbmQoY2FuZGlkYXRlLCBTdHJpbmc6OmtMZW5n dGhPZmZzZXQpLAogICAgICAgICAgICAgICAgICAgU21pOjpGcm9tSW50KDIpKTsKQEAgLTQ1NTYs OCArNDU2Niw3IEBACiAgICAgUmVnaXN0ZXIgdGVtcCA9IGtTY3JhdGNoUmVnaXN0ZXI7CiAKICAg ICAvLyBDaGVjayB0aGF0IHRoZSBjYW5kaWRhdGUgaXMgYSBub24tZXh0ZXJuYWwgYXNjaWkgc3Ry aW5nLgotICAgIF9fIG1vdnEodGVtcCwgRmllbGRPcGVyYW5kKGNhbmRpZGF0ZSwgSGVhcE9iamVj dDo6a01hcE9mZnNldCkpOwotICAgIF9fIG1vdnp4YmwodGVtcCwgRmllbGRPcGVyYW5kKHRlbXAs IE1hcDo6a0luc3RhbmNlVHlwZU9mZnNldCkpOworICAgIF9fIG1vdnp4YmwodGVtcCwgRmllbGRP cGVyYW5kKG1hcCwgTWFwOjprSW5zdGFuY2VUeXBlT2Zmc2V0KSk7CiAgICAgX18gSnVtcElmSW5z dGFuY2VUeXBlSXNOb3RTZXF1ZW50aWFsQXNjaWkoCiAgICAgICAgIHRlbXAsIHRlbXAsICZuZXh0 X3Byb2JlW2ldKTsKIApJbmRleDogc3JjL3g2NC9jb2RlZ2VuLXg2NC5jYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBzcmMveDY0L2NvZGVnZW4teDY0LmNjCShyZXZpc2lvbiA3MTUzKQorKysgc3JjL3g2NC9jb2Rl Z2VuLXg2NC5jYwkod29ya2luZyBjb3B5KQpAQCAtNzY2LDcgKzc2Niw3IEBACiAgICAgICBfXyBB Ym9ydElmTm90TnVtYmVyKHZhbHVlLnJlZygpKTsKICAgICB9CiAgICAgLy8gU21pID0+IGZhbHNl IGlmZiB6ZXJvLgotICAgIF9fIFNtaUNvbXBhcmUodmFsdWUucmVnKCksIFNtaTo6RnJvbUludCgw KSk7CisgICAgX18gQ21wKHZhbHVlLnJlZygpLCBTbWk6OkZyb21JbnQoMCkpOwogICAgIGlmICh2 YWx1ZS5pc19zbWkoKSkgewogICAgICAgdmFsdWUuVW51c2UoKTsKICAgICAgIGRlc3QtPlNwbGl0 KG5vdF96ZXJvKTsKQEAgLTc5NCw3ICs3OTQsNyBAQAogICAgIGRlc3QtPmZhbHNlX3RhcmdldCgp LT5CcmFuY2goZXF1YWwpOwogCiAgICAgLy8gU21pID0+IGZhbHNlIGlmZiB6ZXJvLgotICAgIF9f IFNtaUNvbXBhcmUodmFsdWUucmVnKCksIFNtaTo6RnJvbUludCgwKSk7CisgICAgX18gQ21wKHZh bHVlLnJlZygpLCBTbWk6OkZyb21JbnQoMCkpOwogICAgIGRlc3QtPmZhbHNlX3RhcmdldCgpLT5C cmFuY2goZXF1YWwpOwogICAgIENvbmRpdGlvbiBpc19zbWkgPSBtYXNtXy0+Q2hlY2tTbWkodmFs dWUucmVnKCkpOwogICAgIGRlc3QtPnRydWVfdGFyZ2V0KCktPkJyYW5jaChpc19zbWkpOwpAQCAt MTAzNiw3ICsxMDM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0cnVlLCBvdmVyd3JpdGVfbW9kZSk7CiAgIH0gZWxzZSB7CiAgICAgLy8gU2V0IHRoZSBmbGFn cyBiYXNlZCBvbiB0aGUgb3BlcmF0aW9uLCB0eXBlIGFuZCBsb29wIG5lc3RpbmcgbGV2ZWwuCi0g ICAgLy8gQml0IG9wZXJhdGlvbnMgYWx3YXlzIGFzc3VtZSB0aGV5IGxpa2VseSBvcGVyYXRlIG9u IFNtaXMuIFN0aWxsIG9ubHkKKyAgICAvLyBCaXQgb3BlcmF0aW9ucyBhbHdheXMgYXNzdW1lIHRo ZXkgbGlrZWx5IG9wZXJhdGUgb24gc21pcy4gU3RpbGwgb25seQogICAgIC8vIGdlbmVyYXRlIHRo ZSBpbmxpbmUgU21pIGNoZWNrIGNvZGUgaWYgdGhpcyBvcGVyYXRpb24gaXMgcGFydCBvZiBhIGxv b3AuCiAgICAgLy8gRm9yIGFsbCBvdGhlciBvcGVyYXRpb25zIG9ubHkgaW5saW5lIHRoZSBTbWkg Y2hlY2sgY29kZSBmb3IgbGlrZWx5IHNtaXMKICAgICAvLyBpZiB0aGUgb3BlcmF0aW9uIGlzIHBh cnQgb2YgYSBsb29wLgpAQCAtMjEwOCw3ICsyMTA4LDcgQEAKICAgICAgIGlmIChjYyA9PSBlcXVh bCkgewogICAgICAgICBMYWJlbCBjb21wYXJpc29uX2RvbmU7CiAgICAgICAgIF9fIFNtaUNvbXBh cmUoRmllbGRPcGVyYW5kKGxlZnRfc2lkZS5yZWcoKSwgU3RyaW5nOjprTGVuZ3RoT2Zmc2V0KSwK LSAgICAgICAgICAgICAgICBTbWk6OkZyb21JbnQoMSkpOworICAgICAgICAgICAgICAgICAgICAg IFNtaTo6RnJvbUludCgxKSk7CiAgICAgICAgIF9fIGoobm90X2VxdWFsLCAmY29tcGFyaXNvbl9k b25lKTsKICAgICAgICAgdWludDhfdCBjaGFyX3ZhbHVlID0KICAgICAgICAgICAgIHN0YXRpY19j YXN0PHVpbnQ4X3Q+KFN0cmluZzo6Y2FzdCgqcmlnaHRfdmFsKS0+R2V0KDApKTsKQEAgLTIyOTQs NyArMjI5NCw3IEBACiAgICAgICAvLyBDb21wYXJlU3R1YiBhbmQgdGhlIGlubGluZSBjb2RlIGJv dGggc3VwcG9ydCBhbGwgdmFsdWVzIG9mIGNjLgogICAgIH0KICAgICAvLyBJbXBsZW1lbnQgY29t cGFyaXNvbiBhZ2FpbnN0IGEgY29uc3RhbnQgU21pLCBpbmxpbmluZyB0aGUgY2FzZQotICAgIC8v IHdoZXJlIGJvdGggc2lkZXMgYXJlIFNtaXMuCisgICAgLy8gd2hlcmUgYm90aCBzaWRlcyBhcmUg c21pcy4KICAgICBsZWZ0X3NpZGUtPlRvUmVnaXN0ZXIoKTsKICAgICBSZWdpc3RlciBsZWZ0X3Jl ZyA9IGxlZnRfc2lkZS0+cmVnKCk7CiAgICAgU21pKiBjb25zdGFudF9zbWkgPSBTbWk6OmNhc3Qo KnJpZ2h0X3NpZGUtPmhhbmRsZSgpKTsKQEAgLTIzMDQsNyArMjMwNCw2IEBACiAgICAgICAgIF9f IEFib3J0SWZOb3RTbWkobGVmdF9yZWcpOwogICAgICAgfQogICAgICAgLy8gVGVzdCBzbWkgZXF1 YWxpdHkgYW5kIGNvbXBhcmlzb24gYnkgc2lnbmVkIGludCBjb21wYXJpc29uLgotICAgICAgLy8g Qm90aCBzaWRlcyBhcmUgc21pcywgc28gd2UgY2FuIHVzZSBhbiBJbW1lZGlhdGUuCiAgICAgICBf XyBTbWlDb21wYXJlKGxlZnRfcmVnLCBjb25zdGFudF9zbWkpOwogICAgICAgbGVmdF9zaWRlLT5V bnVzZSgpOwogICAgICAgcmlnaHRfc2lkZS0+VW51c2UoKTsKQEAgLTIzMTQsNyArMjMxMyw3IEBA CiAgICAgICBKdW1wVGFyZ2V0IGlzX3NtaTsKICAgICAgIGlmIChjYyA9PSBlcXVhbCkgewogICAg ICAgICAvLyBXZSBjYW4gZG8gdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24gYmVmb3JlIHRoZSBzbWkg Y2hlY2suCi0gICAgICAgIF9fIFNtaUNvbXBhcmUobGVmdF9yZWcsIGNvbnN0YW50X3NtaSk7Cisg ICAgICAgIF9fIENtcChsZWZ0X3JlZywgY29uc3RhbnRfc21pKTsKICAgICAgICAgZGVzdC0+dHJ1 ZV90YXJnZXQoKS0+QnJhbmNoKGVxdWFsKTsKICAgICAgICAgQ29uZGl0aW9uIGxlZnRfaXNfc21p ID0gbWFzbV8tPkNoZWNrU21pKGxlZnRfcmVnKTsKICAgICAgICAgZGVzdC0+ZmFsc2VfdGFyZ2V0 KCktPkJyYW5jaChsZWZ0X2lzX3NtaSk7CkBAIC0yNTc1LDggKzI1NzQsOCBAQAogICAgICAgLy8g YWRhcHRvciBmcmFtZSBiZWxvdyBpdC4KICAgICAgIExhYmVsIGludm9rZSwgYWRhcHRlZDsKICAg ICAgIF9fIG1vdnEocmR4LCBPcGVyYW5kKHJicCwgU3RhbmRhcmRGcmFtZUNvbnN0YW50czo6a0Nh bGxlckZQT2Zmc2V0KSk7Ci0gICAgICBfXyBTbWlDb21wYXJlKE9wZXJhbmQocmR4LCBTdGFuZGFy ZEZyYW1lQ29uc3RhbnRzOjprQ29udGV4dE9mZnNldCksCi0gICAgICAgICAgICAgICAgICAgIFNt aTo6RnJvbUludChTdGFja0ZyYW1lOjpBUkdVTUVOVFNfQURBUFRPUikpOworICAgICAgX18gQ21w KE9wZXJhbmQocmR4LCBTdGFuZGFyZEZyYW1lQ29uc3RhbnRzOjprQ29udGV4dE9mZnNldCksCisg ICAgICAgICAgICAgU21pOjpGcm9tSW50KFN0YWNrRnJhbWU6OkFSR1VNRU5UU19BREFQVE9SKSk7 CiAgICAgICBfXyBqKGVxdWFsLCAmYWRhcHRlZCk7CiAKICAgICAgIC8vIE5vIGFyZ3VtZW50cyBh ZGFwdG9yIGZyYW1lLiBDb3B5IGZpeGVkIG51bWJlciBvZiBhcmd1bWVudHMuCkBAIC0zODU3LDcg KzM4NTYsNyBAQAogICBfXyBtb3ZxKHJieCwgcmF4KTsKIAogICAvLyBJZiB0aGUgcHJvcGVydHkg aGFzIGJlZW4gcmVtb3ZlZCB3aGlsZSBpdGVyYXRpbmcsIHdlIGp1c3Qgc2tpcCBpdC4KLSAgX18g U21pQ29tcGFyZShyYngsIFNtaTo6RnJvbUludCgwKSk7CisgIF9fIENtcChyYngsIFNtaTo6RnJv bUludCgwKSk7CiAgIG5vZGUtPmNvbnRpbnVlX3RhcmdldCgpLT5CcmFuY2goZXF1YWwpOwogCiAg IGVuZF9kZWxfY2hlY2suQmluZCgpOwpAQCAtNjE5OCwxNSArNjE5NywxNSBAQAogCiAgIC8vIFNr aXAgdGhlIGFyZ3VtZW50cyBhZGFwdG9yIGZyYW1lIGlmIGl0IGV4aXN0cy4KICAgTGFiZWwgY2hl Y2tfZnJhbWVfbWFya2VyOwotICBfXyBTbWlDb21wYXJlKE9wZXJhbmQoZnAucmVnKCksIFN0YW5k YXJkRnJhbWVDb25zdGFudHM6OmtDb250ZXh0T2Zmc2V0KSwKLSAgICAgICAgICAgICAgICBTbWk6 OkZyb21JbnQoU3RhY2tGcmFtZTo6QVJHVU1FTlRTX0FEQVBUT1IpKTsKKyAgX18gQ21wKE9wZXJh bmQoZnAucmVnKCksIFN0YW5kYXJkRnJhbWVDb25zdGFudHM6OmtDb250ZXh0T2Zmc2V0KSwKKyAg ICAgICAgIFNtaTo6RnJvbUludChTdGFja0ZyYW1lOjpBUkdVTUVOVFNfQURBUFRPUikpOwogICBf XyBqKG5vdF9lcXVhbCwgJmNoZWNrX2ZyYW1lX21hcmtlcik7CiAgIF9fIG1vdnEoZnAucmVnKCks IE9wZXJhbmQoZnAucmVnKCksIFN0YW5kYXJkRnJhbWVDb25zdGFudHM6OmtDYWxsZXJGUE9mZnNl dCkpOwogCiAgIC8vIENoZWNrIHRoZSBtYXJrZXIgaW4gdGhlIGNhbGxpbmcgZnJhbWUuCiAgIF9f IGJpbmQoJmNoZWNrX2ZyYW1lX21hcmtlcik7Ci0gIF9fIFNtaUNvbXBhcmUoT3BlcmFuZChmcC5y ZWcoKSwgU3RhbmRhcmRGcmFtZUNvbnN0YW50czo6a01hcmtlck9mZnNldCksCi0gICAgICAgICAg ICAgICAgU21pOjpGcm9tSW50KFN0YWNrRnJhbWU6OkNPTlNUUlVDVCkpOworICBfXyBDbXAoT3Bl cmFuZChmcC5yZWcoKSwgU3RhbmRhcmRGcmFtZUNvbnN0YW50czo6a01hcmtlck9mZnNldCksCisg ICAgICAgICBTbWk6OkZyb21JbnQoU3RhY2tGcmFtZTo6Q09OU1RSVUNUKSk7CiAgIGZwLlVudXNl KCk7CiAgIGRlc3RpbmF0aW9uKCktPlNwbGl0KGVxdWFsKTsKIH0KQEAgLTYyMjYsOCArNjIyNSw4 IEBACiAKICAgLy8gQ2hlY2sgaWYgdGhlIGNhbGxpbmcgZnJhbWUgaXMgYW4gYXJndW1lbnRzIGFk YXB0b3IgZnJhbWUuCiAgIF9fIG1vdnEoZnAucmVnKCksIE9wZXJhbmQocmJwLCBTdGFuZGFyZEZy YW1lQ29uc3RhbnRzOjprQ2FsbGVyRlBPZmZzZXQpKTsKLSAgX18gU21pQ29tcGFyZShPcGVyYW5k KGZwLnJlZygpLCBTdGFuZGFyZEZyYW1lQ29uc3RhbnRzOjprQ29udGV4dE9mZnNldCksCi0gICAg ICAgICAgICAgICAgU21pOjpGcm9tSW50KFN0YWNrRnJhbWU6OkFSR1VNRU5UU19BREFQVE9SKSk7 CisgIF9fIENtcChPcGVyYW5kKGZwLnJlZygpLCBTdGFuZGFyZEZyYW1lQ29uc3RhbnRzOjprQ29u dGV4dE9mZnNldCksCisgICAgICAgICBTbWk6OkZyb21JbnQoU3RhY2tGcmFtZTo6QVJHVU1FTlRT X0FEQVBUT1IpKTsKICAgX18gaihub3RfZXF1YWwsICZleGl0KTsKIAogICAvLyBBcmd1bWVudHMg YWRhcHRvciBjYXNlOiBSZWFkIHRoZSBhcmd1bWVudHMgbGVuZ3RoIGZyb20gdGhlCkBAIC02Nzgz LDggKzY3ODIsOCBAQAogICAvLyBGZXRjaCB0aGUgbWFwIGFuZCBjaGVjayBpZiBhcnJheSBpcyBp biBmYXN0IGNhc2UuCiAgIC8vIENoZWNrIHRoYXQgb2JqZWN0IGRvZXNuJ3QgcmVxdWlyZSBzZWN1 cml0eSBjaGVja3MgYW5kCiAgIC8vIGhhcyBubyBpbmRleGVkIGludGVyY2VwdG9yLgotICBfXyBD bXBPYmplY3RUeXBlKG9iamVjdC5yZWcoKSwgRklSU1RfSlNfT0JKRUNUX1RZUEUsIHRtcDEucmVn KCkpOwotICBkZWZlcnJlZC0+QnJhbmNoKGJlbG93KTsKKyAgX18gQ21wT2JqZWN0VHlwZShvYmpl Y3QucmVnKCksIEpTX0FSUkFZX1RZUEUsIHRtcDEucmVnKCkpOworICBkZWZlcnJlZC0+QnJhbmNo KG5vdF9lcXVhbCk7CiAgIF9fIHRlc3RiKEZpZWxkT3BlcmFuZCh0bXAxLnJlZygpLCBNYXA6OmtC aXRGaWVsZE9mZnNldCksCiAgICAgICAgICAgIEltbWVkaWF0ZShLZXllZExvYWRJQzo6a1Nsb3dD YXNlQml0RmllbGRNYXNrKSk7CiAgIGRlZmVycmVkLT5CcmFuY2gobm90X3plcm8pOwpAQCAtNjgy Niw3ICs2ODI1LDcgQEAKIAogICBMYWJlbCBkb25lOwogICBfXyBJbk5ld1NwYWNlKHRtcDEucmVn KCksIHRtcDIucmVnKCksIGVxdWFsLCAmZG9uZSk7Ci0gIC8vIFBvc3NpYmxlIG9wdGltaXphdGlv bjogZG8gYSBjaGVjayB0aGF0IGJvdGggdmFsdWVzIGFyZSBTbWlzCisgIC8vIFBvc3NpYmxlIG9w dGltaXphdGlvbjogZG8gYSBjaGVjayB0aGF0IGJvdGggdmFsdWVzIGFyZSBzbWlzCiAgIC8vIChv ciB0aGVtIGFuZCB0ZXN0IGFnYWluc3QgU21pIG1hc2suKQogCiAgIF9fIG1vdnEodG1wMi5yZWco KSwgdG1wMS5yZWcoKSk7CkBAIC04NTE2LDEyICs4NTE1LDYgQEAKICAgICBfXyBDbXBPYmplY3RU eXBlKHJlY2VpdmVyLnJlZygpLCBKU19BUlJBWV9UWVBFLCBrU2NyYXRjaFJlZ2lzdGVyKTsKICAg ICBkZWZlcnJlZC0+QnJhbmNoKG5vdF9lcXVhbCk7CiAKLSAgICAvLyBDaGVjayB0aGF0IHRoZSBr ZXkgaXMgd2l0aGluIGJvdW5kcy4gIEJvdGggdGhlIGtleSBhbmQgdGhlIGxlbmd0aCBvZgotICAg IC8vIHRoZSBKU0FycmF5IGFyZSBzbWlzLiBVc2UgdW5zaWduZWQgY29tcGFyaXNvbiB0byBoYW5k bGUgbmVnYXRpdmUga2V5cy4KLSAgICBfXyBTbWlDb21wYXJlKEZpZWxkT3BlcmFuZChyZWNlaXZl ci5yZWcoKSwgSlNBcnJheTo6a0xlbmd0aE9mZnNldCksCi0gICAgICAgICAgICAgICAgICBrZXku cmVnKCkpOwotICAgIGRlZmVycmVkLT5CcmFuY2goYmVsb3dfZXF1YWwpOwotCiAgICAgLy8gR2V0 IHRoZSBlbGVtZW50cyBhcnJheSBmcm9tIHRoZSByZWNlaXZlciBhbmQgY2hlY2sgdGhhdCBpdCBp cyBub3QgYQogICAgIC8vIGRpY3Rpb25hcnkuCiAgICAgX18gbW92cSh0bXAucmVnKCksCkBAIC04 NTUwLDYgKzg1NDMsMTQgQEAKICAgICAgICAgICAgIGtTY3JhdGNoUmVnaXN0ZXIpOwogICAgIGRl ZmVycmVkLT5CcmFuY2gobm90X2VxdWFsKTsKIAorICAgIC8vIENoZWNrIHRoYXQgdGhlIGtleSBp cyB3aXRoaW4gYm91bmRzLiAgQm90aCB0aGUga2V5IGFuZCB0aGUgbGVuZ3RoIG9mCisgICAgLy8g dGhlIEpTQXJyYXkgYXJlIHNtaXMgKGJlY2F1c2UgdGhlIGZpeGVkIGFycmF5IGNoZWNrIGFib3Zl IGVuc3VyZXMgdGhlCisgICAgLy8gZWxlbWVudHMgYXJlIGluIGZhc3QgY2FzZSkuIFVzZSB1bnNp Z25lZCBjb21wYXJpc29uIHRvIGhhbmRsZSBuZWdhdGl2ZQorICAgIC8vIGtleXMuCisgICAgX18g U21pQ29tcGFyZShGaWVsZE9wZXJhbmQocmVjZWl2ZXIucmVnKCksIEpTQXJyYXk6OmtMZW5ndGhP ZmZzZXQpLAorICAgICAgICAgICAgICAgICAga2V5LnJlZygpKTsKKyAgICBkZWZlcnJlZC0+QnJh bmNoKGJlbG93X2VxdWFsKTsKKwogICAgIC8vIFN0b3JlIHRoZSB2YWx1ZS4KICAgICBTbWlJbmRl eCBpbmRleCA9CiAgICAgICAgIG1hc20oKS0+U21pVG9JbmRleChrU2NyYXRjaFJlZ2lzdGVyLCBr ZXkucmVnKCksIGtQb2ludGVyU2l6ZUxvZzIpOwpJbmRleDogc3JjL3g2NC9mdWxsLWNvZGVnZW4t eDY0LmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tIHNyYy94NjQvZnVsbC1jb2RlZ2VuLXg2NC5jYwkocmV2aXNp b24gNzE1MykKKysrIHNyYy94NjQvZnVsbC1jb2RlZ2VuLXg2NC5jYwkod29ya2luZyBjb3B5KQpA QCAtNTQ5LDcgKzU0OSw3IEBACiAgIF9fIENvbXBhcmVSb290KHJlc3VsdF9yZWdpc3RlcigpLCBI ZWFwOjprRmFsc2VWYWx1ZVJvb3RJbmRleCk7CiAgIF9fIGooZXF1YWwsIGlmX2ZhbHNlKTsKICAg U1RBVElDX0FTU0VSVChrU21pVGFnID09IDApOwotICBfXyBTbWlDb21wYXJlKHJlc3VsdF9yZWdp c3RlcigpLCBTbWk6OkZyb21JbnQoMCkpOworICBfXyBDbXAocmVzdWx0X3JlZ2lzdGVyKCksIFNt aTo6RnJvbUludCgwKSk7CiAgIF9fIGooZXF1YWwsIGlmX2ZhbHNlKTsKICAgQ29uZGl0aW9uIGlz X3NtaSA9IG1hc21fLT5DaGVja1NtaShyZXN1bHRfcmVnaXN0ZXIoKSk7CiAgIF9fIGooaXNfc21p LCBpZl90cnVlKTsKQEAgLTk5NSw3ICs5OTUsNyBAQAogICBfXyBwdXNoKHJjeCk7ICAvLyBFbnVt ZXJhYmxlLgogICBfXyBwdXNoKHJieCk7ICAvLyBDdXJyZW50IGVudHJ5LgogICBfXyBJbnZva2VC dWlsdGluKEJ1aWx0aW5zOjpGSUxURVJfS0VZLCBDQUxMX0ZVTkNUSU9OKTsKLSAgX18gU21pQ29t cGFyZShyYXgsIFNtaTo6RnJvbUludCgwKSk7CisgIF9fIENtcChyYXgsIFNtaTo6RnJvbUludCgw KSk7CiAgIF9fIGooZXF1YWwsIGxvb3Bfc3RhdGVtZW50LmNvbnRpbnVlX3RhcmdldCgpKTsKICAg X18gbW92cShyYngsIHJheCk7CiAKQEAgLTI1MDIsMTUgKzI1MDIsMTUgQEAKIAogICAvLyBTa2lw IHRoZSBhcmd1bWVudHMgYWRhcHRvciBmcmFtZSBpZiBpdCBleGlzdHMuCiAgIExhYmVsIGNoZWNr X2ZyYW1lX21hcmtlcjsKLSAgX18gU21pQ29tcGFyZShPcGVyYW5kKHJheCwgU3RhbmRhcmRGcmFt ZUNvbnN0YW50czo6a0NvbnRleHRPZmZzZXQpLAotICAgICAgICAgICAgICAgIFNtaTo6RnJvbUlu dChTdGFja0ZyYW1lOjpBUkdVTUVOVFNfQURBUFRPUikpOworICBfXyBDbXAoT3BlcmFuZChyYXgs IFN0YW5kYXJkRnJhbWVDb25zdGFudHM6OmtDb250ZXh0T2Zmc2V0KSwKKyAgICAgICAgIFNtaTo6 RnJvbUludChTdGFja0ZyYW1lOjpBUkdVTUVOVFNfQURBUFRPUikpOwogICBfXyBqKG5vdF9lcXVh bCwgJmNoZWNrX2ZyYW1lX21hcmtlcik7CiAgIF9fIG1vdnEocmF4LCBPcGVyYW5kKHJheCwgU3Rh bmRhcmRGcmFtZUNvbnN0YW50czo6a0NhbGxlckZQT2Zmc2V0KSk7CiAKICAgLy8gQ2hlY2sgdGhl IG1hcmtlciBpbiB0aGUgY2FsbGluZyBmcmFtZS4KICAgX18gYmluZCgmY2hlY2tfZnJhbWVfbWFy a2VyKTsKLSAgX18gU21pQ29tcGFyZShPcGVyYW5kKHJheCwgU3RhbmRhcmRGcmFtZUNvbnN0YW50 czo6a01hcmtlck9mZnNldCksCi0gICAgICAgICAgICAgICAgU21pOjpGcm9tSW50KFN0YWNrRnJh bWU6OkNPTlNUUlVDVCkpOworICBfXyBDbXAoT3BlcmFuZChyYXgsIFN0YW5kYXJkRnJhbWVDb25z dGFudHM6OmtNYXJrZXJPZmZzZXQpLAorICAgICAgICAgU21pOjpGcm9tSW50KFN0YWNrRnJhbWU6 OkNPTlNUUlVDVCkpOwogICBQcmVwYXJlRm9yQmFpbG91dEJlZm9yZVNwbGl0KFRPU19SRUcsIHRy dWUsIGlmX3RydWUsIGlmX2ZhbHNlKTsKICAgU3BsaXQoZXF1YWwsIGlmX3RydWUsIGlmX2ZhbHNl LCBmYWxsX3Rocm91Z2gpOwogCkBAIC0yNTY0LDggKzI1NjQsOCBAQAogCiAgIC8vIENoZWNrIGlm IHRoZSBjYWxsaW5nIGZyYW1lIGlzIGFuIGFyZ3VtZW50cyBhZGFwdG9yIGZyYW1lLgogICBfXyBt b3ZxKHJieCwgT3BlcmFuZChyYnAsIFN0YW5kYXJkRnJhbWVDb25zdGFudHM6OmtDYWxsZXJGUE9m ZnNldCkpOwotICBfXyBTbWlDb21wYXJlKE9wZXJhbmQocmJ4LCBTdGFuZGFyZEZyYW1lQ29uc3Rh bnRzOjprQ29udGV4dE9mZnNldCksCi0gICAgICAgICAgICAgICAgU21pOjpGcm9tSW50KFN0YWNr RnJhbWU6OkFSR1VNRU5UU19BREFQVE9SKSk7CisgIF9fIENtcChPcGVyYW5kKHJieCwgU3RhbmRh cmRGcmFtZUNvbnN0YW50czo6a0NvbnRleHRPZmZzZXQpLAorICAgICAgICAgU21pOjpGcm9tSW50 KFN0YWNrRnJhbWU6OkFSR1VNRU5UU19BREFQVE9SKSk7CiAgIF9fIGoobm90X2VxdWFsLCAmZXhp dCk7CiAKICAgLy8gQXJndW1lbnRzIGFkYXB0b3IgY2FzZTogUmVhZCB0aGUgYXJndW1lbnRzIGxl bmd0aCBmcm9tIHRoZQpAQCAtMzAxMCw4ICszMDEwLDggQEAKICAgLy8gRmV0Y2ggdGhlIG1hcCBh bmQgY2hlY2sgaWYgYXJyYXkgaXMgaW4gZmFzdCBjYXNlLgogICAvLyBDaGVjayB0aGF0IG9iamVj dCBkb2Vzbid0IHJlcXVpcmUgc2VjdXJpdHkgY2hlY2tzIGFuZAogICAvLyBoYXMgbm8gaW5kZXhl ZCBpbnRlcmNlcHRvci4KLSAgX18gQ21wT2JqZWN0VHlwZShvYmplY3QsIEZJUlNUX0pTX09CSkVD VF9UWVBFLCB0ZW1wKTsKLSAgX18gaihiZWxvdywgJnNsb3dfY2FzZSk7CisgIF9fIENtcE9iamVj dFR5cGUob2JqZWN0LCBKU19BUlJBWV9UWVBFLCB0ZW1wKTsKKyAgX18gaihub3RfZXF1YWwsICZz bG93X2Nhc2UpOwogICBfXyB0ZXN0YihGaWVsZE9wZXJhbmQodGVtcCwgTWFwOjprQml0RmllbGRP ZmZzZXQpLAogICAgICAgICAgICBJbW1lZGlhdGUoS2V5ZWRMb2FkSUM6OmtTbG93Q2FzZUJpdEZp ZWxkTWFzaykpOwogICBfXyBqKG5vdF96ZXJvLCAmc2xvd19jYXNlKTsKSW5kZXg6IHNyYy94NjQv bGl0aGl1bS1jb2RlZ2VuLXg2NC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMveDY0L2xpdGhpdW0tY29k ZWdlbi14NjQuY2MJKHJldmlzaW9uIDcxNTMpCisrKyBzcmMveDY0L2xpdGhpdW0tY29kZWdlbi14 NjQuY2MJKHdvcmtpbmcgY29weSkKQEAgLTEyMjUsNyArMTIyNSw3IEBACiAgICAgICBfXyBqKGVx dWFsLCB0cnVlX2xhYmVsKTsKICAgICAgIF9fIENvbXBhcmVSb290KHJlZywgSGVhcDo6a0ZhbHNl VmFsdWVSb290SW5kZXgpOwogICAgICAgX18gaihlcXVhbCwgZmFsc2VfbGFiZWwpOwotICAgICAg X18gU21pQ29tcGFyZShyZWcsIFNtaTo6RnJvbUludCgwKSk7CisgICAgICBfXyBDbXAocmVnLCBT bWk6OkZyb21JbnQoMCkpOwogICAgICAgX18gaihlcXVhbCwgZmFsc2VfbGFiZWwpOwogICAgICAg X18gSnVtcElmU21pKHJlZywgdHJ1ZV9sYWJlbCk7CiAKQEAgLTIxNzcsOCArMjE3Nyw4IEBACiAg IC8vIENoZWNrIGZvciBhcmd1bWVudHMgYWRhcHRlciBmcmFtZS4KICAgTmVhckxhYmVsIGRvbmUs IGFkYXB0ZWQ7CiAgIF9fIG1vdnEocmVzdWx0LCBPcGVyYW5kKHJicCwgU3RhbmRhcmRGcmFtZUNv bnN0YW50czo6a0NhbGxlckZQT2Zmc2V0KSk7Ci0gIF9fIFNtaUNvbXBhcmUoT3BlcmFuZChyZXN1 bHQsIFN0YW5kYXJkRnJhbWVDb25zdGFudHM6OmtDb250ZXh0T2Zmc2V0KSwKLSAgICAgICAgICAg ICAgICBTbWk6OkZyb21JbnQoU3RhY2tGcmFtZTo6QVJHVU1FTlRTX0FEQVBUT1IpKTsKKyAgX18g Q21wKE9wZXJhbmQocmVzdWx0LCBTdGFuZGFyZEZyYW1lQ29uc3RhbnRzOjprQ29udGV4dE9mZnNl dCksCisgICAgICAgICBTbWk6OkZyb21JbnQoU3RhY2tGcmFtZTo6QVJHVU1FTlRTX0FEQVBUT1Ip KTsKICAgX18gaihlcXVhbCwgJmFkYXB0ZWQpOwogCiAgIC8vIE5vIGFyZ3VtZW50cyBhZGFwdG9y IGZyYW1lLgpAQCAtMzYxMSwxNSArMzYxMSwxNSBAQAogCiAgIC8vIFNraXAgdGhlIGFyZ3VtZW50 cyBhZGFwdG9yIGZyYW1lIGlmIGl0IGV4aXN0cy4KICAgTmVhckxhYmVsIGNoZWNrX2ZyYW1lX21h cmtlcjsKLSAgX18gU21pQ29tcGFyZShPcGVyYW5kKHRlbXAsIFN0YW5kYXJkRnJhbWVDb25zdGFu dHM6OmtDb250ZXh0T2Zmc2V0KSwKLSAgICAgICAgICAgICAgICBTbWk6OkZyb21JbnQoU3RhY2tG cmFtZTo6QVJHVU1FTlRTX0FEQVBUT1IpKTsKKyAgX18gQ21wKE9wZXJhbmQodGVtcCwgU3RhbmRh cmRGcmFtZUNvbnN0YW50czo6a0NvbnRleHRPZmZzZXQpLAorICAgICAgICAgU21pOjpGcm9tSW50 KFN0YWNrRnJhbWU6OkFSR1VNRU5UU19BREFQVE9SKSk7CiAgIF9fIGoobm90X2VxdWFsLCAmY2hl Y2tfZnJhbWVfbWFya2VyKTsKICAgX18gbW92cSh0ZW1wLCBPcGVyYW5kKHJheCwgU3RhbmRhcmRG cmFtZUNvbnN0YW50czo6a0NhbGxlckZQT2Zmc2V0KSk7CiAKICAgLy8gQ2hlY2sgdGhlIG1hcmtl ciBpbiB0aGUgY2FsbGluZyBmcmFtZS4KICAgX18gYmluZCgmY2hlY2tfZnJhbWVfbWFya2VyKTsK LSAgX18gU21pQ29tcGFyZShPcGVyYW5kKHRlbXAsIFN0YW5kYXJkRnJhbWVDb25zdGFudHM6OmtN YXJrZXJPZmZzZXQpLAotICAgICAgICAgICAgICAgIFNtaTo6RnJvbUludChTdGFja0ZyYW1lOjpD T05TVFJVQ1QpKTsKKyAgX18gQ21wKE9wZXJhbmQodGVtcCwgU3RhbmRhcmRGcmFtZUNvbnN0YW50 czo6a01hcmtlck9mZnNldCksCisgICAgICAgICBTbWk6OkZyb21JbnQoU3RhY2tGcmFtZTo6Q09O U1RSVUNUKSk7CiB9CiAKIApJbmRleDogc3JjL3g2NC9tYWNyby1hc3NlbWJsZXIteDY0LmNjCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHNyYy94NjQvbWFjcm8tYXNzZW1ibGVyLXg2NC5jYwkocmV2aXNpb24gNzE1 MykKKysrIHNyYy94NjQvbWFjcm8tYXNzZW1ibGVyLXg2NC5jYwkod29ya2luZyBjb3B5KQpAQCAt MTI0LDcgKzEyNCw3IEBACiAgIEFTU0VSVCghb2JqZWN0LmlzKHJzaSkgJiYgIXZhbHVlLmlzKHJz aSkgJiYgIWluZGV4LmlzKHJzaSkpOwogCiAgIC8vIEZpcnN0LCBjaGVjayBpZiBhIHdyaXRlIGJh cnJpZXIgaXMgZXZlbiBuZWVkZWQuIFRoZSB0ZXN0cyBiZWxvdwotICAvLyBjYXRjaCBzdG9yZXMg b2YgU21pcyBhbmQgc3RvcmVzIGludG8geW91bmcgZ2VuLgorICAvLyBjYXRjaCBzdG9yZXMgb2Yg c21pcyBhbmQgc3RvcmVzIGludG8geW91bmcgZ2VuLgogICBMYWJlbCBkb25lOwogICBKdW1wSWZT bWkodmFsdWUsICZkb25lKTsKIApAQCAtMTUzLDcgKzE1Myw3IEBACiAgIEFTU0VSVCghb2JqZWN0 LmlzKHJzaSkgJiYgIXZhbHVlLmlzKHJzaSkgJiYgIWFkZHJlc3MuaXMocnNpKSk7CiAKICAgLy8g Rmlyc3QsIGNoZWNrIGlmIGEgd3JpdGUgYmFycmllciBpcyBldmVuIG5lZWRlZC4gVGhlIHRlc3Rz IGJlbG93Ci0gIC8vIGNhdGNoIHN0b3JlcyBvZiBTbWlzIGFuZCBzdG9yZXMgaW50byB5b3VuZyBn ZW4uCisgIC8vIGNhdGNoIHN0b3JlcyBvZiBzbWlzIGFuZCBzdG9yZXMgaW50byB5b3VuZyBnZW4u CiAgIExhYmVsIGRvbmU7CiAgIEp1bXBJZlNtaSh2YWx1ZSwgJmRvbmUpOwogCkBAIC04MzcsMTIg KzgzNywyNiBAQAogfQogCiAKLXZvaWQgTWFjcm9Bc3NlbWJsZXI6OlNtaUNvbXBhcmUoUmVnaXN0 ZXIgZHN0LCBSZWdpc3RlciBzcmMpIHsKLSAgY21wcShkc3QsIHNyYyk7Cit2b2lkIE1hY3JvQXNz ZW1ibGVyOjpTbWlDb21wYXJlKFJlZ2lzdGVyIHNtaTEsIFJlZ2lzdGVyIHNtaTIpIHsKKyAgaWYg KEZMQUdfZGVidWdfY29kZSkgeworICAgIEFib3J0SWZOb3RTbWkoc21pMSk7CisgICAgQWJvcnRJ Zk5vdFNtaShzbWkyKTsKKyAgfQorICBjbXBxKHNtaTEsIHNtaTIpOwogfQogCiAKIHZvaWQgTWFj cm9Bc3NlbWJsZXI6OlNtaUNvbXBhcmUoUmVnaXN0ZXIgZHN0LCBTbWkqIHNyYykgeworICBpZiAo RkxBR19kZWJ1Z19jb2RlKSB7CisgICAgQWJvcnRJZk5vdFNtaShkc3QpOworICB9CisgIC8vIEFj dHVhbGx5LCBrbm93aW5nIHRoZSByZWdpc3RlciBpcyBhIHNtaSBkb2Vzbid0IGVuYWJsZSBhbnkg b3B0aW1pemF0aW9ucworICAvLyB3aXRoIHRoZSBjdXJyZW50IHRhZ2dpbmcgc2NoZW1lLgorICBD bXAoZHN0LCBzcmMpOworfQorCisKK3ZvaWQgTWFjcm9Bc3NlbWJsZXI6OkNtcChSZWdpc3RlciBk c3QsIFNtaSogc3JjKSB7CiAgIEFTU0VSVCghZHN0LmlzKGtTY3JhdGNoUmVnaXN0ZXIpKTsKICAg aWYgKHNyYy0+dmFsdWUoKSA9PSAwKSB7CiAgICAgdGVzdHEoZHN0LCBkc3QpOwpAQCAtODU0LDIw ICs4NjgsNDEgQEAKIAogCiB2b2lkIE1hY3JvQXNzZW1ibGVyOjpTbWlDb21wYXJlKFJlZ2lzdGVy IGRzdCwgY29uc3QgT3BlcmFuZCYgc3JjKSB7CisgIGlmIChGTEFHX2RlYnVnX2NvZGUpIHsKKyAg ICBBYm9ydElmTm90U21pKGRzdCk7CisgICAgQWJvcnRJZk5vdFNtaShzcmMpOworICB9CiAgIGNt cHEoZHN0LCBzcmMpOwogfQogCiAKIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OlNtaUNvbXBhcmUoY29u c3QgT3BlcmFuZCYgZHN0LCBSZWdpc3RlciBzcmMpIHsKKyAgaWYgKEZMQUdfZGVidWdfY29kZSkg eworICAgIEFib3J0SWZOb3RTbWkoZHN0KTsKKyAgICBBYm9ydElmTm90U21pKHNyYyk7CisgIH0K ICAgY21wcShkc3QsIHNyYyk7CiB9CiAKIAogdm9pZCBNYWNyb0Fzc2VtYmxlcjo6U21pQ29tcGFy ZShjb25zdCBPcGVyYW5kJiBkc3QsIFNtaSogc3JjKSB7CisgIGlmIChGTEFHX2RlYnVnX2NvZGUp IHsKKyAgICBBYm9ydElmTm90U21pKGRzdCk7CisgIH0KICAgY21wbChPcGVyYW5kKGRzdCwga1Nt aVNoaWZ0IC8ga0JpdHNQZXJCeXRlKSwgSW1tZWRpYXRlKHNyYy0+dmFsdWUoKSkpOwogfQogCiAK K3ZvaWQgTWFjcm9Bc3NlbWJsZXI6OkNtcChjb25zdCBPcGVyYW5kJiBkc3QsIFNtaSogc3JjKSB7 CisgIC8vIFRoZSBPcGVyYW5kIGNhbm5vdCB1c2UgdGhlIHNtaSByZWdpc3Rlciwgc2luY2Ugd2Ug bWF5IHVzZSB0aGUgc2NyYXRjaAorICAvLyByZWdpc3RlciB0byBnZXQgYXJvdW5kIHRoZSBsYWNr IG9mIDY0IGJpdCBpbW1lZGlhdGVzIGluIHRoZSBpbnN0cnVjdGlvbgorICAvLyBzZXQuCisgIFJl Z2lzdGVyIHNtaV9yZWcgPSBHZXRTbWlDb25zdGFudChzcmMpOworICBBU1NFUlQoIWRzdC5BZGRy ZXNzVXNlc1JlZ2lzdGVyKHNtaV9yZWcpKTsKKyAgY21wcShkc3QsIHNtaV9yZWcpOworfQorCisK IHZvaWQgTWFjcm9Bc3NlbWJsZXI6OlNtaUNvbXBhcmVJbnRlZ2VyMzIoY29uc3QgT3BlcmFuZCYg ZHN0LCBSZWdpc3RlciBzcmMpIHsKICAgY21wbChPcGVyYW5kKGRzdCwga1NtaVNoaWZ0IC8ga0Jp dHNQZXJCeXRlKSwgc3JjKTsKIH0KQEAgLTEzNTIsNyArMTM4Nyw3IEBACiAKIHZvaWQgTWFjcm9B c3NlbWJsZXI6OkNtcChSZWdpc3RlciBkc3QsIEhhbmRsZTxPYmplY3Q+IHNvdXJjZSkgewogICBp ZiAoc291cmNlLT5Jc1NtaSgpKSB7Ci0gICAgU21pQ29tcGFyZShkc3QsIFNtaTo6Y2FzdCgqc291 cmNlKSk7CisgICAgQ21wKGRzdCwgU21pOjpjYXN0KCpzb3VyY2UpKTsKICAgfSBlbHNlIHsKICAg ICBNb3ZlKGtTY3JhdGNoUmVnaXN0ZXIsIHNvdXJjZSk7CiAgICAgY21wcShkc3QsIGtTY3JhdGNo UmVnaXN0ZXIpOwpAQCAtMTM2Miw3ICsxMzk3LDcgQEAKIAogdm9pZCBNYWNyb0Fzc2VtYmxlcjo6 Q21wKGNvbnN0IE9wZXJhbmQmIGRzdCwgSGFuZGxlPE9iamVjdD4gc291cmNlKSB7CiAgIGlmIChz b3VyY2UtPklzU21pKCkpIHsKLSAgICBTbWlDb21wYXJlKGRzdCwgU21pOjpjYXN0KCpzb3VyY2Up KTsKKyAgICBDbXAoZHN0LCBTbWk6OmNhc3QoKnNvdXJjZSkpOwogICB9IGVsc2UgewogICAgIEFT U0VSVChzb3VyY2UtPklzSGVhcE9iamVjdCgpKTsKICAgICBtb3ZxKGtTY3JhdGNoUmVnaXN0ZXIs IHNvdXJjZSwgUmVsb2NJbmZvOjpFTUJFRERFRF9PQkpFQ1QpOwpAQCAtMTc1MywxMiArMTc4OCwx NyBAQAogCiAKIHZvaWQgTWFjcm9Bc3NlbWJsZXI6OkFib3J0SWZOb3RTbWkoUmVnaXN0ZXIgb2Jq ZWN0KSB7Ci0gIE5lYXJMYWJlbCBvazsKICAgQ29uZGl0aW9uIGlzX3NtaSA9IENoZWNrU21pKG9i amVjdCk7CiAgIEFzc2VydChpc19zbWksICJPcGVyYW5kIGlzIG5vdCBhIHNtaSIpOwogfQogCiAK K3ZvaWQgTWFjcm9Bc3NlbWJsZXI6OkFib3J0SWZOb3RTbWkoY29uc3QgT3BlcmFuZCYgb2JqZWN0 KSB7CisgIENvbmRpdGlvbiBpc19zbWkgPSBDaGVja1NtaShvYmplY3QpOworICBBc3NlcnQoaXNf c21pLCAiT3BlcmFuZCBpcyBub3QgYSBzbWkiKTsKK30KKworCiB2b2lkIE1hY3JvQXNzZW1ibGVy OjpBYm9ydElmTm90U3RyaW5nKFJlZ2lzdGVyIG9iamVjdCkgewogICB0ZXN0YihvYmplY3QsIElt bWVkaWF0ZShrU21pVGFnTWFzaykpOwogICBBc3NlcnQobm90X2VxdWFsLCAiT3BlcmFuZCBpcyBu b3QgYSBzdHJpbmciKTsKSW5kZXg6IHNyYy94NjQvbWFjcm8tYXNzZW1ibGVyLXg2NC5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHNyYy94NjQvbWFjcm8tYXNzZW1ibGVyLXg2NC5oCShyZXZpc2lvbiA3MTUzKQor Kysgc3JjL3g2NC9tYWNyby1hc3NlbWJsZXIteDY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3OCw4 ICsyNzgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBwb3dlcik7CiAKIAotICAvLyBTaW1wbGUgY29tcGFyaXNvbiBvZiBzbWlzLgotICB2b2lkIFNt aUNvbXBhcmUoUmVnaXN0ZXIgZHN0LCBSZWdpc3RlciBzcmMpOworICAvLyBTaW1wbGUgY29tcGFy aXNvbiBvZiBzbWlzLiAgQm90aCBzaWRlcyBtdXN0IGJlIGtub3duIHNtaXMgdG8gdXNlIHRoZXNl LAorICAvLyBvdGhlcndpc2UgdXNlIENtcC4KKyAgdm9pZCBTbWlDb21wYXJlKFJlZ2lzdGVyIHNt aTEsIFJlZ2lzdGVyIHNtaTIpOwogICB2b2lkIFNtaUNvbXBhcmUoUmVnaXN0ZXIgZHN0LCBTbWkq IHNyYyk7CiAgIHZvaWQgU21pQ29tcGFyZShSZWdpc3RlciBkc3QsIGNvbnN0IE9wZXJhbmQmIHNy Yyk7CiAgIHZvaWQgU21pQ29tcGFyZShjb25zdCBPcGVyYW5kJiBkc3QsIFJlZ2lzdGVyIHNyYyk7 CkBAIC02MDksNiArNjEwLDggQEAKICAgdm9pZCBNb3ZlKGNvbnN0IE9wZXJhbmQmIGRzdCwgSGFu ZGxlPE9iamVjdD4gc291cmNlKTsKICAgdm9pZCBDbXAoUmVnaXN0ZXIgZHN0LCBIYW5kbGU8T2Jq ZWN0PiBzb3VyY2UpOwogICB2b2lkIENtcChjb25zdCBPcGVyYW5kJiBkc3QsIEhhbmRsZTxPYmpl Y3Q+IHNvdXJjZSk7CisgIHZvaWQgQ21wKFJlZ2lzdGVyIGRzdCwgU21pKiBzcmMpOworICB2b2lk IENtcChjb25zdCBPcGVyYW5kJiBkc3QsIFNtaSogc3JjKTsKICAgdm9pZCBQdXNoKEhhbmRsZTxP YmplY3Q+IHNvdXJjZSk7CiAKICAgLy8gRW1pdCBjb2RlIHRvIGRpc2NhcmQgYSBub24tbmVnYXRp dmUgbnVtYmVyIG9mIHBvaW50ZXItc2l6ZWQgZWxlbWVudHMKQEAgLTcwMiw2ICs3MDUsNyBAQAog CiAgIC8vIEFib3J0IGV4ZWN1dGlvbiBpZiBhcmd1bWVudCBpcyBub3QgYSBzbWkuIFVzZWQgaW4g ZGVidWcgY29kZS4KICAgdm9pZCBBYm9ydElmTm90U21pKFJlZ2lzdGVyIG9iamVjdCk7CisgIHZv aWQgQWJvcnRJZk5vdFNtaShjb25zdCBPcGVyYW5kJiBvYmplY3QpOwogCiAgIC8vIEFib3J0IGV4 ZWN1dGlvbiBpZiBhcmd1bWVudCBpcyBhIHN0cmluZy4gVXNlZCBpbiBkZWJ1ZyBjb2RlLgogICB2 b2lkIEFib3J0SWZOb3RTdHJpbmcoUmVnaXN0ZXIgb2JqZWN0KTsK --0016369fa2532950ce049ef07e8c--