Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tGFhT-001ngU-D1 for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Nov 2024 10:55:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tGFhR-00DprU-K1 for pgsql-hackers@arkaria.postgresql.org; Wed, 27 Nov 2024 10:55:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tGFhQ-00Dpqi-Sq for pgsql-hackers@lists.postgresql.org; Wed, 27 Nov 2024 10:55:13 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tGFhJ-0048WK-Ur for pgsql-hackers@lists.postgresql.org; Wed, 27 Nov 2024 10:55:11 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-2ffdbc0c103so1778151fa.3 for ; Wed, 27 Nov 2024 02:55:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732704903; x=1733309703; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=kRU/vpAlEYVUY4LLK65AyXYozVSMVri2B+fg9hizXVs=; b=iv1PFhQ8T3pBLrjBNJrCKr3L4IPw9kQbWTdcwSg4Ip3LPlaSyFa7gu2BA0XmHesl55 kEZOWDw6+A4WrvJDRTYFMFIaqrvRbU27szMpB4aCJTjh/uJPJKxm2vmV9dFOpgyrbzAm i4BaxzEv1pFRHiQCVFpG2Sh8SOf+zU42EqlsyJenqYX0zcXhEKD6imeQWc4puxPaeTNM NTDq1DKFpeC8b6I0Kuk2jMvI8d1XPWTncXTTujk7fvjVC+atNbZVzbj8pjKZISM4OE4V eFlszDFnUbKZ+PsjgLyH0su6Tpg8FBQ9N9TALw903UvbHvwC3952f0BwLDnrr2AHtSpp xtSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732704903; x=1733309703; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kRU/vpAlEYVUY4LLK65AyXYozVSMVri2B+fg9hizXVs=; b=APIeJn5Wwycpj7PabORTLqhT3ubiAbPmD+FOgPq83WEGVJ+sH7xLxc5Sv3c7FcDp+Y Mxg/f+kNgrE8k5Qs8bNkptWIJiHIlAgEnNeb24jZzY0cYyuqhjstiq0Dmb177Yfdi1TY kntCM8uZoiiYLgWHpUQGOnt7Fhxr6YY1/2GaNJQNkxUrFOYMC4FQw+kJUHUq11DDA4RJ Dt1gaqS7/wkFIoF3jo9JMeyG2bUYCf0JONYcpeBI43H10GjVTZ/k3QQr/sdCDZKBRhKR +MjsTpJTxKMfvwyUC2NviRrCxqoVD6BV5HPPTlPS8FCrbcUTgh4RPolsjF99QtMn0L08 vu7w== X-Forwarded-Encrypted: i=1; AJvYcCUv4JQ3dIRxvkSq6gZgcUkHqLHUNj5n9AC/NFWKmaSsrQbi4zFL8cCOKXlkM1XsK8sw5PhuCkH7jGbD6hQo@lists.postgresql.org X-Gm-Message-State: AOJu0YwtJMf7KdaNRF1z1DEkZBKp6Jg+IXnYJMk5tiUD4rRjArza6821 RnEI0RZFSquDS40yx+1QKPrtTIlaojO79OjPsckT0tzqMkJLoHxURWSImikFmt7ciUyP2gF43vf Jhq3J1Q2zWdgUVZX3oy0PA654BnAGmYfJopQa X-Gm-Gg: ASbGncv5e0+w4H1Jazy4tGczR+N1qir0tzwLzC+l+u1rIsAJc8diMs023EJ8Et+1lBz KP9KXbNZfS6BPHXfafAM3Yp6CCz21UDac X-Google-Smtp-Source: AGHT+IENTIMcIaYe0NTrvbL7jE2HGBfsBX70+Y4IhJxqZa6WWWiOaCg+ocdmALMN8wbPO/cLB0RLyEWZlqB7jIRNGko= X-Received: by 2002:a2e:9151:0:b0:2ff:d821:3398 with SMTP id 38308e7fff4ca-2ffd82134bbmr11722131fa.21.1732704903138; Wed, 27 Nov 2024 02:55:03 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Wed, 27 Nov 2024 16:24:49 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: Peter Smith Cc: vignesh C , shveta malik , Bharath Rupireddy , Amit Kapila , Ajin Cherian , Bertrand Drouvot , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000040b3c00627e2ccc8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000040b3c00627e2ccc8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Nov 27, 2024 at 8:39=E2=80=AFAM Peter Smith = wrote: > > Hi Nisha, > > Here are some review comments for the patch v50-0002. > > =3D=3D=3D=3D=3D=3D > src/backend/replication/slot.c > > InvalidatePossiblyObsoleteSlot: > > 1. > + if (now && > + TimestampDifferenceExceeds(s->inactive_since, now, > + replication_slot_inactive_timeout_sec * 1000)) > > Previously this was using an additional call to SlotInactiveTimeoutCheckA= llowed: > > + if (SlotInactiveTimeoutCheckAllowed(s) && > + TimestampDifferenceExceeds(s->inactive_since, now, > + replication_slot_inactive_timeout * 1000)) > > Is it OK to skip that call? e.g. can the slot fields possibly change > between assigning the 'now' and acquiring the mutex? If not, then the > current code is fine. The only reason for asking is because it is > slightly suspicious that it was not done this "easy" way in the first > place. > Good catch! While the mutex was being acquired right after the now assignment, there was a rare chance of another process modifying the slot in the meantime. So, I reverted the change in v51. To optimize the SlotInactiveTimeoutCheckAllowed() call, it's sufficient to check it here instead of during the 'now' assignment. Attached v51 patch-set addressing all comments in [1] and [2]. [1] https://www.postgresql.org/message-id/CAHut%2BPtuiQj1hwm%3D73xJ8hWuw-9c= XbN4dHJHpM6EXxubDJgmFA%40mail.gmail.com [2] https://www.postgresql.org/message-id/CAHut%2BPvi-g%2B9%2Bhjmjg44OzTN9L= 3YGQiCXBDAVaTVWvSn5SSwmw%40mail.gmail.com -- Thanks, Nisha --00000000000040b3c00627e2ccc8 Content-Type: application/octet-stream; name="v51-0001-Add-error-handling-while-acquiring-a-replication.patch" Content-Disposition: attachment; filename="v51-0001-Add-error-handling-while-acquiring-a-replication.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3zqpiao0 RnJvbSAyMzE5ZjFiZjc2MWZlMmRlYTFhYTg0MDY4ZjQwMGI2NGYwNDVlMzE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDE4IE5vdiAyMDI0IDE2OjEzOjI2ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NTEgMS8yXSBBZGQgZXJyb3IgaGFuZGxpbmcgd2hpbGUgYWNxdWlyaW5nIGEgcmVwbGljYXRpb24g c2xvdAoKSW4gUmVwbGljYXRpb25TbG90QWNxdWlyZSgpLCByYWlzZSBhbiBlcnJvciBmb3IgaW52 YWxpZCBzbG90cyBpZiB0aGUKY2FsbGVyIHNwZWNpZmllcyBlcnJvcl9pZl9pbnZhbGlkPXRydWUu Ci0tLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8ICA0ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAgICAgICAgfCA0OCArKysr KysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyAgICAg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgICAgICAg ICAgIHwgIDQgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyAg ICB8ICAyICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggICAgICAgICAgICAgICAg fCAgMyArLQogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwgICAgIHwg IDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKaW5k ZXggYjRkZDVjY2U3NS4uNTZmYzFhNDVhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xvZ2ljYWxmdW5jcy5jCkBAIC0xOTcsNyArMTk3LDcgQEAgcGdfbG9naWNhbF9z bG90X2dldF9jaGFuZ2VzX2d1dHMoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sIGJvb2wgY29uZmly bSwgYm9vbCBiaW4KIAllbHNlCiAJCWVuZF9vZl93YWwgPSBHZXRYTG9nUmVwbGF5UmVjUHRyKE5V TEwpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSk7CisJ UmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpuYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAKIAlQ R19UUlkoKTsKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Nsb3RzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMK aW5kZXggZjRmODBiMjMxMi4uODNkNmUzODExZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIGRyb3BfbG9jYWxfb2Jzb2xl dGVfc2xvdHMoTGlzdCAqcmVtb3RlX3Nsb3RfbGlzdCkKIAogCQkJaWYgKHN5bmNlZF9zbG90KQog CQkJewotCQkJCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cihsb2NhbF9zbG90LT5kYXRh Lm5hbWUpLCB0cnVlKTsKKwkJCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIobG9jYWxf c2xvdC0+ZGF0YS5uYW1lKSwgdHJ1ZSwgZmFsc2UpOwogCQkJCVJlcGxpY2F0aW9uU2xvdERyb3BB Y3F1aXJlZCgpOwogCQkJfQogCkBAIC02NjUsNyArNjY1LDcgQEAgc3luY2hyb25pemVfb25lX3Ns b3QoUmVtb3RlU2xvdCAqcmVtb3RlX3Nsb3QsIE9pZCByZW1vdGVfZGJpZCkKIAkJICogcHJlLWNo ZWNrIHRvIGVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBvZiB0aGUgc2xvdCBwcm9wZXJ0aWVzIGlz CiAJCSAqIGNoYW5nZWQgYmVmb3JlIGFjcXVpcmluZyB0aGUgc2xvdC4KIAkJICovCi0JCVJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUocmVtb3RlX3Nsb3QtPm5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlv blNsb3RBY3F1aXJlKHJlbW90ZV9zbG90LT5uYW1lLCB0cnVlLCBmYWxzZSk7CiAKIAkJQXNzZXJ0 KHNsb3QgPT0gTXlSZXBsaWNhdGlvblNsb3QpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKaW5kZXgg NjgyODEwMGNmMS4uODQ3OWQwM2M2MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYwpAQCAtNTM1LDkg KzUzNSwxMiBAQCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRleCwgTmFtZSBuYW1lKQogICoK ICAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBub3dhaXQgaXMgdHJ1ZSBhbmQgdGhlIHNsb3QgaXMg Y3VycmVudGx5IGluIHVzZS4gSWYKICAqIG5vd2FpdCBpcyBmYWxzZSwgd2Ugc2xlZXAgdW50aWwg dGhlIHNsb3QgaXMgcmVsZWFzZWQgYnkgdGhlIG93bmluZyBwcm9jZXNzLgorICoKKyAqIEFuIGVy cm9yIGlzIHJhaXNlZCBpZiBlcnJvcl9pZl9pbnZhbGlkIGlzIHRydWUgYW5kIHRoZSBzbG90IGlz IGZvdW5kIHRvCisgKiBiZSBpbnZhbGlkLgogICovCiB2b2lkCi1SZXBsaWNhdGlvblNsb3RBY3F1 aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KQorUmVwbGljYXRpb25TbG90QWNxdWly ZShjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCwgYm9vbCBlcnJvcl9pZl9pbnZhbGlkKQog ewogCVJlcGxpY2F0aW9uU2xvdCAqczsKIAlpbnQJCQlhY3RpdmVfcGlkOwpAQCAtNjE1LDYgKzYx OCw0NSBAQCByZXRyeToKIAkvKiBXZSBtYWRlIHRoaXMgc2xvdCBhY3RpdmUsIHNvIGl0J3Mgb3Vy cyBub3cuICovCiAJTXlSZXBsaWNhdGlvblNsb3QgPSBzOwogCisJLyoKKwkgKiBBbiBlcnJvciBp cyByYWlzZWQgaWYgZXJyb3JfaWZfaW52YWxpZCBpcyB0cnVlIGFuZCB0aGUgc2xvdCBpcyBmb3Vu ZCB0bworCSAqIGJlIGludmFsaWQuCisJICovCisJaWYgKGVycm9yX2lmX2ludmFsaWQgJiYKKwkJ cy0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQorCXsKKwkJU3RyaW5nSW5mb0Rh dGEgZXJyX2RldGFpbDsKKworCQlpbml0U3RyaW5nSW5mbygmZXJyX2RldGFpbCk7CisKKwkJc3dp dGNoIChzLT5kYXRhLmludmFsaWRhdGVkKQorCQl7CisJCQljYXNlIFJTX0lOVkFMX1dBTF9SRU1P VkVEOgorCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsIF8oIlRoaXMgc2xvdCBoYXMg YmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIHRoZSByZXF1aXJlZCBXQUwgaGFzIGJlZW4gcmVtb3Zl ZC4iKSk7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgUlNfSU5WQUxfSE9SSVpPTjoKKwkJCQlhcHBl bmRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsLCBfKCJUaGlzIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0 ZWQgYmVjYXVzZSB0aGUgcmVxdWlyZWQgcm93cyBoYXZlIGJlZW4gcmVtb3ZlZC4iKSk7CisJCQkJ YnJlYWs7CisKKwkJCWNhc2UgUlNfSU5WQUxfV0FMX0xFVkVMOgorCQkJCWFwcGVuZFN0cmluZ0lu Zm8oJmVycl9kZXRhaWwsIF8oIlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNl IFwiJXNcIiBpcyBpbnN1ZmZpY2llbnQgZm9yIHNsb3QuIiksCisJCQkJCQkJCSAid2FsX2xldmVs Iik7CisJCQkJYnJlYWs7CisKKwkJCWNhc2UgUlNfSU5WQUxfTk9ORToKKwkJCQlwZ191bnJlYWNo YWJsZSgpOworCQl9CisKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCWVycm1zZygiY2FuIG5vIGxvbmdl ciBnZXQgY2hhbmdlcyBmcm9tIHJlcGxpY2F0aW9uIHNsb3QgXCIlc1wiIiwKKwkJCQkJICAgTmFt ZVN0cihzLT5kYXRhLm5hbWUpKSwKKwkJCQllcnJkZXRhaWxfaW50ZXJuYWwoIiVzIiwgZXJyX2Rl dGFpbC5kYXRhKSk7CisKKwkJcGZyZWUoZXJyX2RldGFpbC5kYXRhKTsKKwl9CisKIAkvKgogCSAq IFRoZSBjYWxsIHRvIHBnc3RhdF9hY3F1aXJlX3JlcGxzbG90KCkgcHJvdGVjdHMgYWdhaW5zdCBz dGF0cyBmb3IgYQogCSAqIGRpZmZlcmVudCBzbG90LCBmcm9tIGJlZm9yZSBhIHJlc3RhcnQgb3Ig c3VjaCwgYmVpbmcgcHJlc2VudCBkdXJpbmcKQEAgLTc4NSw3ICs4MjcsNyBAQCBSZXBsaWNhdGlv blNsb3REcm9wKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KQogewogCUFzc2VydChNeVJl cGxpY2F0aW9uU2xvdCA9PSBOVUxMKTsKIAotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUobmFtZSwg bm93YWl0KTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIG5vd2FpdCwgZmFsc2UpOwog CiAJLyoKIAkgKiBEbyBub3QgYWxsb3cgdXNlcnMgdG8gZHJvcCB0aGUgc2xvdHMgd2hpY2ggYXJl IGN1cnJlbnRseSBiZWluZyBzeW5jZWQKQEAgLTgxMiw3ICs4NTQsNyBAQCBSZXBsaWNhdGlvblNs b3RBbHRlcihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBib29sICpmYWlsb3ZlciwKIAlBc3NlcnQo TXlSZXBsaWNhdGlvblNsb3QgPT0gTlVMTCk7CiAJQXNzZXJ0KGZhaWxvdmVyIHx8IHR3b19waGFz ZSk7CiAKLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKG5hbWUsIGZhbHNlKTsKKwlSZXBsaWNhdGlv blNsb3RBY3F1aXJlKG5hbWUsIGZhbHNlLCBmYWxzZSk7CiAKIAlpZiAoU2xvdElzUGh5c2ljYWwo TXlSZXBsaWNhdGlvblNsb3QpKQogCQllcmVwb3J0KEVSUk9SLApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90ZnVuY3MuYwppbmRleCA0ODhhMTYxYjNlLi41NzhjZmY2NGM4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9zbG90ZnVuY3MuYwpAQCAtNTM2LDcgKzUzNiw3IEBAIHBnX3JlcGxpY2F0aW9uX3Nsb3Rf YWR2YW5jZShQR19GVU5DVElPTl9BUkdTKQogCQltb3ZldG8gPSBNaW4obW92ZXRvLCBHZXRYTG9n UmVwbGF5UmVjUHRyKE5VTEwpKTsKIAogCS8qIEFjcXVpcmUgdGhlIHNsb3Qgc28gd2UgIm93biIg aXQgKi8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSk7 CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90bmFtZSksIHRydWUsIHRydWUp OwogCiAJLyogQSBzbG90IHdob3NlIHJlc3RhcnRfbHNuIGhhcyBuZXZlciBiZWVuIHJlc2VydmVk IGNhbm5vdCBiZSBhZHZhbmNlZCAqLwogCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKE15UmVwbGlj YXRpb25TbG90LT5kYXRhLnJlc3RhcnRfbHNuKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVy LmMKaW5kZXggMzcxZWVmM2RkZC4uYjM2YWU5MGIyYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2Fs c2VuZGVyLmMKQEAgLTgxNiw3ICs4MTYsNyBAQCBTdGFydFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGlj YXRpb25DbWQgKmNtZCkKIAogCWlmIChjbWQtPnNsb3RuYW1lKQogCXsKLQkJUmVwbGljYXRpb25T bG90QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0cnVlKTsKKwkJUmVwbGljYXRpb25TbG90QWNxdWly ZShjbWQtPnNsb3RuYW1lLCB0cnVlLCB0cnVlKTsKIAkJaWYgKFNsb3RJc0xvZ2ljYWwoTXlSZXBs aWNhdGlvblNsb3QpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBT dGFydExvZ2ljYWxSZXBsaWNhdGlvbihTdGFydFJlcGxpY2F0aW9uQ21kICpjbWQpCiAKIAlBc3Nl cnQoIU15UmVwbGljYXRpb25TbG90KTsKIAotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoY21kLT5z bG90bmFtZSwgdHJ1ZSk7CisJUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3RuYW1lLCB0 cnVlLCB0cnVlKTsKIAogCS8qCiAJICogRm9yY2UgYSBkaXNjb25uZWN0LCBzbyB0aGF0IHRoZSBk ZWNvZGluZyBjb2RlIGRvZXNuJ3QgbmVlZCB0byBjYXJlCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQv cGdfdXBncmFkZV9zdXBwb3J0LmMKaW5kZXggOGE0NWI1ODI3ZS4uMzMyMjg0OGUwMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYwpAQCAtMjk4LDcgKzI5OCw3 IEBAIGJpbmFyeV91cGdyYWRlX2xvZ2ljYWxfc2xvdF9oYXNfY2F1Z2h0X3VwKFBHX0ZVTkNUSU9O X0FSR1MpCiAJc2xvdF9uYW1lID0gUEdfR0VUQVJHX05BTUUoMCk7CiAKIAkvKiBBY3F1aXJlIHRo ZSBnaXZlbiBzbG90ICovCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3RyKCpzbG90X25h bWUpLCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RfbmFtZSks IHRydWUsIGZhbHNlKTsKIAogCUFzc2VydChTbG90SXNMb2dpY2FsKE15UmVwbGljYXRpb25TbG90 KSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCBkMmNmNzg2ZmQ1Li5mNWYyZDIyMTYzIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC0yNTMsNyArMjUzLDggQEAgZXh0ZXJuIHZvaWQgUmVw bGljYXRpb25TbG90RHJvcEFjcXVpcmVkKHZvaWQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25T bG90QWx0ZXIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgYm9vbCAqZmFpbG92ZXIsCiAJCQkJCQkJ CSBjb25zdCBib29sICp0d29fcGhhc2UpOwogCi1leHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RB Y3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KTsKK2V4dGVybiB2b2lkIFJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUoY29uc3QgY2hhciAqbmFtZSwgYm9vbCBub3dhaXQsCisJCQkJCQkJ CSAgIGJvb2wgZXJyb3JfaWZfaW52YWxpZCk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RS ZWxlYXNlKHZvaWQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90Q2xlYW51cChib29sIHN5 bmNlZF9vbmx5KTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdFNhdmUodm9pZCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbCBiL3NyYy90 ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsCmluZGV4IGVmYjRiYTNhZjEuLjMz M2UwNDBlN2YgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xp bWl0LnBsCisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBsCkBA IC0yMzQsNyArMjM0LDcgQEAgbXkgJGZhaWxlZCA9IDA7CiBmb3IgKG15ICRpID0gMDsgJGkgPCAx MCAqICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0OyAkaSsrKQogewog CWlmICgkbm9kZV9zdGFuZGJ5LT5sb2dfY29udGFpbnMoCi0JCQkicmVxdWVzdGVkIFdBTCBzZWdt ZW50IFswLTlBLUZdKyBoYXMgYWxyZWFkeSBiZWVuIHJlbW92ZWQiLAorCQkJIlRoaXMgc2xvdCBo YXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIHRoZSByZXF1aXJlZCBXQUwgaGFzIGJlZW4gcmVt b3ZlZCIsCiAJCQkkbG9nc3RhcnQpKQogCXsKIAkJJGZhaWxlZCA9IDE7Ci0tIAoyLjM0LjEKCg== --00000000000040b3c00627e2ccc8 Content-Type: application/octet-stream; name="v51-0002-Introduce-inactive_timeout-based-replication-slo.patch" Content-Disposition: attachment; filename="v51-0002-Introduce-inactive_timeout-based-replication-slo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m3zqpkt71 RnJvbSA1NDhiODEzZWQ3ZTJlNzkzM2UzZjEwYTM5MzhiYjIxZDhhNTdhODY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBXZWQsIDI3IE5vdiAyMDI0IDEwOjUyOjE0ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NTEgMi8yXSBJbnRyb2R1Y2UgaW5hY3RpdmVfdGltZW91dCBiYXNlZCByZXBsaWNhdGlvbiBzbG90 CiBpbnZhbGlkYXRpb24KClRpbGwgbm93LCBwb3N0Z3JlcyBoYXMgdGhlIGFiaWxpdHkgdG8gaW52 YWxpZGF0ZSBpbmFjdGl2ZQpyZXBsaWNhdGlvbiBzbG90cyBiYXNlZCBvbiB0aGUgYW1vdW50IG9m IFdBTCAoc2V0IHZpYQptYXhfc2xvdF93YWxfa2VlcF9zaXplIEdVQykgdGhhdCB3aWxsIGJlIG5l ZWRlZCBmb3IgdGhlIHNsb3RzIGluCmNhc2UgdGhleSBiZWNvbWUgYWN0aXZlLiBIb3dldmVyLCBj aG9vc2luZyBhIGRlZmF1bHQgdmFsdWUgZm9yCnRoaXMgR1VDIGlzIGEgYml0IHRyaWNreS4gQmVj YXVzZSB0aGUgYW1vdW50IG9mIFdBTCBhIGRhdGFiYXNlCmdlbmVyYXRlcywgYW5kIHRoZSBhbGxv Y2F0ZWQgc3RvcmFnZSBwZXIgaW5zdGFuY2Ugd2lsbCB2YXJ5CmdyZWF0bHkgaW4gcHJvZHVjdGlv biwgbWFraW5nIGl0IGRpZmZpY3VsdCB0byBwaW4gZG93biBhCm9uZS1zaXplLWZpdHMtYWxsIHZh bHVlLgoKSXQgaXMgb2Z0ZW4gZWFzeSBmb3IgdXNlcnMgdG8gc2V0IGEgdGltZW91dCBvZiBzYXkg MSBvciAyIG9yIG4KZGF5cywgYWZ0ZXIgd2hpY2ggYWxsIHRoZSBpbmFjdGl2ZSBzbG90cyBnZXQg aW52YWxpZGF0ZWQuIFRoaXMKY29tbWl0IGludHJvZHVjZXMgYSBHVUMgbmFtZWQgcmVwbGljYXRp b25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0LgpXaGVuIHNldCwgcG9zdGdyZXMgaW52YWxpZGF0ZXMg c2xvdHMgKGR1cmluZyBub24tc2h1dGRvd24KY2hlY2twb2ludHMpIHRoYXQgYXJlIGluYWN0aXZl IGZvciBsb25nZXIgdGhhbiB0aGlzIGFtb3VudCBvZgp0aW1lLgoKTm90ZSB0aGF0IHRoZSBpbmFj dGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMgbm90CmFwcGxpY2FibGUgZm9y IHNsb3RzIG9uIHRoZSBzdGFuZGJ5IHNlcnZlciB0aGF0IGFyZSBiZWluZyBzeW5jZWQKZnJvbSB0 aGUgcHJpbWFyeSBzZXJ2ZXIgKGkuZS4sIHN0YW5kYnkgc2xvdHMgaGF2aW5nICdzeW5jZWQnIGZp ZWxkCid0cnVlJykuIFN5bmNlZCBzbG90cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgaW5h Y3RpdmUgYmVjYXVzZQp0aGV5IGRvbid0IHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyB0byBwcm9k dWNlIGNoYW5nZXMuCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAg ICAgICAgIHwgIDM1ICsrKysKIGRvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCAgICAgICAg ICAgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3lu Yy5jICAgIHwgIDEzICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgICAgICAgICAg ICAgICAgfCAxNTkgKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190 YWJsZXMuYyAgICAgICAgICAgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdy ZXNxbC5jb25mLnNhbXBsZSB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90Lmgg ICAgICAgICAgICAgICAgfCAgMjIgKysKIHNyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oICAg ICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZCAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNTBfaW52YWxpZGF0ZV9z bG90cy5wbCAgIHwgMTkwICsrKysrKysrKysrKysrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgNDE5 IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFsaWRhdGVfc2xvdHMucGwKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNzZh YjcyZGI5Ni4uYjhkMDk0NDQ3YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtNDU4NSw2ICs0NTg1LDQxIEBAIHJl c3RvcmVfY29tbWFuZCA9ICdjb3B5ICJDOlxcc2VydmVyXFxhcmNoaXZlZGlyXFwlZiIgIiVwIicg ICMgV2luZG93cwogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAg ICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXJlcGxpY2F0aW9uLXNsb3QtaW5hY3RpdmUtdGltZW91 dCIgeHJlZmxhYmVsPSJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQiPgorICAgICAg PHRlcm0+PHZhcm5hbWU+cmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0PC92YXJuYW1l PiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmlt YXJ5Pjx2YXJuYW1lPnJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dDwvdmFybmFtZT4g Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAg ICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSW52 YWxpZGF0ZSByZXBsaWNhdGlvbiBzbG90cyB0aGF0IGFyZSBpbmFjdGl2ZSBmb3IgbG9uZ2VyIHRo YW4gdGhpcworICAgICAgICBhbW91bnQgb2YgdGltZS4gSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZp ZWQgd2l0aG91dCB1bml0cywKKyAgICAgICAgaXQgaXMgdGFrZW4gYXMgc2Vjb25kcy4gQSB2YWx1 ZSBvZiB6ZXJvICh3aGljaCBpcyBkZWZhdWx0KSBkaXNhYmxlcworICAgICAgICB0aGUgaW5hY3Rp dmUgdGltZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtLiBUaGlzIHBhcmFtZXRlciBjYW4gb25s eQorICAgICAgICBiZSBzZXQgaW4gdGhlIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVu YW1lPiBmaWxlIG9yIG9uIHRoZQorICAgICAgICBzZXJ2ZXIgY29tbWFuZCBsaW5lLgorICAgICAg IDwvcGFyYT4KKworICAgICAgIDxwYXJhPgorICAgICAgICBTbG90IGludmFsaWRhdGlvbiBkdWUg dG8gaW5hY3RpdmUgdGltZW91dCBvY2N1cnMgZHVyaW5nIGNoZWNrcG9pbnQuCisgICAgICAgIFRo ZSBkdXJhdGlvbiBvZiBzbG90IGluYWN0aXZpdHkgaXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgc2xv dCdzCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9InZpZXctcGctcmVwbGljYXRpb24tc2xvdHMiPnBn X3JlcGxpY2F0aW9uX3Nsb3RzPC9saW5rPi48c3RydWN0ZmllbGQ+aW5hY3RpdmVfc2luY2U8L3N0 cnVjdGZpZWxkPgorICAgICAgICB2YWx1ZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFy YT4KKyAgICAgICAgTm90ZSB0aGF0IHRoZSBpbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBt ZWNoYW5pc20gaXMgbm90CisgICAgICAgIGFwcGxpY2FibGUgZm9yIHNsb3RzIG9uIHRoZSBzdGFu ZGJ5IHNlcnZlciB0aGF0IGFyZSBiZWluZyBzeW5jZWQKKyAgICAgICAgZnJvbSB0aGUgcHJpbWFy eSBzZXJ2ZXIgKGkuZS4sIHN0YW5kYnkgc2xvdHMgaGF2aW5nCisgICAgICAgIDxsaW5rIGxpbmtl bmQ9InZpZXctcGctcmVwbGljYXRpb24tc2xvdHMiPnBnX3JlcGxpY2F0aW9uX3Nsb3RzPC9saW5r Pi48c3RydWN0ZmllbGQ+c3luY2VkPC9zdHJ1Y3RmaWVsZD4KKyAgICAgICAgdmFsdWUgPGxpdGVy YWw+dHJ1ZTwvbGl0ZXJhbD4pLgorICAgICAgICBTeW5jZWQgc2xvdHMgYXJlIGFsd2F5cyBjb25z aWRlcmVkIHRvIGJlIGluYWN0aXZlIGJlY2F1c2UgdGhleSBkb24ndAorICAgICAgICBwZXJmb3Jt IGxvZ2ljYWwgZGVjb2RpbmcgdG8gcHJvZHVjZSBjaGFuZ2VzLgorICAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0ZW50 cnkgaWQ9Imd1Yy10cmFjay1jb21taXQtdGltZXN0YW1wIiB4cmVmbGFiZWw9InRyYWNrX2NvbW1p dF90aW1lc3RhbXAiPgogICAgICAgPHRlcm0+PHZhcm5hbWU+dHJhY2tfY29tbWl0X3RpbWVzdGFt cDwvdmFybmFtZT4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQogICAgICAgPGluZGV4dGVybT4KZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9z eXN0ZW0tdmlld3Muc2dtbAppbmRleCBhNTg2MTU2NjE0Li5iOTBjMTYzZWIyIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N5c3Rl bS12aWV3cy5zZ21sCkBAIC0yNTY2LDcgKzI1NjYsOCBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tz IHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgogICAgICAgICBUaGUgdGltZSB3aGVuIHRoZSBzbG90IGJlY2FtZSBpbmFjdGl2ZS4g PGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaWYgdGhlCi0gICAgICAgIHNsb3QgaXMgY3VycmVudGx5 IGJlaW5nIHN0cmVhbWVkLgorICAgICAgICBzbG90IGlzIGN1cnJlbnRseSBiZWluZyBzdHJlYW1l ZC4gT25jZSB0aGUgc2xvdCBpcyBpbnZhbGlkYXRlZCwgdGhpcworICAgICAgICB2YWx1ZSB3aWxs IHJlbWFpbiB1bmNoYW5nZWQgdW50aWwgd2Ugc2h1dGRvd24gdGhlIHNlcnZlci4KICAgICAgICAg Tm90ZSB0aGF0IGZvciBzbG90cyBvbiB0aGUgc3RhbmRieSB0aGF0IGFyZSBiZWluZyBzeW5jZWQg ZnJvbSBhCiAgICAgICAgIHByaW1hcnkgc2VydmVyICh3aG9zZSA8c3RydWN0ZmllbGQ+c3luY2Vk PC9zdHJ1Y3RmaWVsZD4gZmllbGQgaXMKICAgICAgICAgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4p LCB0aGUgPHN0cnVjdGZpZWxkPmluYWN0aXZlX3NpbmNlPC9zdHJ1Y3RmaWVsZD4KQEAgLTI2MjAs NiArMjYyMSwxMyBAQCBTRUxFQ1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVw YXJlZF94YWN0cyBwcHgKICAgICAgICAgICBwZXJmb3JtIGxvZ2ljYWwgZGVjb2RpbmcuICBJdCBp cyBzZXQgb25seSBmb3IgbG9naWNhbCBzbG90cy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgPGxpdGVyYWw+aW5hY3RpdmVfdGltZW91dDwvbGl0ZXJhbD4gbWVhbnMgdGhhdCB0aGUgc2xv dCBoYXMgcmVtYWluZWQKKyAgICAgICAgICBpbmFjdGl2ZSBiZXlvbmQgdGhlIGR1cmF0aW9uIHNw ZWNpZmllZCBieSB0aGUKKyAgICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtcmVwbGljYXRpb24t c2xvdC1pbmFjdGl2ZS10aW1lb3V0Ii8+IHBhcmFtZXRlci4KKyAgICAgICAgIDwvcGFyYT4KKyAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xv dHN5bmMuYwppbmRleCA4M2Q2ZTM4MTFlLi45Nzc3YzZhOWNjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jCkBAIC0xNTA4LDcgKzE1MDgsNyBAQCBSZXBsU2xv dFN5bmNXb3JrZXJNYWluKGNoYXIgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0dXBfZGF0YV9s ZW4pCiBzdGF0aWMgdm9pZAogdXBkYXRlX3N5bmNlZF9zbG90c19pbmFjdGl2ZV9zaW5jZSh2b2lk KQogewotCVRpbWVzdGFtcFR6IG5vdyA9IDA7CisJVGltZXN0YW1wVHogbm93OwogCiAJLyoKIAkg KiBXZSBuZWVkIHRvIHVwZGF0ZSBpbmFjdGl2ZV9zaW5jZSBvbmx5IHdoZW4gd2UgYXJlIHByb21v dGluZyBzdGFuZGJ5IHRvCkBAIC0xNTIzLDYgKzE1MjMsOSBAQCB1cGRhdGVfc3luY2VkX3Nsb3Rz X2luYWN0aXZlX3NpbmNlKHZvaWQpCiAJLyogVGhlIHNsb3Qgc3luYyB3b3JrZXIgb3IgU1FMIGZ1 bmN0aW9uIG11c3RuJ3QgYmUgcnVubmluZyBieSBub3cgKi8KIAlBc3NlcnQoKFNsb3RTeW5jQ3R4 LT5waWQgPT0gSW52YWxpZFBpZCkgJiYgIVNsb3RTeW5jQ3R4LT5zeW5jaW5nKTsKIAorCS8qIFVz ZSBzYW1lIGluYWN0aXZlX3NpbmNlIHRpbWUgZm9yIGFsbCBzbG90cyAqLworCW5vdyA9IEdldEN1 cnJlbnRUaW1lc3RhbXAoKTsKKwogCUxXTG9ja0FjcXVpcmUoUmVwbGljYXRpb25TbG90Q29udHJv bExvY2ssIExXX1NIQVJFRCk7CiAKIAlmb3IgKGludCBpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlv bl9zbG90czsgaSsrKQpAQCAtMTUzNywxMyArMTU0MCw3IEBAIHVwZGF0ZV9zeW5jZWRfc2xvdHNf aW5hY3RpdmVfc2luY2Uodm9pZCkKIAkJCS8qIFRoZSBzbG90IG11c3Qgbm90IGJlIGFjcXVpcmVk IGJ5IGFueSBwcm9jZXNzICovCiAJCQlBc3NlcnQocy0+YWN0aXZlX3BpZCA9PSAwKTsKIAotCQkJ LyogVXNlIHRoZSBzYW1lIGluYWN0aXZlX3NpbmNlIHRpbWUgZm9yIGFsbCB0aGUgc2xvdHMuICov Ci0JCQlpZiAobm93ID09IDApCi0JCQkJbm93ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCi0J CQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKLQkJCXMtPmluYWN0aXZlX3NpbmNlID0gbm93 OwotCQkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7CisJCQlSZXBsaWNhdGlvblNsb3RTZXRJ bmFjdGl2ZVNpbmNlKHMsIG5vdywgdHJ1ZSk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Qu YwppbmRleCA4NDc5ZDAzYzYzLi4xZTgyYjdmYWI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jCkBA IC0xMDcsMTAgKzEwNywxMSBAQCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1 c2VzW10gPSB7CiAJW1JTX0lOVkFMX1dBTF9SRU1PVkVEXSA9ICJ3YWxfcmVtb3ZlZCIsCiAJW1JT X0lOVkFMX0hPUklaT05dID0gInJvd3NfcmVtb3ZlZCIsCiAJW1JTX0lOVkFMX1dBTF9MRVZFTF0g PSAid2FsX2xldmVsX2luc3VmZmljaWVudCIsCisJW1JTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVRd ID0gImluYWN0aXZlX3RpbWVvdXQiLAogfTsKIAogLyogTWF4aW11bSBudW1iZXIgb2YgaW52YWxp ZGF0aW9uIGNhdXNlcyAqLwotI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX1dB TF9MRVZFTAorI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX0lOQUNUSVZFX1RJ TUVPVVQKIAogU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihTbG90SW52YWxpZGF0aW9uQ2F1c2Vz KSA9PSAoUlNfSU5WQUxfTUFYX0NBVVNFUyArIDEpLAogCQkJCSAiYXJyYXkgbGVuZ3RoIG1pc21h dGNoIik7CkBAIC0xNDAsNiArMTQxLDcgQEAgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9u U2xvdCA9IE5VTEw7CiAvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQltYXhfcmVwbGljYXRpb25f c2xvdHMgPSAxMDsgLyogdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlcGxpY2F0aW9uCiAJCQkJCQkJ CQkJICogc2xvdHMgKi8KK2ludAkJCXJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dF9z ZWMgPSAwOwogCiAvKgogICogVGhpcyBHVUMgbGlzdHMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIHN0 YW5kYnkgc2VydmVyIHNsb3QgbmFtZXMgdGhhdApAQCAtNjQ0LDYgKzY0NiwxMSBAQCByZXRyeToK IAkJCQkJCQkJICJ3YWxfbGV2ZWwiKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBSU19JTlZBTF9J TkFDVElWRV9USU1FT1VUOgorCQkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsIF8oImlu YWN0aXZpdHkgZXhjZWVkZWQgdGhlIHRpbWUgbGltaXQgc2V0IGJ5IFwiJXNcIi4iKSwKKwkJCQkJ CQkJICJyZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQiKTsKKwkJCQlicmVhazsKKwog CQkJY2FzZSBSU19JTlZBTF9OT05FOgogCQkJCXBnX3VucmVhY2hhYmxlKCk7CiAJCX0KQEAgLTc0 NSwxNiArNzUyLDEyIEBAIFJlcGxpY2F0aW9uU2xvdFJlbGVhc2Uodm9pZCkKIAkJICovCiAJCVNw aW5Mb2NrQWNxdWlyZSgmc2xvdC0+bXV0ZXgpOwogCQlzbG90LT5hY3RpdmVfcGlkID0gMDsKLQkJ c2xvdC0+aW5hY3RpdmVfc2luY2UgPSBub3c7CisJCVJlcGxpY2F0aW9uU2xvdFNldEluYWN0aXZl U2luY2Uoc2xvdCwgbm93LCBmYWxzZSk7CiAJCVNwaW5Mb2NrUmVsZWFzZSgmc2xvdC0+bXV0ZXgp OwogCQlDb25kaXRpb25WYXJpYWJsZUJyb2FkY2FzdCgmc2xvdC0+YWN0aXZlX2N2KTsKIAl9CiAJ ZWxzZQotCXsKLQkJU3BpbkxvY2tBY3F1aXJlKCZzbG90LT5tdXRleCk7Ci0JCXNsb3QtPmluYWN0 aXZlX3NpbmNlID0gbm93OwotCQlTcGluTG9ja1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKLQl9CisJ CVJlcGxpY2F0aW9uU2xvdFNldEluYWN0aXZlU2luY2Uoc2xvdCwgbm93LCB0cnVlKTsKIAogCU15 UmVwbGljYXRpb25TbG90ID0gTlVMTDsKIApAQCAtMTU1MCw3ICsxNTUzLDggQEAgUmVwb3J0U2xv dEludmFsaWRhdGlvbihSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJ CQkJICAgTmFtZURhdGEgc2xvdG5hbWUsCiAJCQkJCSAgIFhMb2dSZWNQdHIgcmVzdGFydF9sc24s CiAJCQkJCSAgIFhMb2dSZWNQdHIgb2xkZXN0TFNOLAotCQkJCQkgICBUcmFuc2FjdGlvbklkIHNu YXBzaG90Q29uZmxpY3RIb3Jpem9uKQorCQkJCQkgICBUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uLAorCQkJCQkgICBUaW1lc3RhbXBUeiBpbmFjdGl2ZV9zaW5jZSkKIHsKIAlT dHJpbmdJbmZvRGF0YSBlcnJfZGV0YWlsOwogCWJvb2wJCWhpbnQgPSBmYWxzZTsKQEAgLTE1ODAs NiArMTU4NCwxNSBAQCBSZXBvcnRTbG90SW52YWxpZGF0aW9uKFJlcGxpY2F0aW9uU2xvdEludmFs aWRhdGlvbkNhdXNlIGNhdXNlLAogCQljYXNlIFJTX0lOVkFMX1dBTF9MRVZFTDoKIAkJCWFwcGVu ZFN0cmluZ0luZm9TdHJpbmcoJmVycl9kZXRhaWwsIF8oIkxvZ2ljYWwgZGVjb2Rpbmcgb24gc3Rh bmRieSByZXF1aXJlcyBcIndhbF9sZXZlbFwiID49IFwibG9naWNhbFwiIG9uIHRoZSBwcmltYXJ5 IHNlcnZlci4iKSk7CiAJCQlicmVhazsKKworCQljYXNlIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVP VVQ6CisJCQlBc3NlcnQoaW5hY3RpdmVfc2luY2UgPiAwKTsKKwkJCWFwcGVuZFN0cmluZ0luZm8o JmVycl9kZXRhaWwsCisJCQkJCQkJIF8oIlRoZSBzbG90IGhhcyBiZWVuIGluYWN0aXZlIHNpbmNl ICVzLCBleGNlZWRpbmcgdGhlIHRpbWUgbGltaXQgc2V0IGJ5IFwiJXNcIi4iKSwKKwkJCQkJCQkg dGltZXN0YW1wdHpfdG9fc3RyKGluYWN0aXZlX3NpbmNlKSwKKwkJCQkJCQkgInJlcGxpY2F0aW9u X3Nsb3RfaW5hY3RpdmVfdGltZW91dCIpOworCQkJYnJlYWs7CisKIAkJY2FzZSBSU19JTlZBTF9O T05FOgogCQkJcGdfdW5yZWFjaGFibGUoKTsKIAl9CkBAIC0xNTk2LDYgKzE2MDksMzAgQEAgUmVw b3J0U2xvdEludmFsaWRhdGlvbihSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVz ZSwKIAlwZnJlZShlcnJfZGV0YWlsLmRhdGEpOwogfQogCisvKgorICogSXMgaW5hY3RpdmUgdGlt ZW91dCBpbnZhbGlkYXRpb24gcG9zc2libGUgZm9yIHRoaXMgcmVwbGljYXRpb24gc2xvdD8KKyAq CisgKiBJbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBpcyBhbGxvd2VkIG9ubHkgd2hlbjoK KyAqCisgKiAxLiBJbmFjdGl2ZSB0aW1lb3V0IGlzIHNldAorICogMi4gU2xvdCBpcyBpbmFjdGl2 ZQorICogMy4gVGhlIHNsb3QgaXMgbm90IGJlaW5nIHN5bmNlZCBmcm9tIHRoZSBwcmltYXJ5IHdo aWxlIHRoZSBzZXJ2ZXIKKyAqICAgIGlzIGluIHJlY292ZXJ5CisgKgorICogTm90ZSB0aGF0IHRo ZSBpbmFjdGl2ZSB0aW1lb3V0IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMgbm90CisgKiBhcHBs aWNhYmxlIGZvciBzbG90cyBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIgdGhhdCBhcmUgYmVpbmcgc3lu Y2VkCisgKiBmcm9tIHRoZSBwcmltYXJ5IHNlcnZlciAoaS5lLiwgc3RhbmRieSBzbG90cyBoYXZp bmcgJ3N5bmNlZCcgZmllbGQgJ3RydWUnKS4KKyAqIFN5bmNlZCBzbG90cyBhcmUgYWx3YXlzIGNv bnNpZGVyZWQgdG8gYmUgaW5hY3RpdmUgYmVjYXVzZSB0aGV5IGRvbid0CisgKiBwZXJmb3JtIGxv Z2ljYWwgZGVjb2RpbmcgdG8gcHJvZHVjZSBjaGFuZ2VzLgorICovCitzdGF0aWMgaW5saW5lIGJv b2wKK0lzU2xvdEluYWN0aXZlVGltZW91dFBvc3NpYmxlKFJlcGxpY2F0aW9uU2xvdCAqcykKK3sK KwlyZXR1cm4gKHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dF9zZWMgPiAwICYmCisJ CQlzLT5pbmFjdGl2ZV9zaW5jZSA+IDAgJiYKKwkJCSEoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYg cy0+ZGF0YS5zeW5jZWQpKTsKK30KKwogLyoKICAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29s ZXRlUmVwbGljYXRpb25TbG90cwogICoKQEAgLTE2MjMsNiArMTY2MCw3IEBAIEludmFsaWRhdGVQ b3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVz ZSwKIAlUcmFuc2FjdGlvbklkIGluaXRpYWxfY2F0YWxvZ19lZmZlY3RpdmVfeG1pbiA9IEludmFs aWRUcmFuc2FjdGlvbklkOwogCVhMb2dSZWNQdHIJaW5pdGlhbF9yZXN0YXJ0X2xzbiA9IEludmFs aWRYTG9nUmVjUHRyOwogCVJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGludmFsaWRh dGlvbl9jYXVzZV9wcmV2IFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWSA9IFJTX0lOVkFMX05PTkU7 CisJVGltZXN0YW1wVHogaW5hY3RpdmVfc2luY2UgPSAwOwogCiAJZm9yICg7OykKIAl7CkBAIC0x NjMwLDYgKzE2NjgsNyBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRp b25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCU5hbWVEYXRhCXNsb3RuYW1lOwogCQlp bnQJCQlhY3RpdmVfcGlkID0gMDsKIAkJUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2Ug aW52YWxpZGF0aW9uX2NhdXNlID0gUlNfSU5WQUxfTk9ORTsKKwkJVGltZXN0YW1wVHogbm93ID0g MDsKIAogCQlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoUmVwbGljYXRpb25TbG90Q29udHJv bExvY2ssIExXX1NIQVJFRCkpOwogCkBAIC0xNjQwLDYgKzE2NzksMTUgQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNl LAogCQkJYnJlYWs7CiAJCX0KIAorCQlpZiAoY2F1c2UgPT0gUlNfSU5WQUxfSU5BQ1RJVkVfVElN RU9VVCkKKwkJeworCQkJLyoKKwkJCSAqIFdlIGdldCB0aGUgY3VycmVudCB0aW1lIGJlZm9yZWhh bmQgdG8gYXZvaWQgc3lzdGVtIGNhbGwgd2hpbGUKKwkJCSAqIGhvbGRpbmcgdGhlIHNwaW5sb2Nr LgorCQkJICovCisJCQlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisJCX0KKwogCQkvKgog CQkgKiBDaGVjayBpZiB0aGUgc2xvdCBuZWVkcyB0byBiZSBpbnZhbGlkYXRlZC4gSWYgaXQgbmVl ZHMgdG8gYmUKIAkJICogaW52YWxpZGF0ZWQsIGFuZCBpcyBub3QgY3VycmVudGx5IGFjcXVpcmVk LCBhY3F1aXJlIGl0IGFuZCBtYXJrIGl0CkBAIC0xNjkzLDYgKzE3NDEsMjAgQEAgSW52YWxpZGF0 ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNh dXNlLAogCQkJCQlpZiAoU2xvdElzTG9naWNhbChzKSkKIAkJCQkJCWludmFsaWRhdGlvbl9jYXVz ZSA9IGNhdXNlOwogCQkJCQlicmVhazsKKwkJCQljYXNlIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVP VVQ6CisKKwkJCQkJLyoKKwkJCQkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52 YWxpZGF0ZWQgZHVlIHRvCisJCQkJCSAqIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91 dCBHVUMuCisJCQkJCSAqLworCQkJCQlpZiAoSXNTbG90SW5hY3RpdmVUaW1lb3V0UG9zc2libGUo cykgJiYKKwkJCQkJCVRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHMtPmluYWN0aXZlX3NpbmNl LCBub3csCisJCQkJCQkJCQkJCQkgICByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXRf c2VjICogMTAwMCkpCisJCQkJCXsKKwkJCQkJCWludmFsaWRhdGlvbl9jYXVzZSA9IGNhdXNlOwor CQkJCQkJaW5hY3RpdmVfc2luY2UgPSBzLT5pbmFjdGl2ZV9zaW5jZTsKKwkJCQkJfQorCQkJCQli cmVhazsKIAkJCQljYXNlIFJTX0lOVkFMX05PTkU6CiAJCQkJCXBnX3VucmVhY2hhYmxlKCk7CiAJ CQl9CkBAIC0xNzE4LDExICsxNzgwLDEzIEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xv dChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJYWN0aXZlX3BpZCA9 IHMtPmFjdGl2ZV9waWQ7CiAKIAkJLyoKLQkJICogSWYgdGhlIHNsb3QgY2FuIGJlIGFjcXVpcmVk LCBkbyBzbyBhbmQgbWFyayBpdCBpbnZhbGlkYXRlZAotCQkgKiBpbW1lZGlhdGVseS4gIE90aGVy d2lzZSB3ZSdsbCBzaWduYWwgdGhlIG93bmluZyBwcm9jZXNzLCBiZWxvdywgYW5kCi0JCSAqIHJl dHJ5LgorCQkgKiBJZiB0aGUgc2xvdCBjYW4gYmUgYWNxdWlyZWQsIGRvIHNvIGFuZCBtYXJrIGl0 IGFzIGludmFsaWRhdGVkLiBJZgorCQkgKiB0aGUgc2xvdCBpcyBhbHJlYWR5IG91cnMsIG1hcmsg aXQgYXMgaW52YWxpZGF0ZWQuIE90aGVyd2lzZSwgd2UnbGwKKwkJICogc2lnbmFsIHRoZSBvd25p bmcgcHJvY2VzcyBiZWxvdyBhbmQgcmV0cnkuCiAJCSAqLwotCQlpZiAoYWN0aXZlX3BpZCA9PSAw KQorCQlpZiAoYWN0aXZlX3BpZCA9PSAwIHx8CisJCQkoTXlSZXBsaWNhdGlvblNsb3QgPT0gcyAm JgorCQkJIGFjdGl2ZV9waWQgPT0gTXlQcm9jUGlkKSkKIAkJewogCQkJTXlSZXBsaWNhdGlvblNs b3QgPSBzOwogCQkJcy0+YWN0aXZlX3BpZCA9IE15UHJvY1BpZDsKQEAgLTE3NzcsNyArMTg0MSw4 IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlk YXRpb25DYXVzZSBjYXVzZSwKIAkJCXsKIAkJCQlSZXBvcnRTbG90SW52YWxpZGF0aW9uKGludmFs aWRhdGlvbl9jYXVzZSwgdHJ1ZSwgYWN0aXZlX3BpZCwKIAkJCQkJCQkJCSAgIHNsb3RuYW1lLCBy ZXN0YXJ0X2xzbiwKLQkJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RDb25mbGljdEhvcml6 b24pOworCQkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJ CQkJCQkJCSAgIGluYWN0aXZlX3NpbmNlKTsKIAogCQkJCWlmIChNeUJhY2tlbmRUeXBlID09IEJf U1RBUlRVUCkKIAkJCQkJKHZvaWQpIFNlbmRQcm9jU2lnbmFsKGFjdGl2ZV9waWQsCkBAIC0xODIz LDcgKzE4ODgsOCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25T bG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAKIAkJCVJlcG9ydFNsb3RJbnZhbGlkYXRpb24o aW52YWxpZGF0aW9uX2NhdXNlLCBmYWxzZSwgYWN0aXZlX3BpZCwKIAkJCQkJCQkJICAgc2xvdG5h bWUsIHJlc3RhcnRfbHNuLAotCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90Q29uZmxpY3RI b3Jpem9uKTsKKwkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwK KwkJCQkJCQkJICAgaW5hY3RpdmVfc2luY2UpOwogCiAJCQkvKiBkb25lIHdpdGggdGhpcyBzbG90 IGZvciBub3cgKi8KIAkJCWJyZWFrOwpAQCAtMTg0Niw2ICsxOTEyLDcgQEAgSW52YWxpZGF0ZVBv c3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNl LAogICogLSBSU19JTlZBTF9IT1JJWk9OOiByZXF1aXJlcyBhIHNuYXBzaG90IDw9IHRoZSBnaXZl biBob3Jpem9uIGluIHRoZSBnaXZlbgogICogICBkYjsgZGJvaWQgbWF5IGJlIEludmFsaWRPaWQg Zm9yIHNoYXJlZCByZWxhdGlvbnMKICAqIC0gUlNfSU5WQUxfV0FMX0xFVkVMOiBpcyBsb2dpY2Fs CisgKiAtIFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQ6IGluYWN0aXZlIHNsb3QgdGltZW91dCBo YXMgb2NjdXJyZWQKICAqCiAgKiBOQiAtIHRoaXMgcnVucyBhcyBwYXJ0IG9mIGNoZWNrcG9pbnQs IHNvIGF2b2lkIHJhaXNpbmcgZXJyb3JzIGlmIHBvc3NpYmxlLgogICovCkBAIC0xODk4LDcgKzE5 NjUsOCBAQCByZXN0YXJ0OgogfQogCiAvKgotICogRmx1c2ggYWxsIHJlcGxpY2F0aW9uIHNsb3Rz IHRvIGRpc2suCisgKiBGbHVzaCBhbGwgcmVwbGljYXRpb24gc2xvdHMgdG8gZGlzay4gQWxzbywg aW52YWxpZGF0ZSBvYnNvbGV0ZSBzbG90cyBkdXJpbmcKKyAqIG5vbi1zaHV0ZG93biBjaGVja3Bv aW50LgogICoKICAqIEl0IGlzIGNvbnZlbmllbnQgdG8gZmx1c2ggZGlydHkgcmVwbGljYXRpb24g c2xvdHMgYXQgdGhlIHRpbWUgb2YgY2hlY2twb2ludC4KICAqIEFkZGl0aW9uYWxseSwgaW4gY2Fz ZSBvZiBhIHNodXRkb3duIGNoZWNrcG9pbnQsIHdlIGFsc28gaWRlbnRpZnkgdGhlIHNsb3RzCkBA IC0xOTU2LDYgKzIwMjQsMzggQEAgQ2hlY2tQb2ludFJlcGxpY2F0aW9uU2xvdHMoYm9vbCBpc19z aHV0ZG93bikKIAkJU2F2ZVNsb3RUb1BhdGgocywgcGF0aCwgTE9HKTsKIAl9CiAJTFdMb2NrUmVs ZWFzZShSZXBsaWNhdGlvblNsb3RBbGxvY2F0aW9uTG9jayk7CisKKwlpZiAoIWlzX3NodXRkb3du KQorCXsKKwkJZWxvZyhERUJVRzEsICJwZXJmb3JtaW5nIHJlcGxpY2F0aW9uIHNsb3QgaW52YWxp ZGF0aW9uIGNoZWNrcyIpOworCisJCS8qCisJCSAqIE5COiBXZSB3aWxsIG1ha2UgYW5vdGhlciBw YXNzIG92ZXIgcmVwbGljYXRpb24gc2xvdHMgZm9yCisJCSAqIGludmFsaWRhdGlvbiBjaGVja3Mg dG8ga2VlcCB0aGUgY29kZSBzaW1wbGUuIFRlc3Rpbmcgc2hvd3MgdGhhdAorCQkgKiB0aGVyZSBp cyBubyBub3RpY2VhYmxlIG92ZXJoZWFkICh3aGVuIGNvbXBhcmVkIHdpdGggd2FsX3JlbW92ZWQK KwkJICogaW52YWxpZGF0aW9uKSBldmVuIGlmIHdlIHdlcmUgdG8gZG8gaW5hY3RpdmVfdGltZW91 dCBpbnZhbGlkYXRpb24KKwkJICogb2YgdGhvdXNhbmRzIG9mIHJlcGxpY2F0aW9uIHNsb3RzIGhl cmUuIElmIGl0IGlzIGV2ZXIgcHJvdmVuIHRoYXQKKwkJICogdGhpcyBhc3N1bXB0aW9uIGlzIHdy b25nLCB3ZSB3aWxsIGhhdmUgdG8gcGVyZm9ybSB0aGUgaW52YWxpZGF0aW9uCisJCSAqIGNoZWNr cyBpbiB0aGUgYWJvdmUgZm9yIGxvb3Agd2l0aCB0aGUgZm9sbG93aW5nIGNoYW5nZXM6CisJCSAq CisJCSAqIC0gQWNxdWlyZSBDb250cm9sTG9jayBsb2NrIG9uY2UgYmVmb3JlIHRoZSBsb29wLgor CQkgKgorCQkgKiAtIENhbGwgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90IGZvciBlYWNo IHNsb3QuCisJCSAqCisJCSAqIC0gSGFuZGxlIHRoZSBjYXNlcyBpbiB3aGljaCBDb250cm9sTG9j ayBnZXRzIHJlbGVhc2VkIGp1c3QgbGlrZQorCQkgKiBJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNh dGlvblNsb3RzIGRvZXMuCisJCSAqCisJCSAqIC0gQXZvaWQgc2F2aW5nIHNsb3QgaW5mbyB0byBk aXNrIHR3byB0aW1lcyBmb3IgZWFjaCBpbnZhbGlkYXRlZAorCQkgKiBzbG90LgorCQkgKgorCQkg KiBYWFg6IFNob3VsZCB3ZSBtb3ZlIGluYWN0aXZlX3RpbWVvdXQgaW52YWxpZGF0aW9uIGNoZWNr IGNsb3NlciB0bworCQkgKiB3YWxfcmVtb3ZlZCBpbiBDcmVhdGVDaGVja1BvaW50IGFuZCBDcmVh dGVSZXN0YXJ0UG9pbnQ/CisJCSAqLworCQlJbnZhbGlkYXRlT2Jzb2xldGVSZXBsaWNhdGlvblNs b3RzKFJTX0lOVkFMX0lOQUNUSVZFX1RJTUVPVVQsCisJCQkJCQkJCQkJICAgMCwKKwkJCQkJCQkJ CQkgICBJbnZhbGlkT2lkLAorCQkJCQkJCQkJCSAgIEludmFsaWRUcmFuc2FjdGlvbklkKTsKKwl9 CiB9CiAKIC8qCkBAIC0yMjUwLDYgKzIzNTAsNyBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0 IGNoYXIgKm5hbWUpCiAJYm9vbAkJcmVzdG9yZWQgPSBmYWxzZTsKIAlpbnQJCQlyZWFkQnl0ZXM7 CiAJcGdfY3JjMzJjCWNoZWNrc3VtOworCVRpbWVzdGFtcFR6IG5vdzsKIAogCS8qIG5vIG5lZWQg dG8gbG9jayBoZXJlLCBubyBjb25jdXJyZW50IGFjY2VzcyBhbGxvd2VkIHlldCAqLwogCkBAIC0y NDEwLDYgKzI1MTEsOSBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpCiAJ CQkJCQlOYW1lU3RyKGNwLnNsb3RkYXRhLm5hbWUpKSwKIAkJCQkgZXJyaGludCgiQ2hhbmdlIFwi d2FsX2xldmVsXCIgdG8gYmUgXCJyZXBsaWNhXCIgb3IgaGlnaGVyLiIpKSk7CiAKKwkvKiBVc2Ug c2FtZSBpbmFjdGl2ZV9zaW5jZSB0aW1lIGZvciBhbGwgc2xvdHMgKi8KKwlub3cgPSBHZXRDdXJy ZW50VGltZXN0YW1wKCk7CisKIAkvKiBub3RoaW5nIGNhbiBiZSBhY3RpdmUgeWV0LCBkb24ndCBs b2NrIGFueXRoaW5nICovCiAJZm9yIChpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlvbl9zbG90czsg aSsrKQogCXsKQEAgLTI0NDAsOSArMjU0NCwxMSBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0 IGNoYXIgKm5hbWUpCiAJCS8qCiAJCSAqIFNldCB0aGUgdGltZSBzaW5jZSB0aGUgc2xvdCBoYXMg YmVjb21lIGluYWN0aXZlIGFmdGVyIGxvYWRpbmcgdGhlCiAJCSAqIHNsb3QgZnJvbSB0aGUgZGlz ayBpbnRvIG1lbW9yeS4gV2hvZXZlciBhY3F1aXJlcyB0aGUgc2xvdCBpLmUuCi0JCSAqIG1ha2Vz IHRoZSBzbG90IGFjdGl2ZSB3aWxsIHJlc2V0IGl0LgorCQkgKiBtYWtlcyB0aGUgc2xvdCBhY3Rp dmUgd2lsbCByZXNldCBpdC4gQXZvaWQgY2FsbGluZworCQkgKiBSZXBsaWNhdGlvblNsb3RTZXRJ bmFjdGl2ZVNpbmNlKCkgaGVyZSwgYXMgaXQgd2lsbCBub3Qgc2V0IHRoZSB0aW1lCisJCSAqIGZv ciBpbnZhbGlkIHNsb3RzLgogCQkgKi8KLQkJc2xvdC0+aW5hY3RpdmVfc2luY2UgPSBHZXRDdXJy ZW50VGltZXN0YW1wKCk7CisJCXNsb3QtPmluYWN0aXZlX3NpbmNlID0gbm93OwogCiAJCXJlc3Rv cmVkID0gdHJ1ZTsKIAkJYnJlYWs7CkBAIC0yODQ1LDMgKzI5NTEsMjIgQEAgV2FpdEZvclN0YW5k YnlDb25maXJtYXRpb24oWExvZ1JlY1B0ciB3YWl0X2Zvcl9sc24pCiAKIAlDb25kaXRpb25WYXJp YWJsZUNhbmNlbFNsZWVwKCk7CiB9CisKKy8qCisgKiBHVUMgY2hlY2tfaG9vayBmb3IgcmVwbGlj YXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0CisgKgorICogVGhlIHJlcGxpY2F0aW9uX3Nsb3Rf aW5hY3RpdmVfdGltZW91dCBtdXN0IGJlIGRpc2FibGVkIChzZXQgdG8gMCkKKyAqIGR1cmluZyB0 aGUgYmluYXJ5IHVwZ3JhZGUuCisgKi8KK2Jvb2wKK2NoZWNrX3JlcGxpY2F0aW9uX3Nsb3RfaW5h Y3RpdmVfdGltZW91dChpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNTb3VyY2Ugc291cmNl KQoreworCWlmIChJc0JpbmFyeVVwZ3JhZGUgJiYgKm5ld3ZhbCAhPSAwKQorCXsKKwkJR1VDX2No ZWNrX2VycmRldGFpbCgiVGhlIHZhbHVlIG9mIFwiJXNcIiBtdXN0IGJlIHNldCB0byAwIGR1cmlu ZyBiaW5hcnkgdXBncmFkZSBtb2RlLiIsCisJCQkJCQkJInJlcGxpY2F0aW9uX3Nsb3RfaW5hY3Rp dmVfdGltZW91dCIpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCmluZGV4IDk4NDVhYmQ2OTMuLjI2NGViZDU5YWQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCkBAIC0zMDM4LDYgKzMwMzgsMTggQEAg c3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5V TEwKIAl9LAogCisJeworCQl7InJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCIsIFBH Q19TSUdIVVAsIFJFUExJQ0FUSU9OX1NFTkRJTkcsCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhl IGFtb3VudCBvZiB0aW1lIGEgcmVwbGljYXRpb24gc2xvdCBjYW4gcmVtYWluIGluYWN0aXZlIGJl Zm9yZSAiCisJCQkJCQkgIml0IHdpbGwgYmUgaW52YWxpZGF0ZWQuIiksCisJCQlOVUxMLAorCQkJ R1VDX1VOSVRfUworCQl9LAorCQkmcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90aW1lb3V0X3Nl YywKKwkJMCwgMCwgSU5UX01BWCwKKwkJY2hlY2tfcmVwbGljYXRpb25fc2xvdF9pbmFjdGl2ZV90 aW1lb3V0LCBOVUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJjb21taXRfZGVsYXkiLCBQR0NfU1VT RVQsIFdBTF9TRVRUSU5HUywKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgZGVsYXkgaW4gbWlj cm9zZWNvbmRzIGJldHdlZW4gdHJhbnNhY3Rpb24gY29tbWl0IGFuZCAiCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggNDA3Y2QxZTA4Yy4uMTg1 OTY2ODZkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNv bmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZQpAQCAtMzM2LDYgKzMzNiw3IEBACiAjd2FsX3NlbmRlcl90aW1lb3V0ID0gNjBzCSMgaW4g bWlsbGlzZWNvbmRzOyAwIGRpc2FibGVzCiAjdHJhY2tfY29tbWl0X3RpbWVzdGFtcCA9IG9mZgkj IGNvbGxlY3QgdGltZXN0YW1wIG9mIHRyYW5zYWN0aW9uIGNvbW1pdAogCQkJCSMgKGNoYW5nZSBy ZXF1aXJlcyByZXN0YXJ0KQorI3JlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGltZW91dCA9IDAJ IyBpbiBzZWNvbmRzOyAwIGRpc2FibGVzCiAKICMgLSBQcmltYXJ5IFNlcnZlciAtCiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Nsb3QuaAppbmRleCBmNWYyZDIyMTYzLi43NjgyZjYxMGVhIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vc2xvdC5oCkBAIC01Niw2ICs1Niw4IEBAIHR5cGVkZWYgZW51bSBSZXBsaWNhdGlvblNsb3RJ bnZhbGlkYXRpb25DYXVzZQogCVJTX0lOVkFMX0hPUklaT04sCiAJLyogd2FsX2xldmVsIGluc3Vm ZmljaWVudCBmb3Igc2xvdCAqLwogCVJTX0lOVkFMX1dBTF9MRVZFTCwKKwkvKiBpbmFjdGl2ZSBz bG90IHRpbWVvdXQgaGFzIG9jY3VycmVkICovCisJUlNfSU5WQUxfSU5BQ1RJVkVfVElNRU9VVCwK IH0gUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2U7CiAKIGV4dGVybiBQR0RMTElNUE9S VCBjb25zdCBjaGFyICpjb25zdCBTbG90SW52YWxpZGF0aW9uQ2F1c2VzW107CkBAIC0yMjgsNiAr MjMwLDI1IEBAIHR5cGVkZWYgc3RydWN0IFJlcGxpY2F0aW9uU2xvdEN0bERhdGEKIAlSZXBsaWNh dGlvblNsb3QgcmVwbGljYXRpb25fc2xvdHNbMV07CiB9IFJlcGxpY2F0aW9uU2xvdEN0bERhdGE7 CiAKKy8qCisgKiBTZXQgc2xvdCdzIGluYWN0aXZlX3NpbmNlIHByb3BlcnR5IHVubGVzcyBpdCB3 YXMgcHJldmlvdXNseSBpbnZhbGlkYXRlZC4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitSZXBs aWNhdGlvblNsb3RTZXRJbmFjdGl2ZVNpbmNlKFJlcGxpY2F0aW9uU2xvdCAqcywgVGltZXN0YW1w VHogbm93LAorCQkJCQkJCQlib29sIGFjcXVpcmVfbG9jaykKK3sKKwlpZiAocy0+ZGF0YS5pbnZh bGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQorCQlyZXR1cm47CisKKwlpZiAoYWNxdWlyZV9sb2Nr KQorCQlTcGluTG9ja0FjcXVpcmUoJnMtPm11dGV4KTsKKworCXMtPmluYWN0aXZlX3NpbmNlID0g bm93OworCisJaWYgKGFjcXVpcmVfbG9jaykKKwkJU3BpbkxvY2tSZWxlYXNlKCZzLT5tdXRleCk7 Cit9CisKIC8qCiAgKiBQb2ludGVycyB0byBzaGFyZWQgbWVtb3J5CiAgKi8KQEAgLTIzNyw2ICsy NTgsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9u U2xvdDsKIC8qIEdVQ3MgKi8KIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3JlcGxpY2F0aW9u X3Nsb3RzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKnN5bmNocm9uaXplZF9zdGFuZGJ5X3Ns b3RzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCByZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3Rp bWVvdXRfc2VjOwogCiAvKiBzaG1lbSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgKi8KIGV4dGVy biBTaXplIFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNpemUodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9ndWNfaG9va3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5o CmluZGV4IDU4MTNkYmEwYTIuLmUzNmI2Y2ZlMjEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0 aWxzL2d1Y19ob29rcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oCkBAIC0x NzQsNSArMTc0LDcgQEAgZXh0ZXJuIHZvaWQgYXNzaWduX3dhbF9zeW5jX21ldGhvZChpbnQgbmV3 X3dhbF9zeW5jX21ldGhvZCwgdm9pZCAqZXh0cmEpOwogZXh0ZXJuIGJvb2wgY2hlY2tfc3luY2hy b25pemVkX3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLAogCQkJCQkJ CQkJCQkgR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4gdm9pZCBhc3NpZ25fc3luY2hyb25pemVk X3N0YW5kYnlfc2xvdHMoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRyYSk7CitleHRlcm4g Ym9vbCBjaGVja19yZXBsaWNhdGlvbl9zbG90X2luYWN0aXZlX3RpbWVvdXQoaW50ICpuZXd2YWws IHZvaWQgKipleHRyYSwKKwkJCQkJCQkJCQkJCQlHdWNTb3VyY2Ugc291cmNlKTsKIAogI2VuZGlm CQkJCQkJCS8qIEdVQ19IT09LU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS9t ZXNvbi5idWlsZCBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCmluZGV4IGIxZWI3N2Ix ZWMuLjcwOGEyYTM3OTggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxk CisrKyBiL3NyYy90ZXN0L3JlY292ZXJ5L21lc29uLmJ1aWxkCkBAIC01MSw2ICs1MSw3IEBAIHRl c3RzICs9IHsKICAgICAgICd0LzA0MF9zdGFuZGJ5X2ZhaWxvdmVyX3Nsb3RzX3N5bmMucGwnLAog ICAgICAgJ3QvMDQxX2NoZWNrcG9pbnRfYXRfcHJvbW90ZS5wbCcsCiAgICAgICAndC8wNDJfbG93 X2xldmVsX2JhY2t1cC5wbCcsCisgICAgICAndC8wNTBfaW52YWxpZGF0ZV9zbG90cy5wbCcsCiAg ICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDUwX2ludmFs aWRhdGVfc2xvdHMucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZhbGlkYXRlX3Nsb3Rz LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjg2MTUwOWYwNTAKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA1MF9pbnZhbGlkYXRlX3Nsb3Rz LnBsCkBAIC0wLDAgKzEsMTkwIEBACisjIENvcHlyaWdodCAoYykgMjAyNCwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGZvciByZXBsaWNhdGlvbiBzbG90cyBp bnZhbGlkYXRpb24KK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CisK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwordXNlIFRlc3Q6Ok1vcmU7Cit1c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKKworIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBUZXN0Y2FzZSBzdGFydAorIworIyBUZXN0IGludmFsaWRh dGlvbiBvZiBzdHJlYW1pbmcgc3RhbmRieSBzbG90IGFuZCBsb2dpY2FsIGZhaWxvdmVyIHNsb3Qg b24gdGhlCisjIHByaW1hcnkgZHVlIHRvIGluYWN0aXZlIHRpbWVvdXQuIEFsc28sIHRlc3QgbG9n aWNhbCBmYWlsb3ZlciBzbG90IHN5bmNlZCB0bworIyB0aGUgc3RhbmRieSBmcm9tIHRoZSBwcmlt YXJ5IGRvZXNuJ3QgZ2V0IGludmFsaWRhdGVkIG9uIGl0cyBvd24sIGJ1dCBnZXRzIHRoZQorIyBp bnZhbGlkYXRlZCBzdGF0ZSBmcm9tIHRoZSBwcmltYXJ5LgorCisjIEluaXRpYWxpemUgcHJpbWFy eQorbXkgJHByaW1hcnkgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnkn KTsKKyRwcmltYXJ5LT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKKworIyBB dm9pZCB1bnByZWRpY3RhYmlsaXR5CiskcHJpbWFyeS0+YXBwZW5kX2NvbmYoCisJJ3Bvc3RncmVz cWwuY29uZicsIHFxeworY2hlY2twb2ludF90aW1lb3V0ID0gMWgKK2F1dG92YWN1dW0gPSBvZmYK K30pOworJHByaW1hcnktPnN0YXJ0OworCisjIFRha2UgYmFja3VwCitteSAkYmFja3VwX25hbWUg PSAnbXlfYmFja3VwJzsKKyRwcmltYXJ5LT5iYWNrdXAoJGJhY2t1cF9uYW1lKTsKKworIyBDcmVh dGUgc3RhbmRieQorbXkgJHN0YW5kYnkxID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdzdGFuZGJ5MScpOworJHN0YW5kYnkxLT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5LCAkYmFj a3VwX25hbWUsIGhhc19zdHJlYW1pbmcgPT4gMSk7CisKK215ICRjb25uc3RyID0gJHByaW1hcnkt PmNvbm5zdHI7Ciskc3RhbmRieTEtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBx cSgKK2hvdF9zdGFuZGJ5X2ZlZWRiYWNrID0gb24KK3ByaW1hcnlfc2xvdF9uYW1lID0gJ3NiX3Ns b3QxJworcHJpbWFyeV9jb25uaW5mbyA9ICckY29ubnN0ciBkYm5hbWU9cG9zdGdyZXMnCispKTsK KworIyBDcmVhdGUgc3luYyBzbG90IG9uIHRoZSBwcmltYXJ5CiskcHJpbWFyeS0+cHNxbCgncG9z dGdyZXMnLAorCXF7U0VMRUNUIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0aW9uX3Nsb3QoJ3N5 bmNfc2xvdDEnLCAndGVzdF9kZWNvZGluZycsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7fQorKTsKKwor IyBDcmVhdGUgc3RhbmRieSBzbG90IG9uIHRoZSBwcmltYXJ5CiskcHJpbWFyeS0+c2FmZV9wc3Fs KAorCSdwb3N0Z3JlcycsIHFxWworICAgIFNFTEVDVCBwZ19jcmVhdGVfcGh5c2ljYWxfcmVwbGlj YXRpb25fc2xvdChzbG90X25hbWUgOj0gJ3NiX3Nsb3QxJywgaW1tZWRpYXRlbHlfcmVzZXJ2ZSA6 PSB0cnVlKTsKK10pOworCiskc3RhbmRieTEtPnN0YXJ0OworCisjIFdhaXQgdW50aWwgdGhlIHN0 YW5kYnkgaGFzIHJlcGxheWVkIGVub3VnaCBkYXRhCiskcHJpbWFyeS0+d2FpdF9mb3JfY2F0Y2h1 cCgkc3RhbmRieTEpOworCitteSAkbG9nc3RhcnQgPSAtcyAkc3RhbmRieTEtPmxvZ2ZpbGU7CisK KyMgU2V0IHRpbWVvdXQgR1VDIG9uIHRoZSBzdGFuZGJ5IHRvIHZlcmlmeSB0aGF0IHRoZSBuZXh0 IGNoZWNrcG9pbnQgd2lsbCBub3QKKyMgaW52YWxpZGF0ZSBzeW5jZWQgc2xvdHMuCitteSAkaW5h Y3RpdmVfdGltZW91dF8xcyA9IDE7Ciskc3RhbmRieTEtPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcVsKKyAgICBBTFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVfdGlt ZW91dCBUTyAnJHtpbmFjdGl2ZV90aW1lb3V0XzFzfXMnOworXSk7Ciskc3RhbmRieTEtPnJlbG9h ZDsKKworIyBTeW5jIHRoZSBwcmltYXJ5IHNsb3RzIHRvIHRoZSBzdGFuZGJ5Ciskc3RhbmRieTEt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX3N5bmNfcmVwbGljYXRpb25fc2xvdHMo KTsiKTsKKworIyBDb25maXJtIHRoYXQgdGhlIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBpcyBjcmVh dGVkIG9uIHRoZSBzdGFuZGJ5CitpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsCisJCXF7U0VMRUNUIGNvdW50KCopID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJ CSAgV0hFUkUgc2xvdF9uYW1lID0gJ3N5bmNfc2xvdDEnIEFORCBzeW5jZWQKKwkJCUFORCBOT1Qg dGVtcG9yYXJ5CisJCQlBTkQgaW52YWxpZGF0aW9uX3JlYXNvbiBJUyBOVUxMO30KKwkpLAorCSJ0 IiwKKwknbG9naWNhbCBzbG90IHN5bmNfc2xvdDEgaXMgc3luY2VkIHRvIHN0YW5kYnknKTsKKwor IyBHaXZlIGVub3VnaCB0aW1lIGZvciBpbmFjdGl2ZV9zaW5jZSB0byBleGNlZWQgdGhlIHRpbWVv dXQKK3NsZWVwKCRpbmFjdGl2ZV90aW1lb3V0XzFzICsgMSk7CisKKyMgT24gc3RhbmRieSwgc3lu Y2VkIHNsb3RzIGFyZSBub3QgaW52YWxpZGF0ZWQgYnkgdGhlIGluYWN0aXZlIHRpbWVvdXQKKyMg dW50aWwgdGhlIGludmFsaWRhdGlvbiBzdGF0ZSBpcyBwcm9wYWdhdGVkIGZyb20gdGhlIHByaW1h cnkuCiskc3RhbmRieTEtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lOVCIpOworaXMo ICRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3VudCgq KSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkgIFdIRVJFIHNsb3RfbmFtZSA9ICdz eW5jX3Nsb3QxJworCQkJQU5EIGludmFsaWRhdGlvbl9yZWFzb24gSVMgTlVMTDt9CisJKSwKKwki dCIsCisJJ2NoZWNrIHRoYXQgc3luY2VkIHNsb3Qgc3luY19zbG90MSBoYXMgbm90IGJlZW4gaW52 YWxpZGF0ZWQgb24gc3RhbmRieScpOworCiskbG9nc3RhcnQgPSAtcyAkcHJpbWFyeS0+bG9nZmls ZTsKKworIyBTZXQgdGltZW91dCBHVUMgc28gdGhhdCB0aGUgbmV4dCBjaGVja3BvaW50IHdpbGwg aW52YWxpZGF0ZSBpbmFjdGl2ZSBzbG90cworJHByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcVsKKyAgICBBTFRFUiBTWVNURU0gU0VUIHJlcGxpY2F0aW9uX3Nsb3RfaW5hY3RpdmVf dGltZW91dCBUTyAnJHtpbmFjdGl2ZV90aW1lb3V0XzFzfXMnOworXSk7CiskcHJpbWFyeS0+cmVs b2FkOworCisjIFdhaXQgZm9yIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCB0byBiZWNvbWUgaW5hY3Rp dmUgb24gdGhlIHByaW1hcnkuIE5vdGUgdGhhdAorIyBub2JvZHkgaGFzIGFjcXVpcmVkIHRoZSBz bG90IHlldCwgc28gaXQgbXVzdCBnZXQgaW52YWxpZGF0ZWQgZHVlIHRvCisjIGluYWN0aXZlIHRp bWVvdXQuCit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigkcHJpbWFyeSwgJ3N5bmNfc2xvdDEn LCAkbG9nc3RhcnQsCisJJGluYWN0aXZlX3RpbWVvdXRfMXMpOworCisjIFJlLXN5bmMgdGhlIHBy aW1hcnkgc2xvdHMgdG8gdGhlIHN0YW5kYnkuIE5vdGUgdGhhdCB0aGUgcHJpbWFyeSBzbG90IHdh cworIyBhbHJlYWR5IGludmFsaWRhdGVkIChhYm92ZSkgZHVlIHRvIGluYWN0aXZlIHRpbWVvdXQu IFRoZSBzdGFuZGJ5IG11c3QganVzdAorIyBzeW5jIHRoZSBpbnZhbGlkYXRlZCBzdGF0ZS4KKyRz dGFuZGJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfc3luY19yZXBsaWNhdGlv bl9zbG90cygpOyIpOworCitpcyggJHN0YW5kYnkxLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs CisJCXF7U0VMRUNUIGNvdW50KCopID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJCSAg V0hFUkUgc2xvdF9uYW1lID0gJ3N5bmNfc2xvdDEnCisJCQlBTkQgaW52YWxpZGF0aW9uX3JlYXNv biA9ICdpbmFjdGl2ZV90aW1lb3V0Jzt9CisJKSwKKwkidCIsCisJJ2NoZWNrIHRoYXQgaW52YWxp ZGF0aW9uIG9mIHN5bmNlZCBzbG90IHN5bmNfc2xvdDEgaXMgc3luY2VkIG9uIHN0YW5kYnknKTsK KworIyBNYWtlIHRoZSBzdGFuZGJ5IHNsb3Qgb24gdGhlIHByaW1hcnkgaW5hY3RpdmUgYW5kIGNo ZWNrIGZvciBpbnZhbGlkYXRpb24KKyRzdGFuZGJ5MS0+c3RvcDsKK3dhaXRfZm9yX3Nsb3RfaW52 YWxpZGF0aW9uKCRwcmltYXJ5LCAnc2Jfc2xvdDEnLCAkbG9nc3RhcnQsCisJJGluYWN0aXZlX3Rp bWVvdXRfMXMpOworCisjIFRlc3RjYXNlIGVuZAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisj IFdhaXQgZm9yIHNsb3QgdG8gZmlyc3QgYmVjb21lIGluYWN0aXZlIGFuZCB0aGVuIGdldCBpbnZh bGlkYXRlZAorc3ViIHdhaXRfZm9yX3Nsb3RfaW52YWxpZGF0aW9uCit7CisJbXkgKCRub2RlLCAk c2xvdCwgJG9mZnNldCwgJGluYWN0aXZlX3RpbWVvdXQpID0gQF87CisJbXkgJG5vZGVfbmFtZSA9 ICRub2RlLT5uYW1lOworCisJdHJpZ2dlcl9zbG90X2ludmFsaWRhdGlvbigkbm9kZSwgJHNsb3Qs ICRvZmZzZXQsICRpbmFjdGl2ZV90aW1lb3V0KTsKKworCSMgQ2hlY2sgdGhhdCBhbiBpbnZhbGlk YXRlZCBzbG90IGNhbm5vdCBiZSBhY3F1aXJlZAorCW15ICgkcmVzdWx0LCAkc3Rkb3V0LCAkc3Rk ZXJyKTsKKwkoJHJlc3VsdCwgJHN0ZG91dCwgJHN0ZGVycikgPSAkbm9kZS0+cHNxbCgKKwkJJ3Bv c3RncmVzJywgcXFbCisJCQlTRUxFQ1QgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZhbmNlKCckc2xv dCcsICcwLzEnKTsKKwldKTsKKwlvayggJHN0ZGVyciA9fiAvY2FuIG5vIGxvbmdlciBnZXQgY2hh bmdlcyBmcm9tIHJlcGxpY2F0aW9uIHNsb3QgIiRzbG90Ii8sCisJCSJkZXRlY3RlZCBlcnJvciB1 cG9uIHRyeWluZyB0byBhY3F1aXJlIGludmFsaWRhdGVkIHNsb3QgJHNsb3Qgb24gbm9kZSAkbm9k ZV9uYW1lIgorCSAgKQorCSAgb3IgZGllCisJICAiY291bGQgbm90IGRldGVjdCBlcnJvciB1cG9u IHRyeWluZyB0byBhY3F1aXJlIGludmFsaWRhdGVkIHNsb3QgJHNsb3Qgb24gbm9kZSAkbm9kZV9u YW1lIjsKK30KKworIyBUcmlnZ2VyIHNsb3QgaW52YWxpZGF0aW9uIGFuZCBjb25maXJtIGl0IGlu IHRoZSBzZXJ2ZXIgbG9nCitzdWIgdHJpZ2dlcl9zbG90X2ludmFsaWRhdGlvbgoreworCW15ICgk bm9kZSwgJHNsb3QsICRvZmZzZXQsICRpbmFjdGl2ZV90aW1lb3V0KSA9IEBfOworCW15ICRub2Rl X25hbWUgPSAkbm9kZS0+bmFtZTsKKwlteSAkaW52YWxpZGF0ZWQgPSAwOworCisJIyBHaXZlIGVu b3VnaCB0aW1lIGZvciBpbmFjdGl2ZV9zaW5jZSB0byBleGNlZWQgdGhlIHRpbWVvdXQKKwlzbGVl cCgkaW5hY3RpdmVfdGltZW91dCArIDEpOworCisJIyBSdW4gYSBjaGVja3BvaW50CisJJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ0hFQ0tQT0lOVCIpOworCisJIyBUaGUgc2xvdCdzIGlu dmFsaWRhdGlvbiBzaG91bGQgYmUgbG9nZ2VkCisJJG5vZGUtPndhaXRfZm9yX2xvZyhxci9pbnZh bGlkYXRpbmcgb2Jzb2xldGUgcmVwbGljYXRpb24gc2xvdCBcIiRzbG90XCIvLAorCQkkb2Zmc2V0 KTsKKworCSMgQ2hlY2sgdGhhdCB0aGUgaW52YWxpZGF0aW9uIHJlYXNvbiBpcyAnaW5hY3RpdmVf dGltZW91dCcKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJ CVNFTEVDVCBDT1VOVChzbG90X25hbWUpID0gMSBGUk9NIHBnX3JlcGxpY2F0aW9uX3Nsb3RzCisJ CQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3QnIEFORAorCQkJaW52YWxpZGF0aW9uX3JlYXNvbiA9 ICdpbmFjdGl2ZV90aW1lb3V0JzsKKwldKQorCSAgb3IgZGllCisJICAiVGltZWQgb3V0IHdoaWxl IHdhaXRpbmcgZm9yIGludmFsaWRhdGlvbiByZWFzb24gb2Ygc2xvdCAkc2xvdCB0byBiZSBzZXQg b24gbm9kZSAkbm9kZV9uYW1lIjsKK30KKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --00000000000040b3c00627e2ccc8--