<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>66494</bug_id>
          
          <creation_ts>2011-08-18 12:42:47 -0700</creation_ts>
          <short_desc>add embedded png checksums to WebKitTestRunner</short_desc>
          <delta_ts>2011-08-18 15:08:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>453267</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-18 12:42:47 -0700</bug_when>
    <thetext>add embedded png checksums to WebKitTestRunner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453274</commentid>
    <comment_count>1</comment_count>
      <attachid>104385</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-18 12:45:37 -0700</bug_when>
    <thetext>Created attachment 104385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453284</commentid>
    <comment_count>2</comment_count>
      <attachid>104385</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-18 13:00:15 -0700</bug_when>
    <thetext>Comment on attachment 104385
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=104385&amp;action=review

&gt; Tools/WebKitTestRunner/CyclicRedundancyCheck.cpp:59
&gt; +    unsigned crc = 0xffffffffL;

I know this is just copied code, but I should point out that this is wrong. If we want an unsigned constant it should be 0xffffffffU. Adding the &quot;L&quot; prefix makes it a long, so the type should be &quot;long&quot;, not &quot;unsigned&quot;.

&gt; Tools/WebKitTestRunner/CyclicRedundancyCheck.cpp:61
&gt; +        crc = crcTable[(crc ^ buffer[i]) &amp; 0xff] ^ ((crc &gt;&gt; 8) &amp; 0x00ffffffL);

The L is not helpful. A U would be helpful.

&gt; Tools/WebKitTestRunner/CyclicRedundancyCheck.cpp:62
&gt; +    return crc ^ 0xffffffffL;

The L is not helpful. A U would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453342</commentid>
    <comment_count>3</comment_count>
      <attachid>104395</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-18 14:09:12 -0700</bug_when>
    <thetext>Created attachment 104395
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453390</commentid>
    <comment_count>4</comment_count>
      <attachid>104395</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 15:08:42 -0700</bug_when>
    <thetext>Comment on attachment 104395
Patch for landing

Clearing flags on attachment: 104395

Committed r93355: &lt;http://trac.webkit.org/changeset/93355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>453391</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-18 15:08:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104385</attachid>
            <date>2011-08-18 12:45:37 -0700</date>
            <delta_ts>2011-08-18 14:09:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66494-20110818124536.patch</filename>
            <type>text/plain</type>
            <size>23709</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzMjIKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NjYxNjIxMmI4MTBhMGFmMzFjOTBlMWNiMGE0YmQwOWI5
OTk1ODM3Li4zMDE5OWIxNGY2OGVlMzc0NjVjYzdlMWQ5MTY4OGFmNzQyOWI1YjQ1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDgtMTggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBhZGQgZW1iZWRkZWQgcG5nIGNoZWNrc3VtcyB0byBXZWJLaXRUZXN0UnVubmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjQ5NAorCisgICAgICAg
IExvb2tzIGxpa2UgV2ViS2l0VGVzdFJ1bm5lciBoYXMgbmV2ZXIgc3VwcG9ydGVkIGVtYmVkZGVk
IGNoZWNrc3Vtcy4gIFRoaXMgY29waWVzCisgICAgICAgIHNvbWUgY29kZSBmcm9tIERSVCBhbmQg
YWRkcyBpdCB0byB0aGUgV2ViS2l0VGVzdFJ1bm5lci4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ3ljbGljUmVkdW5k
YW5jeUNoZWNrLmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5oOiBDb3BpZWQgZnJvbSBU
b29scy9EdW1wUmVuZGVyVHJlZQorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZp
bGUuYW06IEFkZCBuZXcgZmlsZXMKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BpeGVsRHVt
cFN1cHBvcnQuY3BwOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZQorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvUGl4ZWxEdW1wU3VwcG9ydC5oOiBDb3BpZWQgZnJvbSBUb29scy9E
dW1wUmVuZGVyVHJlZQorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVzCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdU
Ujo6ZHVtcEJpdG1hcCk6IFJlZmFjdG9yIHRvIHVzZSBQaXhlbER1bXBTdXBwb3J0LgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQp
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHA6Cisg
ICAgICAgIChXVFI6OmR1bXBCaXRtYXApOiBSZWZhY3RvciB0byB1c2UgUGl4ZWxEdW1wU3VwcG9y
dC4KKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0
aEV4cGVjdGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVu
bmVyLnZjcHJvajogQWRkIG5ldyBmaWxlcworCiAyMDExLTA4LTE4ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGxpYmMrKyBDKysweCBidWlsZApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DeWNsaWNSZWR1bmRhbmN5Q2hlY2su
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM2MWVhMGY3OWVhMThmMjAyMjgyOWIzNmI3M2ExYzAzNDMwMzZjOTAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVj
ay5jcHAKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgUm9iZXJ0
IEVpc2VsZSA8cm9iZXJ0QHhhcmcub3JnPiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJDeWNsaWNSZWR1bmRhbmN5Q2hlY2suaCIKKworI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworc3RhdGljIHZvaWQgbWFrZUNyY1RhYmxlKHVuc2lnbmVkIGNyY1RhYmxl
WzI1Nl0pCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisgICAg
ICAgIHVuc2lnbmVkIGMgPSBpOworICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDg7IGsrKykg
eworICAgICAgICAgICAgaWYgKGMgJiAxKQorICAgICAgICAgICAgICAgIGMgPSAtMzA2Njc0OTEy
IF4gKChjID4+IDEpICYgMHg3ZmZmZmZmZik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgYyA9IGMgPj4gMTsKKyAgICAgICAgfQorICAgICAgICBjcmNUYWJsZVtpXSA9IGM7Cisg
ICAgfQorfQorCit1bnNpZ25lZCBjb21wdXRlQ3JjKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiYgYnVmZmVyKQoreworICAgIHN0YXRpYyB1bnNpZ25lZCBjcmNUYWJsZVsyNTZdOworICAgIHN0
YXRpYyBib29sIGNyY1RhYmxlQ29tcHV0ZWQgPSBmYWxzZTsKKyAgICBpZiAoIWNyY1RhYmxlQ29t
cHV0ZWQpIHsKKyAgICAgICAgbWFrZUNyY1RhYmxlKGNyY1RhYmxlKTsKKyAgICAgICAgY3JjVGFi
bGVDb21wdXRlZCA9IHRydWU7CisgICAgfQorCisgICAgdW5zaWduZWQgY3JjID0gMHhmZmZmZmZm
Zkw7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBidWZmZXIuc2l6ZSgpOyArK2kpCisgICAg
ICAgIGNyYyA9IGNyY1RhYmxlWyhjcmMgXiBidWZmZXJbaV0pICYgMHhmZl0gXiAoKGNyYyA+PiA4
KSAmIDB4MDBmZmZmZmZMKTsKKyAgICByZXR1cm4gY3JjIF4gMHhmZmZmZmZmZkw7Cit9CisKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVmMWQ3OGU4NmMzNWViNzllYzE4M2ZlMWQ2ZDJiMjU2MjNmOGFkZWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5oCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEN5Y2xpY1JlZHVuZGFuY3lDaGVja19oCisjZGVmaW5lIEN5
Y2xpY1JlZHVuZGFuY3lDaGVja19oCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK3Vuc2ln
bmVkIGNvbXB1dGVDcmMoY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+Jik7CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KaW5kZXggNjliYWYxMWRiNTZhOTQyNzBl
NzczY2Q4ZWNlMmEwYjBkOGE0NzA2Yy4uZWI2Yjk1MDg2ZjkwOTVhNTllMTU2MmE3ZDVhYTUzNGNi
NTZkNTA5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5h
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC0xMyw2ICsx
MywxMCBAQCBQcm9ncmFtc19XZWJLaXRUZXN0UnVubmVyX1NPVVJDRVMgPSBcCiAJVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9ndGsvUGxhdGZvcm1XZWJWaWV3R3RrLmNwcCBcCiAJVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9ndGsvVGVzdENvbnRyb2xsZXJHdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0
UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwIFwKKwlUb29scy9XZWJLaXRUZXN0
UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmggXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGl4
ZWxEdW1wU3VwcG9ydC5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGl4ZWxEdW1wU3Vw
cG9ydC5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oIFwKIAlU
b29scy9XZWJLaXRUZXN0UnVubmVyL1N0cmluZ0Z1bmN0aW9ucy5oIFwKIAlUb29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1BpeGVsRHVtcFN1cHBvcnQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
aXhlbER1bXBTdXBwb3J0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWVkYzFiMjQ4OWUxZjllNWVmNmFkMzc3
MmQ1OWEyMzVkZmMyM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9QaXhlbER1bXBTdXBwb3J0LmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKKworI2luY2x1ZGUgIkN5Y2xpY1Jl
ZHVuZGFuY3lDaGVjay5oIgorCitzdGF0aWMgdm9pZCBhcHBlbmRJbnRUb1ZlY3Rvcih1bnNpZ25l
ZCBudW1iZXIsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgdmVjdG9yKQoreworICAgIHNpemVfdCBv
ZmZzZXQgPSB2ZWN0b3Iuc2l6ZSgpOworICAgIHZlY3Rvci5ncm93KG9mZnNldCArIDQpOworICAg
IHZlY3RvcltvZmZzZXRdID0gKChudW1iZXIgPj4gMjQpICYgMHhmZik7CisgICAgdmVjdG9yW29m
ZnNldCArIDFdID0gKChudW1iZXIgPj4gMTYpICYgMHhmZik7CisgICAgdmVjdG9yW29mZnNldCAr
IDJdID0gKChudW1iZXIgPj4gOCkgJiAweGZmKTsKKyAgICB2ZWN0b3Jbb2Zmc2V0ICsgM10gPSAo
bnVtYmVyICYgMHhmZik7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnRDaGVja3N1bVRvUE5HQ29t
bWVudChjb25zdCBjaGFyKiBjaGVja3N1bSwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBieXRlc1Rv
QWRkKQoreworICAgIC8vIENodW5rcyBvZiBQTkcgZmlsZXMgYXJlIDxsZW5ndGg+LCA8dHlwZT4s
IDxkYXRhPiwgPGNyYz4uCisgICAgc3RhdGljIGNvbnN0IGNoYXIgdGV4dENvbW1lbnRQcmVmaXhb
XSA9ICJceDAwXHgwMFx4MDBceDI5dEVYdGNoZWNrc3VtXHgwMCI7CisgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVmaXhMZW5ndGggPSBzaXplb2YodGV4dENvbW1lbnRQcmVmaXgpIC0gMTsgLy8g
VGhlIC0xIGlzIGZvciB0aGUgbnVsbCBhdCB0aGUgZW5kIG9mIHRoZSBjaGFyW10uCisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBjaGVja3N1bUxlbmd0aCA9IDMyOworCisgICAgYnl0ZXNUb0FkZC5h
cHBlbmQodGV4dENvbW1lbnRQcmVmaXgsIHByZWZpeExlbmd0aCk7CisgICAgYnl0ZXNUb0FkZC5h
cHBlbmQoY2hlY2tzdW0sIGNoZWNrc3VtTGVuZ3RoKTsKKworICAgIFZlY3Rvcjx1bnNpZ25lZCBj
aGFyPiBkYXRhVG9DcmM7CisgICAgZGF0YVRvQ3JjLmFwcGVuZCh0ZXh0Q29tbWVudFByZWZpeCAr
IDQsIHByZWZpeExlbmd0aCAtIDQpOyAvLyBEb24ndCBpbmNsdWRlIHRoZSBjaHVuayBsZW5ndGgg
aW4gdGhlIGNyYy4KKyAgICBkYXRhVG9DcmMuYXBwZW5kKGNoZWNrc3VtLCBjaGVja3N1bUxlbmd0
aCk7CisgICAgdW5zaWduZWQgY3JjMzIgPSBjb21wdXRlQ3JjKGRhdGFUb0NyYyk7CisKKyAgICBh
cHBlbmRJbnRUb1ZlY3RvcihjcmMzMiwgYnl0ZXNUb0FkZCk7Cit9CisKK3N0YXRpYyBzaXplX3Qg
b2Zmc2V0QWZ0ZXJJSERSQ2h1bmsoY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgY29uc3Qgc2l6
ZV90IGRhdGFMZW5ndGgpCit7CisgICAgY29uc3QgaW50IHBuZ0hlYWRlckxlbmd0aCA9IDg7Cisg
ICAgY29uc3QgaW50IHBuZ0lIRFJDaHVua0xlbmd0aCA9IDI1OyAvLyBjaHVuayBsZW5ndGggKyAi
SUhEUiIgKyAxMyBieXRlcyBvZiBkYXRhICsgY2hlY2tzdW0KKyAgICByZXR1cm4gcG5nSGVhZGVy
TGVuZ3RoICsgcG5nSUhEUkNodW5rTGVuZ3RoOworfQorCit2b2lkIHByaW50UE5HKGNvbnN0IHVu
c2lnbmVkIGNoYXIqIGRhdGEsIGNvbnN0IHNpemVfdCBkYXRhTGVuZ3RoLCBjb25zdCBjaGFyKiBj
aGVja3N1bSkKK3sKKyAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gYnl0ZXNUb0FkZDsKKyAgICBj
b252ZXJ0Q2hlY2tzdW1Ub1BOR0NvbW1lbnQoY2hlY2tzdW0sIGJ5dGVzVG9BZGQpOworCisgICAg
cHJpbnRmKCJDb250ZW50LVR5cGU6ICVzXG4iLCAiaW1hZ2UvcG5nIik7CisgICAgcHJpbnRmKCJD
b250ZW50LUxlbmd0aDogJWx1XG4iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihkYXRhTGVu
Z3RoICsgYnl0ZXNUb0FkZC5zaXplKCkpKTsKKworICAgIHNpemVfdCBpbnNlcnRPZmZzZXQgPSBv
ZmZzZXRBZnRlcklIRFJDaHVuayhkYXRhLCBkYXRhTGVuZ3RoKTsKKworICAgIGZ3cml0ZShkYXRh
LCAxLCBpbnNlcnRPZmZzZXQsIHN0ZG91dCk7CisgICAgZndyaXRlKGJ5dGVzVG9BZGQuZGF0YSgp
LCAxLCBieXRlc1RvQWRkLnNpemUoKSwgc3Rkb3V0KTsKKworICAgIGNvbnN0IHNpemVfdCBieXRl
c1RvV3JpdGVJbk9uZUNodW5rID0gMSA8PCAxNTsKKyAgICBkYXRhICs9IGluc2VydE9mZnNldDsK
KyAgICBzaXplX3QgZGF0YVJlbWFpbmluZ1RvV3JpdGUgPSBkYXRhTGVuZ3RoIC0gaW5zZXJ0T2Zm
c2V0OworICAgIHdoaWxlIChkYXRhUmVtYWluaW5nVG9Xcml0ZSkgeworICAgICAgICBzaXplX3Qg
Ynl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmsgPSBzdGQ6Om1pbihkYXRhUmVtYWluaW5nVG9Xcml0ZSwg
Ynl0ZXNUb1dyaXRlSW5PbmVDaHVuayk7CisgICAgICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBm
d3JpdGUoZGF0YSwgMSwgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmssIHN0ZG91dCk7CisgICAgICAg
IGlmIChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmspCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGF0YVJlbWFpbmluZ1RvV3JpdGUgLT0gYnl0ZXNXcml0dGVuOwor
ICAgICAgICBkYXRhICs9IGJ5dGVzV3JpdHRlbjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1BpeGVsRHVtcFN1cHBvcnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvUGl4ZWxEdW1wU3VwcG9ydC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxYzZlMzhlYTJlOTdmMTA2ZjVm
ZTgzODczNjk1NDQ2MjgzNDE0NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1BpeGVsRHVtcFN1cHBvcnQuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBpeGVs
RHVtcFN1cHBvcnRfaAorI2RlZmluZSBQaXhlbER1bXBTdXBwb3J0X2gKKwordm9pZCBwcmludFBO
Ryhjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBjb25zdCBzaXplX3QgZGF0YUxlbmd0aCwgY29u
c3QgY2hhciogY2hlY2tzdW0pOworCisjZW5kaWYgLy8gUGl4ZWxEdW1wU3VwcG9ydF9oCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI2MjgyNjEwNjJiMTJhMmU3ZDg1ZTZl
MGNjMTczODU0NzdjODhiMjQuLjhhNDhjMDg3NjYzZjdjYzhlMzg4ZjQyNzAyNWY3NmQ0YTU5OGI1
MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMSw2ICsyMSw4IEBA
CiAvKiBFbmQgUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KKwkJNTMyMkZCNDMxM0ZEQTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1Jl
ZHVuZGFuY3lDaGVjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MzIyRkI0MTEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNr
LmNwcCAqLzsgfTsKKwkJNTMyMkZCNDYxM0ZEQTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBv
cnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMy
MkZCNDQxM0ZEQTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovOyB9OwogCQk2
NTEwQTc4MjExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3NzExRUM2NDM4MDA0MTA4Njcg
LyogQUhFTV9fX18uVFRGICovOyB9OwogCQk2NTEwQTc4MzExRUM2NDM4MDA0MTA4NjcgLyogQ29s
b3JCaXRzLnR0ZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjUxMEE3NzgxMUVDNjQzODAwNDEwODY3IC8qIENvbG9yQml0cy50dGYgKi87IH07CiAJCTY1
MTBBNzg0MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3NzkxMUVD
NjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovOyB9OwpAQCAtODEs
NiArODMsMTAgQEAKIAkJMzc4RDQ0MjIxMzM0NkQwMDAwNkE3NzdCIC8qIGNvbmZpZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBjb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDEyMzBF
MTYxMzhDNzhCRjAwQkNDRkNBIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk0MTgxNzMxQjEzOEFEMzlEMDA1N0FBQTQgLyog
V2ViQ29yZVRlc3RTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
YkNvcmVUZXN0U3VwcG9ydC5oOyBwYXRoID0gV2ViQ29yZVRlc3RTdXBwb3J0L1dlYkNvcmVUZXN0
U3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1MzIyRkI0
MTEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUzMjJGQjQyMTNGREEwQ0QwMDQxQUJDQyAvKiBD
eWNsaWNSZWR1bmRhbmN5Q2hlY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3ljbGljUmVkdW5kYW5jeUNoZWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUz
MjJGQjQ0MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MzIyRkI0NTEzRkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxE
dW1wU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQaXhlbER1bXBT
dXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTBBNzc3MTFFQzY0Mzgw
MDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gIkFIRU1fX19fLlRURiI7IHBhdGggPSAiZm9u
dHMvQUhFTV9fX18uVFRGIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3Nzgx
MUVDNjQzODAwNDEwODY3IC8qIENvbG9yQml0cy50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gQ29sb3JCaXRzLnR0ZjsgcGF0
aCA9IGZvbnRzL0NvbG9yQml0cy50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1
MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUg
PSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZjsgcGF0aCA9IGZvbnRzL1dlYktpdFdlaWdodFdh
dGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTg5LDEyICsxOTUs
MTYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDOTE5MjAyMTMzM0U0Q0QwMDMwMTFEQyAvKiBj
ZyAqLywKIAkJCQlCQzc5MzNGRTExOEY3Qzc0MDA1RUE4RTIgLyogbWFjICovLAotCQkJCUJDMjUx
QTE3MTFEMTY3NzQwMDJFQkMwMSAvKiBXZWJLaXRUZXN0UnVubmVyUHJlZml4LmggKi8sCisJCQkJ
NTMyMkZCNDExM0ZEQTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi8s
CisJCQkJNTMyMkZCNDIxM0ZEQTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5o
ICovLAorCQkJCTUzMjJGQjQ0MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmNw
cCAqLywKKwkJCQk1MzIyRkI0NTEzRkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5o
ICovLAogCQkJCUJDNzkzNEREMTE5MDY2RUMwMDVFQThFMiAvKiBQbGF0Zm9ybVdlYlZpZXcuaCAq
LywKIAkJCQlCQzc5MzQyRjExOEY3RjE5MDA1RUE4RTIgLyogVGVzdENvbnRyb2xsZXIuaCAqLywK
IAkJCQlCQzc5MzQzMDExOEY3RjE5MDA1RUE4RTIgLyogVGVzdENvbnRyb2xsZXIuY3BwICovLAog
CQkJCUJDRDdEMkY2MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5oICovLAogCQkJ
CUJDRDdEMkY3MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5jcHAgKi8sCisJCQkJ
QkMyNTFBMTcxMUQxNjc3NDAwMkVCQzAxIC8qIFdlYktpdFRlc3RSdW5uZXJQcmVmaXguaCAqLywK
IAkJCSk7CiAJCQluYW1lID0gVGVzdFJ1bm5lcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC00NTMsMTAgKzQ2MywxMiBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
IAkJCWZpbGVzID0gKAogCQkJCUJDNzkzNDAwMTE4RjdDODQwMDVFQThFMiAvKiBtYWluLm1tIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQkM3OTM0MzExMThGN0YxOTAwNUVBOEUyIC8qIFRlc3RDb250cm9s
bGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUzMjJGQjQzMTNGREEwQ0QwMDQxQUJDQyAvKiBD
eWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTMyMkZCNDYxM0ZE
QTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM3OTM0RTgxMTkwNjg0NjAwNUVBOEUyIC8qIFBsYXRmb3JtV2ViVmlld01hYy5tbSBpbiBTb3Vy
Y2VzICovLAotCQkJCUJDRDdEMkY4MTE5MjEyNzgwMDZEQjdFRSAvKiBUZXN0SW52b2NhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzc5MzQzMTExOEY3RjE5MDA1RUE4RTIgLyogVGVzdENv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM4Qzc5NUMxMUQyNzg1RDAwNDUzNUEx
IC8qIFRlc3RDb250cm9sbGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQkNEN0QyRjgxMTky
MTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
OTE5MjA1MTMzM0U0RjgwMDMwMTFEQyAvKiBUZXN0SW52b2NhdGlvbkNHLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNh
aXJvLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWly
by5jcHAKaW5kZXggMjI2MTg3NGQ3OTU3MDk5NTc3MGIxODQ3NzMzYWQ5M2NjMjgzYTlhNC4uNmJi
Njk0OTZhZWFmZTE5MmVmZGM3NWJkZmYwMWI3YTc1ZTZjMDBkMyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGVzdEludm9jYXRpb24u
aCIKIAorI2luY2x1ZGUgIlBpeGVsRHVtcFN1cHBvcnQuaCIKICNpbmNsdWRlIDxXZWJLaXQyL1dL
SW1hZ2VDYWlyby5oPgogI2luY2x1ZGUgPGNhaXJvL2NhaXJvLmg+CiAjaW5jbHVkZSA8Y3N0ZGlv
PgpAQCAtNjYsMjYgKzY3LDE0IEBAIHN0YXRpYyBjYWlyb19zdGF0dXNfdCB3cml0ZUZ1bmN0aW9u
KHZvaWQqIGNsb3N1cmUsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuCiAgICAgcmV0dXJu
IENBSVJPX1NUQVRVU19TVUNDRVNTOwogfQogCi1zdGF0aWMgdm9pZCBkdW1wQml0bWFwKGNhaXJv
X3N1cmZhY2VfdCogc3VyZmFjZSkKK3N0YXRpYyB2b2lkIGR1bXBCaXRtYXAoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlLCBjb25zdCBjaGFyKiBjaGVja3N1bSkKIHsKICAgICBWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4gcGl4ZWxEYXRhOwogICAgIGNhaXJvX3N1cmZhY2Vfd3JpdGVfdG9fcG5nX3N0cmVh
bShzdXJmYWNlLCB3cml0ZUZ1bmN0aW9uLCAmcGl4ZWxEYXRhKTsKICAgICBjb25zdCBzaXplX3Qg
ZGF0YUxlbmd0aCA9IHBpeGVsRGF0YS5zaXplKCk7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciog
ZGF0YSA9IHBpeGVsRGF0YS5kYXRhKCk7CiAKLSAgICBwcmludGYoIkNvbnRlbnQtVHlwZTogJXNc
biIsICJpbWFnZS9wbmciKTsKLSAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3RoOiAlbHVcbiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGRhdGFMZW5ndGgpKTsKLQotICAgIGNvbnN0IHNpemVf
dCBieXRlc1RvV3JpdGVJbk9uZUNodW5rID0gMSA8PCAxNTsKLSAgICBzaXplX3QgZGF0YVJlbWFp
bmluZ1RvV3JpdGUgPSBkYXRhTGVuZ3RoOwotICAgIHdoaWxlIChkYXRhUmVtYWluaW5nVG9Xcml0
ZSkgewotICAgICAgICBzaXplX3QgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmsgPSBzdGQ6Om1pbihk
YXRhUmVtYWluaW5nVG9Xcml0ZSwgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayk7Ci0gICAgICAgIHNp
emVfdCBieXRlc1dyaXR0ZW4gPSBmd3JpdGUoZGF0YSwgMSwgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1
bmssIHN0ZG91dCk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dyaXRlSW5U
aGlzQ2h1bmspCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGF0YVJlbWFpbmluZ1RvV3Jp
dGUgLT0gYnl0ZXNXcml0dGVuOwotICAgICAgICBkYXRhICs9IGJ5dGVzV3JpdHRlbjsKLSAgICB9
CisgICAgcHJpbnRQTkcoZGF0YSwgZGF0YUxlbmd0aCwgY2hlY2tzdW0pOwogfQogCiB2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVm
IHdrSW1hZ2UpCkBAIC05NSw3ICs4NCw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhl
bHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgd2tJbWFnZSkKICAgICBjaGFyIGFj
dHVhbEhhc2hbMzNdOwogICAgIGNvbXB1dGVNRDVIYXNoU3RyaW5nRm9yQ2Fpcm9TdXJmYWNlKHN1
cmZhY2UsIGFjdHVhbEhhc2gpOwogICAgIGlmICghY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVk
QW5kRHVtcFJlc3VsdHMoYWN0dWFsSGFzaCkpCi0gICAgICAgIGR1bXBCaXRtYXAoc3VyZmFjZSk7
CisgICAgICAgIGR1bXBCaXRtYXAoc3VyZmFjZSwgYWN0dWFsSGFzaCk7CiAKICAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
Zy9UZXN0SW52b2NhdGlvbkNHLmNwcAppbmRleCAzM2YyNDc2N2E4N2Y5NzUyNDhkNjI1OTExMzQw
MTNkNDUzODhmNDI3Li40NDA4NDU0NDVkOWMzNjA2Zjg0NTI3ZjM5MjMxNDgxZjFlMGQ4NmQzIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0SW52b2Nh
dGlvbi5oIgogCisjaW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtV2ViVmlldy5oIgogI2luY2x1ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8SW1h
Z2VJTy9DR0ltYWdlRGVzdGluYXRpb24uaD4KQEAgLTk5LDcgKzEwMCw3IEBAIHZvaWQgY29tcHV0
ZU1ENUhhc2hTdHJpbmdGb3JDb250ZXh0KENHQ29udGV4dFJlZiBiaXRtYXBDb250ZXh0LCBjaGFy
IGhhc2hTdHJpbmdbCiAgICAgICAgIHNucHJpbnRmKGhhc2hTdHJpbmcsIDMzLCAiJXMlMDJ4Iiwg
aGFzaFN0cmluZywgaGFzaFtpXSk7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBCaXRtYXAoQ0dDb250
ZXh0UmVmIGJpdG1hcENvbnRleHQpCitzdGF0aWMgdm9pZCBkdW1wQml0bWFwKENHQ29udGV4dFJl
ZiBiaXRtYXBDb250ZXh0LCBjb25zdCBjaGFyKiBjaGVja3N1bSkKIHsKICAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gaW1hZ2UoQWRvcHRDRiwgQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoYml0
bWFwQ29udGV4dCkpOwogICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBpbWFnZURhdGEo
QWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CkBAIC0xMTAsMjAgKzExMSw3IEBA
IHN0YXRpYyB2b2lkIGR1bXBCaXRtYXAoQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQpCiAgICAg
Y29uc3QgdW5zaWduZWQgY2hhciogZGF0YSA9IENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdl
dCgpKTsKICAgICBjb25zdCBzaXplX3QgZGF0YUxlbmd0aCA9IENGRGF0YUdldExlbmd0aChpbWFn
ZURhdGEuZ2V0KCkpOwogCi0KLSAgICBmcHJpbnRmKHN0ZG91dCwgIkNvbnRlbnQtVHlwZTogJXNc
biIsICJpbWFnZS9wbmciKTsKLSAgICBmcHJpbnRmKHN0ZG91dCwgIkNvbnRlbnQtTGVuZ3RoOiAl
bHVcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGRhdGFMZW5ndGgpKTsKLSAgICAKLSAg
ICBjb25zdCBzaXplX3QgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayA9IDEgPDwgMTU7Ci0gICAgc2l6
ZV90IGRhdGFSZW1haW5pbmdUb1dyaXRlID0gZGF0YUxlbmd0aDsKLSAgICB3aGlsZSAoZGF0YVJl
bWFpbmluZ1RvV3JpdGUpIHsKLSAgICAgICAgc2l6ZV90IGJ5dGVzVG9Xcml0ZUluVGhpc0NodW5r
ID0gc3RkOjptaW4oZGF0YVJlbWFpbmluZ1RvV3JpdGUsIGJ5dGVzVG9Xcml0ZUluT25lQ2h1bmsp
OwotICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuID0gZndyaXRlKGRhdGEsIDEsIGJ5dGVzVG9X
cml0ZUluVGhpc0NodW5rLCBzdGRvdXQpOwotICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IGJ5
dGVzVG9Xcml0ZUluVGhpc0NodW5rKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRhdGFS
ZW1haW5pbmdUb1dyaXRlIC09IGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgZGF0YSArPSBieXRlc1dy
aXR0ZW47Ci0gICAgfQorICAgIHByaW50UE5HKGRhdGEsIGRhdGFMZW5ndGgsIGNoZWNrc3VtKTsK
IH0KIAogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0
ZWQoV0tJbWFnZVJlZiBpbWFnZSkKQEAgLTEzMyw3ICsxMjEsNyBAQCB2b2lkIFRlc3RJbnZvY2F0
aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlKQog
ICAgIGNoYXIgYWN0dWFsSGFzaFszM107CiAgICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDb250
ZXh0KGNvbnRleHQsIGFjdHVhbEhhc2gpOwogICAgIGlmICghY29tcGFyZUFjdHVhbEhhc2hUb0V4
cGVjdGVkQW5kRHVtcFJlc3VsdHMoYWN0dWFsSGFzaCkpCi0gICAgICAgIGR1bXBCaXRtYXAoY29u
dGV4dCk7CisgICAgICAgIGR1bXBCaXRtYXAoY29udGV4dCwgYWN0dWFsSGFzaCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4v
V2ViS2l0VGVzdFJ1bm5lci52Y3Byb2ogYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJL
aXRUZXN0UnVubmVyLnZjcHJvagppbmRleCBiYjRiNGM2YjdiYjNjNThhYzNlNzJlNzYwZjY2ZDIz
NjU1ZDRmNjRlLi4wZTRhYTIyODUwYjYxNTVjYmQzNGU3NmE0MDBhZmY2YmEyYmRlYTg2IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVubmVyLnZjcHJv
agorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVubmVyLnZjcHJv
agpAQCAtNDcxLDYgKzQ3MSwyMiBAQAogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbGUK
KwkJCVJlbGF0aXZlUGF0aD0iLi5cQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCIKKwkJCT4KKwkJ
PC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxDeWNsaWNSZWR1bmRhbmN5Q2hl
Y2suaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlxQaXhl
bER1bXBTdXBwb3J0LmNwcCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQ
YXRoPSIuLlxQaXhlbER1bXBTdXBwb3J0LmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJ
CVJlbGF0aXZlUGF0aD0iLi5cUGxhdGZvcm1XZWJWaWV3LmgiCiAJCQk+CiAJCTwvRmlsZT4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104395</attachid>
            <date>2011-08-18 14:09:12 -0700</date>
            <delta_ts>2011-08-18 15:08:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66494-20110818140817.patch</filename>
            <type>text/plain</type>
            <size>24500</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMzNTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkYzE4NTVlMTYyYWYxM2E0NDVkNzE0MTMyY2E2Mzk4Zjdj
NzA1Mzg4Li42MWFhNTZiOThiYTEyZDQyODllZWRmOTM3MGJiNjc0NDc4ZDJhNmFjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTEtMDgtMTggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBhZGQgZW1iZWRkZWQgcG5nIGNoZWNrc3VtcyB0byBXZWJLaXRUZXN0UnVubmVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjQ5NAorCisgICAgICAg
IExvb2tzIGxpa2UgV2ViS2l0VGVzdFJ1bm5lciBoYXMgbmV2ZXIgc3VwcG9ydGVkIGVtYmVkZGVk
IGNoZWNrc3Vtcy4gIFRoaXMgY29waWVzCisgICAgICAgIHNvbWUgY29kZSBmcm9tIERSVCBhbmQg
YWRkcyBpdCB0byB0aGUgV2ViS2l0VGVzdFJ1bm5lci4KKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvQ3ljbGljUmVkdW5kYW5j
eUNoZWNrLmNwcDogQ29waWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5oOiBDb3BpZWQgZnJvbSBUb29s
cy9EdW1wUmVuZGVyVHJlZQorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUu
YW06IEFkZCBuZXcgZmlsZXMKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1BpeGVsRHVtcFN1
cHBvcnQuY3BwOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZQorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvUGl4ZWxEdW1wU3VwcG9ydC5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1w
UmVuZGVyVHJlZQorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3IGZpbGVzCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcDoKKyAgICAgICAgKFdUUjo6
ZHVtcEJpdG1hcCk6IFJlZmFjdG9yIHRvIHVzZSBQaXhlbER1bXBTdXBwb3J0LgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHA6CisgICAg
ICAgIChXVFI6OmR1bXBCaXRtYXApOiBSZWZhY3RvciB0byB1c2UgUGl4ZWxEdW1wU3VwcG9ydC4K
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4
cGVjdGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRUZXN0UnVubmVy
LnZjcHJvajogQWRkIG5ldyBmaWxlcworCiAyMDExLTA4LTE4ICBTaGF3biBTaW5naCAgPHNoYXdu
c2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzI0MApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQ3lj
bGljUmVkdW5kYW5jeUNoZWNrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0N5Y2xpY1JlZHVu
ZGFuY3lDaGVjay5jcHAKaW5kZXggMzYxZWEwZjc5ZWExOGYyMDIyODI5YjM2YjczYTFjMDM0MzAz
NmM5MC4uNTYyMjI1Mzk1Zjc5NGZjMTM2MDA1NzE3ZmFiYzhjNTE1OTkyYWMzZiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9DeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwCkBAIC01Niw5ICs1
Niw5IEBAIHVuc2lnbmVkIGNvbXB1dGVDcmMoY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBi
dWZmZXIpCiAgICAgICAgIGNyY1RhYmxlQ29tcHV0ZWQgPSB0cnVlOwogICAgIH0KIAotICAgIHVu
c2lnbmVkIGNyYyA9IDB4ZmZmZmZmZmZMOworICAgIHVuc2lnbmVkIGNyYyA9IDB4ZmZmZmZmZmZV
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYnVmZmVyLnNpemUoKTsgKytpKQotICAgICAg
ICBjcmMgPSBjcmNUYWJsZVsoY3JjIF4gYnVmZmVyW2ldKSAmIDB4ZmZdIF4gKChjcmMgPj4gOCkg
JiAweDAwZmZmZmZmTCk7Ci0gICAgcmV0dXJuIGNyYyBeIDB4ZmZmZmZmZmZMOworICAgICAgICBj
cmMgPSBjcmNUYWJsZVsoY3JjIF4gYnVmZmVyW2ldKSAmIDB4ZmZdIF4gKChjcmMgPj4gOCkgJiAw
eDAwZmZmZmZmVSk7CisgICAgcmV0dXJuIGNyYyBeIDB4ZmZmZmZmZmZVOwogfQogCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0N5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTYyMjI1Mzk1Zjc5NGZjMTM2MDA1NzE3ZmFiYzhjNTE1OTkyYWMzZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBSb2JlcnQgRWlzZWxl
IDxyb2JlcnRAeGFyZy5vcmc+IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkN5Y2xpY1JlZHVuZGFuY3lDaGVjay5oIgorCisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCitzdGF0aWMgdm9pZCBtYWtlQ3JjVGFibGUodW5zaWduZWQgY3JjVGFibGVbMjU2XSkK
K3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKyAgICAgICAgdW5z
aWduZWQgYyA9IGk7CisgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgODsgaysrKSB7CisgICAg
ICAgICAgICBpZiAoYyAmIDEpCisgICAgICAgICAgICAgICAgYyA9IC0zMDY2NzQ5MTIgXiAoKGMg
Pj4gMSkgJiAweDdmZmZmZmZmKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBj
ID0gYyA+PiAxOworICAgICAgICB9CisgICAgICAgIGNyY1RhYmxlW2ldID0gYzsKKyAgICB9Cit9
CisKK3Vuc2lnbmVkIGNvbXB1dGVDcmMoY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiBidWZm
ZXIpCit7CisgICAgc3RhdGljIHVuc2lnbmVkIGNyY1RhYmxlWzI1Nl07CisgICAgc3RhdGljIGJv
b2wgY3JjVGFibGVDb21wdXRlZCA9IGZhbHNlOworICAgIGlmICghY3JjVGFibGVDb21wdXRlZCkg
eworICAgICAgICBtYWtlQ3JjVGFibGUoY3JjVGFibGUpOworICAgICAgICBjcmNUYWJsZUNvbXB1
dGVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBjcmMgPSAweGZmZmZmZmZmVTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJ1ZmZlci5zaXplKCk7ICsraSkKKyAgICAgICAgY3Jj
ID0gY3JjVGFibGVbKGNyYyBeIGJ1ZmZlcltpXSkgJiAweGZmXSBeICgoY3JjID4+IDgpICYgMHgw
MGZmZmZmZlUpOworICAgIHJldHVybiBjcmMgXiAweGZmZmZmZmZmVTsKK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DeWNsaWNSZWR1bmRhbmN5Q2hlY2suaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYx
ZDc4ZTg2YzM1ZWI3OWVjMTgzZmUxZDZkMmIyNTYyM2Y4YWRlZAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmgKQEAgLTAsMCAr
MSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ3ljbGljUmVkdW5kYW5jeUNoZWNrX2gKKyNkZWZpbmUgQ3ljbGljUmVk
dW5kYW5jeUNoZWNrX2gKKworI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwordW5zaWduZWQgY29t
cHV0ZUNyYyhjb25zdCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mKTsKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQppbmRleCA2OWJhZjExZGI1NmE5NDI3MGU3NzNjZDhl
Y2UyYTBiMGQ4YTQ3MDZjLi5lYjZiOTUwODZmOTA5NWE1OWUxNTYyYTdkNWFhNTM0Y2I1NmQ1MDll
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KQEAgLTEzLDYgKzEzLDEwIEBA
IFByb2dyYW1zX1dlYktpdFRlc3RSdW5uZXJfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRUZXN0
UnVubmVyL2d0ay9QbGF0Zm9ybVdlYlZpZXdHdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVu
bmVyL2d0ay9UZXN0Q29udHJvbGxlckd0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Q3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DeWNs
aWNSZWR1bmRhbmN5Q2hlY2suaCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QaXhlbER1bXBT
dXBwb3J0LmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QaXhlbER1bXBTdXBwb3J0Lmgg
XAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmggXAogCVRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvU3RyaW5nRnVuY3Rpb25zLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvUGl4ZWxEdW1wU3VwcG9ydC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BpeGVsRHVt
cFN1cHBvcnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZWRjMWIyNDg5ZTFmOWU1ZWY2YWQzNzcyZDU5YTIz
NWRmYzIzZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BpeGVs
RHVtcFN1cHBvcnQuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgorCisjaW5jbHVkZSAiQ3ljbGljUmVkdW5kYW5j
eUNoZWNrLmgiCisKK3N0YXRpYyB2b2lkIGFwcGVuZEludFRvVmVjdG9yKHVuc2lnbmVkIG51bWJl
ciwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiB2ZWN0b3IpCit7CisgICAgc2l6ZV90IG9mZnNldCA9
IHZlY3Rvci5zaXplKCk7CisgICAgdmVjdG9yLmdyb3cob2Zmc2V0ICsgNCk7CisgICAgdmVjdG9y
W29mZnNldF0gPSAoKG51bWJlciA+PiAyNCkgJiAweGZmKTsKKyAgICB2ZWN0b3Jbb2Zmc2V0ICsg
MV0gPSAoKG51bWJlciA+PiAxNikgJiAweGZmKTsKKyAgICB2ZWN0b3Jbb2Zmc2V0ICsgMl0gPSAo
KG51bWJlciA+PiA4KSAmIDB4ZmYpOworICAgIHZlY3RvcltvZmZzZXQgKyAzXSA9IChudW1iZXIg
JiAweGZmKTsKK30KKworc3RhdGljIHZvaWQgY29udmVydENoZWNrc3VtVG9QTkdDb21tZW50KGNv
bnN0IGNoYXIqIGNoZWNrc3VtLCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mIGJ5dGVzVG9BZGQpCit7
CisgICAgLy8gQ2h1bmtzIG9mIFBORyBmaWxlcyBhcmUgPGxlbmd0aD4sIDx0eXBlPiwgPGRhdGE+
LCA8Y3JjPi4KKyAgICBzdGF0aWMgY29uc3QgY2hhciB0ZXh0Q29tbWVudFByZWZpeFtdID0gIlx4
MDBceDAwXHgwMFx4Mjl0RVh0Y2hlY2tzdW1ceDAwIjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHByZWZpeExlbmd0aCA9IHNpemVvZih0ZXh0Q29tbWVudFByZWZpeCkgLSAxOyAvLyBUaGUgLTEg
aXMgZm9yIHRoZSBudWxsIGF0IHRoZSBlbmQgb2YgdGhlIGNoYXJbXS4KKyAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGNoZWNrc3VtTGVuZ3RoID0gMzI7CisKKyAgICBieXRlc1RvQWRkLmFwcGVuZCh0
ZXh0Q29tbWVudFByZWZpeCwgcHJlZml4TGVuZ3RoKTsKKyAgICBieXRlc1RvQWRkLmFwcGVuZChj
aGVja3N1bSwgY2hlY2tzdW1MZW5ndGgpOworCisgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IGRh
dGFUb0NyYzsKKyAgICBkYXRhVG9DcmMuYXBwZW5kKHRleHRDb21tZW50UHJlZml4ICsgNCwgcHJl
Zml4TGVuZ3RoIC0gNCk7IC8vIERvbid0IGluY2x1ZGUgdGhlIGNodW5rIGxlbmd0aCBpbiB0aGUg
Y3JjLgorICAgIGRhdGFUb0NyYy5hcHBlbmQoY2hlY2tzdW0sIGNoZWNrc3VtTGVuZ3RoKTsKKyAg
ICB1bnNpZ25lZCBjcmMzMiA9IGNvbXB1dGVDcmMoZGF0YVRvQ3JjKTsKKworICAgIGFwcGVuZElu
dFRvVmVjdG9yKGNyYzMyLCBieXRlc1RvQWRkKTsKK30KKworc3RhdGljIHNpemVfdCBvZmZzZXRB
ZnRlcklIRFJDaHVuayhjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCBjb25zdCBzaXplX3QgZGF0
YUxlbmd0aCkKK3sKKyAgICBjb25zdCBpbnQgcG5nSGVhZGVyTGVuZ3RoID0gODsKKyAgICBjb25z
dCBpbnQgcG5nSUhEUkNodW5rTGVuZ3RoID0gMjU7IC8vIGNodW5rIGxlbmd0aCArICJJSERSIiAr
IDEzIGJ5dGVzIG9mIGRhdGEgKyBjaGVja3N1bQorICAgIHJldHVybiBwbmdIZWFkZXJMZW5ndGgg
KyBwbmdJSERSQ2h1bmtMZW5ndGg7Cit9CisKK3ZvaWQgcHJpbnRQTkcoY29uc3QgdW5zaWduZWQg
Y2hhciogZGF0YSwgY29uc3Qgc2l6ZV90IGRhdGFMZW5ndGgsIGNvbnN0IGNoYXIqIGNoZWNrc3Vt
KQoreworICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBieXRlc1RvQWRkOworICAgIGNvbnZlcnRD
aGVja3N1bVRvUE5HQ29tbWVudChjaGVja3N1bSwgYnl0ZXNUb0FkZCk7CisKKyAgICBwcmludGYo
IkNvbnRlbnQtVHlwZTogJXNcbiIsICJpbWFnZS9wbmciKTsKKyAgICBwcmludGYoIkNvbnRlbnQt
TGVuZ3RoOiAlbHVcbiIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGRhdGFMZW5ndGggKyBi
eXRlc1RvQWRkLnNpemUoKSkpOworCisgICAgc2l6ZV90IGluc2VydE9mZnNldCA9IG9mZnNldEFm
dGVySUhEUkNodW5rKGRhdGEsIGRhdGFMZW5ndGgpOworCisgICAgZndyaXRlKGRhdGEsIDEsIGlu
c2VydE9mZnNldCwgc3Rkb3V0KTsKKyAgICBmd3JpdGUoYnl0ZXNUb0FkZC5kYXRhKCksIDEsIGJ5
dGVzVG9BZGQuc2l6ZSgpLCBzdGRvdXQpOworCisgICAgY29uc3Qgc2l6ZV90IGJ5dGVzVG9Xcml0
ZUluT25lQ2h1bmsgPSAxIDw8IDE1OworICAgIGRhdGEgKz0gaW5zZXJ0T2Zmc2V0OworICAgIHNp
emVfdCBkYXRhUmVtYWluaW5nVG9Xcml0ZSA9IGRhdGFMZW5ndGggLSBpbnNlcnRPZmZzZXQ7Cisg
ICAgd2hpbGUgKGRhdGFSZW1haW5pbmdUb1dyaXRlKSB7CisgICAgICAgIHNpemVfdCBieXRlc1Rv
V3JpdGVJblRoaXNDaHVuayA9IHN0ZDo6bWluKGRhdGFSZW1haW5pbmdUb1dyaXRlLCBieXRlc1Rv
V3JpdGVJbk9uZUNodW5rKTsKKyAgICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbiA9IGZ3cml0ZShk
YXRhLCAxLCBieXRlc1RvV3JpdGVJblRoaXNDaHVuaywgc3Rkb3V0KTsKKyAgICAgICAgaWYgKGJ5
dGVzV3JpdHRlbiAhPSBieXRlc1RvV3JpdGVJblRoaXNDaHVuaykKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkYXRhUmVtYWluaW5nVG9Xcml0ZSAtPSBieXRlc1dyaXR0ZW47CisgICAgICAg
IGRhdGEgKz0gYnl0ZXNXcml0dGVuOworICAgIH0KK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvUGl4ZWxEdW1wU3VwcG9ydC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Q
aXhlbER1bXBTdXBwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFjNmUzOGVhMmU5N2YxMDZmNWZlODM4NzM2
OTU0NDYyODM0MTQ0NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
UGl4ZWxEdW1wU3VwcG9ydC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGl4ZWxEdW1wU3Vw
cG9ydF9oCisjZGVmaW5lIFBpeGVsRHVtcFN1cHBvcnRfaAorCit2b2lkIHByaW50UE5HKGNvbnN0
IHVuc2lnbmVkIGNoYXIqIGRhdGEsIGNvbnN0IHNpemVfdCBkYXRhTGVuZ3RoLCBjb25zdCBjaGFy
KiBjaGVja3N1bSk7CisKKyNlbmRpZiAvLyBQaXhlbER1bXBTdXBwb3J0X2gKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjYyODI2MTA2MmIxMmEyZTdkODVlNmUwY2MxNzM4
NTQ3N2M4OGIyNC4uOGE0OGMwODc2NjNmN2NjOGUzODhmNDI3MDI1Zjc2ZDRhNTk4YjUxNyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0
UnVubmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxLDYgKzIxLDggQEAKIC8qIEVu
ZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLworCQk1MzIyRkI0MzEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5j
eUNoZWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUzMjJGQjQxMTNGREEwQ0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICov
OyB9OworCQk1MzIyRkI0NjEzRkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzIyRkI0NDEz
RkRBMEVBMDA0MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgKi87IH07CiAJCTY1MTBBNzgy
MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc3MTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVN
X19fXy5UVEYgKi87IH07CiAJCTY1MTBBNzgzMTFFQzY0MzgwMDQxMDg2NyAvKiBDb2xvckJpdHMu
dHRmIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEw
QTc3ODExRUM2NDM4MDA0MTA4NjcgLyogQ29sb3JCaXRzLnR0ZiAqLzsgfTsKIAkJNjUxMEE3ODQx
MUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3OTExRUM2NDM4MDA0
MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi87IH07CkBAIC04MSw2ICs4Mywx
MCBAQAogCQkzNzhENDQyMjEzMzQ2RDAwMDA2QTc3N0IgLyogY29uZmlnLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTIzMEUxNjEzOEM3
OEJGMDBCQ0NGQ0EgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CiAJCTQxODE3MzFCMTM4QUQzOUQwMDU3QUFBNCAvKiBXZWJDb3Jl
VGVzdFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQ29yZVRl
c3RTdXBwb3J0Lmg7IHBhdGggPSBXZWJDb3JlVGVzdFN1cHBvcnQvV2ViQ29yZVRlc3RTdXBwb3J0
Lmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTUzMjJGQjQxMTNGREEw
Q0QwMDQxQUJDQyAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMyMkZCNDIxM0ZEQTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1Jl
ZHVuZGFuY3lDaGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDeWNsaWNS
ZWR1bmRhbmN5Q2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMyMkZCNDQx
M0ZEQTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGl4ZWxEdW1wU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUzMjJGQjQ1MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBw
b3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBpeGVsRHVtcFN1cHBvcnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3
IC8qIEFIRU1fX19fLlRURiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGZpbGU7IG5hbWUgPSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVN
X19fXy5UVEYiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3ODExRUM2NDM4
MDA0MTA4NjcgLyogQ29sb3JCaXRzLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBDb2xvckJpdHMudHRmOyBwYXRoID0gZm9u
dHMvQ29sb3JCaXRzLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxMEE3Nzkx
MUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9IFdlYktp
dFdlaWdodFdhdGNoZXIxMDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjEw
MC50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODksMTIgKzE5NSwxNiBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5MTkyMDIxMzMzRTRDRDAwMzAxMURDIC8qIGNnICovLAog
CQkJCUJDNzkzM0ZFMTE4RjdDNzQwMDVFQThFMiAvKiBtYWMgKi8sCi0JCQkJQkMyNTFBMTcxMUQx
Njc3NDAwMkVCQzAxIC8qIFdlYktpdFRlc3RSdW5uZXJQcmVmaXguaCAqLywKKwkJCQk1MzIyRkI0
MTEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcCAqLywKKwkJCQk1
MzIyRkI0MjEzRkRBMENEMDA0MUFCQ0MgLyogQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmggKi8sCisJ
CQkJNTMyMkZCNDQxM0ZEQTBFQTAwNDFBQkNDIC8qIFBpeGVsRHVtcFN1cHBvcnQuY3BwICovLAor
CQkJCTUzMjJGQjQ1MTNGREEwRUEwMDQxQUJDQyAvKiBQaXhlbER1bXBTdXBwb3J0LmggKi8sCiAJ
CQkJQkM3OTM0REQxMTkwNjZFQzAwNUVBOEUyIC8qIFBsYXRmb3JtV2ViVmlldy5oICovLAogCQkJ
CUJDNzkzNDJGMTE4RjdGMTkwMDVFQThFMiAvKiBUZXN0Q29udHJvbGxlci5oICovLAogCQkJCUJD
NzkzNDMwMTE4RjdGMTkwMDVFQThFMiAvKiBUZXN0Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkNE
N0QyRjYxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmggKi8sCiAJCQkJQkNEN0Qy
RjcxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmNwcCAqLywKKwkJCQlCQzI1MUEx
NzExRDE2Nzc0MDAyRUJDMDEgLyogV2ViS2l0VGVzdFJ1bm5lclByZWZpeC5oICovLAogCQkJKTsK
IAkJCW5hbWUgPSBUZXN0UnVubmVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ1
MywxMCArNDYzLDEyIEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmls
ZXMgPSAoCiAJCQkJQkM3OTM0MDAxMThGN0M4NDAwNUVBOEUyIC8qIG1haW4ubW0gaW4gU291cmNl
cyAqLywKLQkJCQlCQzc5MzQzMTExOEY3RjE5MDA1RUE4RTIgLyogVGVzdENvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNTMyMkZCNDMxM0ZEQTBDRDAwNDFBQkNDIC8qIEN5Y2xpY1Jl
ZHVuZGFuY3lDaGVjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzIyRkI0NjEzRkRBMEVBMDA0
MUFCQ0MgLyogUGl4ZWxEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzc5MzRF
ODExOTA2ODQ2MDA1RUE4RTIgLyogUGxhdGZvcm1XZWJWaWV3TWFjLm1tIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQkNEN0QyRjgxMTkyMTI3ODAwNkRCN0VFIC8qIFRlc3RJbnZvY2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUJDNzkzNDMxMTE4RjdGMTkwMDVFQThFMiAvKiBUZXN0Q29udHJvbGxl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzhDNzk1QzExRDI3ODVEMDA0NTM1QTEgLyogVGVz
dENvbnRyb2xsZXJNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQlCQ0Q3RDJGODExOTIxMjc4MDA2
REI3RUUgLyogVGVzdEludm9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM5MTkyMDUx
MzMzRTRGODAwMzAxMURDIC8qIFRlc3RJbnZvY2F0aW9uQ0cuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcApp
bmRleCAyMjYxODc0ZDc5NTcwOTk1NzcwYjE4NDc3MzNhZDkzY2MyODNhOWE0Li42YmI2OTQ5NmFl
YWZlMTkyZWZkYzc1YmRmZjAxYjdhNzVlNmMwMGQzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5oIgogCisj
aW5jbHVkZSAiUGl4ZWxEdW1wU3VwcG9ydC5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZUNh
aXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KICNpbmNsdWRlIDxjc3RkaW8+CkBAIC02
NiwyNiArNjcsMTQgQEAgc3RhdGljIGNhaXJvX3N0YXR1c190IHdyaXRlRnVuY3Rpb24odm9pZCog
Y2xvc3VyZSwgY29uc3QgdW5zaWduZWQgY2hhciogZGF0YSwgdW4KICAgICByZXR1cm4gQ0FJUk9f
U1RBVFVTX1NVQ0NFU1M7CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBCaXRtYXAoY2Fpcm9fc3VyZmFj
ZV90KiBzdXJmYWNlKQorc3RhdGljIHZvaWQgZHVtcEJpdG1hcChjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0IGNoYXIqIGNoZWNrc3VtKQogewogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFy
PiBwaXhlbERhdGE7CiAgICAgY2Fpcm9fc3VyZmFjZV93cml0ZV90b19wbmdfc3RyZWFtKHN1cmZh
Y2UsIHdyaXRlRnVuY3Rpb24sICZwaXhlbERhdGEpOwogICAgIGNvbnN0IHNpemVfdCBkYXRhTGVu
Z3RoID0gcGl4ZWxEYXRhLnNpemUoKTsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhID0g
cGl4ZWxEYXRhLmRhdGEoKTsKIAotICAgIHByaW50ZigiQ29udGVudC1UeXBlOiAlc1xuIiwgImlt
YWdlL3BuZyIpOwotICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVsdVxuIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4oZGF0YUxlbmd0aCkpOwotCi0gICAgY29uc3Qgc2l6ZV90IGJ5dGVz
VG9Xcml0ZUluT25lQ2h1bmsgPSAxIDw8IDE1OwotICAgIHNpemVfdCBkYXRhUmVtYWluaW5nVG9X
cml0ZSA9IGRhdGFMZW5ndGg7Ci0gICAgd2hpbGUgKGRhdGFSZW1haW5pbmdUb1dyaXRlKSB7Ci0g
ICAgICAgIHNpemVfdCBieXRlc1RvV3JpdGVJblRoaXNDaHVuayA9IHN0ZDo6bWluKGRhdGFSZW1h
aW5pbmdUb1dyaXRlLCBieXRlc1RvV3JpdGVJbk9uZUNodW5rKTsKLSAgICAgICAgc2l6ZV90IGJ5
dGVzV3JpdHRlbiA9IGZ3cml0ZShkYXRhLCAxLCBieXRlc1RvV3JpdGVJblRoaXNDaHVuaywgc3Rk
b3V0KTsKLSAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSBieXRlc1RvV3JpdGVJblRoaXNDaHVu
aykKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkYXRhUmVtYWluaW5nVG9Xcml0ZSAtPSBi
eXRlc1dyaXR0ZW47Ci0gICAgICAgIGRhdGEgKz0gYnl0ZXNXcml0dGVuOwotICAgIH0KKyAgICBw
cmludFBORyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7CiB9CiAKIHZvaWQgVGVzdEludm9j
YXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgd2tJbWFn
ZSkKQEAgLTk1LDcgKzg0LDcgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENv
bXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiB3a0ltYWdlKQogICAgIGNoYXIgYWN0dWFsSGFz
aFszM107CiAgICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JDYWlyb1N1cmZhY2Uoc3VyZmFjZSwg
YWN0dWFsSGFzaCk7CiAgICAgaWYgKCFjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1w
UmVzdWx0cyhhY3R1YWxIYXNoKSkKLSAgICAgICAgZHVtcEJpdG1hcChzdXJmYWNlKTsKKyAgICAg
ICAgZHVtcEJpdG1hcChzdXJmYWNlLCBhY3R1YWxIYXNoKTsKIAogICAgIGNhaXJvX3N1cmZhY2Vf
ZGVzdHJveShzdXJmYWNlKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y2cvVGVzdEludm9jYXRpb25DRy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJ
bnZvY2F0aW9uQ0cuY3BwCmluZGV4IDMzZjI0NzY3YTg3Zjk3NTI0OGQ2MjU5MTEzNDAxM2Q0NTM4
OGY0MjcuLjQ0MDg0NTQ0NWQ5YzM2MDZmODQ1MjdmMzkyMzE0ODFmMWUwZDg2ZDMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uLmgi
CiAKKyNpbmNsdWRlICJQaXhlbER1bXBTdXBwb3J0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJW
aWV3LmgiCiAjaW5jbHVkZSAiVGVzdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxJbWFnZUlPL0NH
SW1hZ2VEZXN0aW5hdGlvbi5oPgpAQCAtOTksNyArMTAwLDcgQEAgdm9pZCBjb21wdXRlTUQ1SGFz
aFN0cmluZ0ZvckNvbnRleHQoQ0dDb250ZXh0UmVmIGJpdG1hcENvbnRleHQsIGNoYXIgaGFzaFN0
cmluZ1sKICAgICAgICAgc25wcmludGYoaGFzaFN0cmluZywgMzMsICIlcyUwMngiLCBoYXNoU3Ry
aW5nLCBoYXNoW2ldKTsKIH0KIAotc3RhdGljIHZvaWQgZHVtcEJpdG1hcChDR0NvbnRleHRSZWYg
Yml0bWFwQ29udGV4dCkKK3N0YXRpYyB2b2lkIGR1bXBCaXRtYXAoQ0dDb250ZXh0UmVmIGJpdG1h
cENvbnRleHQsIGNvbnN0IGNoYXIqIGNoZWNrc3VtKQogewogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBpbWFnZShBZG9wdENGLCBDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShiaXRtYXBDb250
ZXh0KSk7CiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IGltYWdlRGF0YShBZG9wdENG
LCBDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKQEAgLTExMCwyMCArMTExLDcgQEAgc3RhdGlj
IHZvaWQgZHVtcEJpdG1hcChDR0NvbnRleHRSZWYgYml0bWFwQ29udGV4dCkKICAgICBjb25zdCB1
bnNpZ25lZCBjaGFyKiBkYXRhID0gQ0ZEYXRhR2V0Qnl0ZVB0cihpbWFnZURhdGEuZ2V0KCkpOwog
ICAgIGNvbnN0IHNpemVfdCBkYXRhTGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGltYWdlRGF0YS5n
ZXQoKSk7CiAKLQotICAgIGZwcmludGYoc3Rkb3V0LCAiQ29udGVudC1UeXBlOiAlc1xuIiwgImlt
YWdlL3BuZyIpOwotICAgIGZwcmludGYoc3Rkb3V0LCAiQ29udGVudC1MZW5ndGg6ICVsdVxuIiwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oZGF0YUxlbmd0aCkpOwotICAgIAotICAgIGNvbnN0
IHNpemVfdCBieXRlc1RvV3JpdGVJbk9uZUNodW5rID0gMSA8PCAxNTsKLSAgICBzaXplX3QgZGF0
YVJlbWFpbmluZ1RvV3JpdGUgPSBkYXRhTGVuZ3RoOwotICAgIHdoaWxlIChkYXRhUmVtYWluaW5n
VG9Xcml0ZSkgewotICAgICAgICBzaXplX3QgYnl0ZXNUb1dyaXRlSW5UaGlzQ2h1bmsgPSBzdGQ6
Om1pbihkYXRhUmVtYWluaW5nVG9Xcml0ZSwgYnl0ZXNUb1dyaXRlSW5PbmVDaHVuayk7Ci0gICAg
ICAgIHNpemVfdCBieXRlc1dyaXR0ZW4gPSBmd3JpdGUoZGF0YSwgMSwgYnl0ZXNUb1dyaXRlSW5U
aGlzQ2h1bmssIHN0ZG91dCk7Ci0gICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gYnl0ZXNUb1dy
aXRlSW5UaGlzQ2h1bmspCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGF0YVJlbWFpbmlu
Z1RvV3JpdGUgLT0gYnl0ZXNXcml0dGVuOwotICAgICAgICBkYXRhICs9IGJ5dGVzV3JpdHRlbjsK
LSAgICB9CisgICAgcHJpbnRQTkcoZGF0YSwgZGF0YUxlbmd0aCwgY2hlY2tzdW0pOwogfQogCiB2
b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0lt
YWdlUmVmIGltYWdlKQpAQCAtMTMzLDcgKzEyMSw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1
bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2UpCiAgICAgY2hh
ciBhY3R1YWxIYXNoWzMzXTsKICAgICBjb21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNvbnRleHQoY29u
dGV4dCwgYWN0dWFsSGFzaCk7CiAgICAgaWYgKCFjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRB
bmREdW1wUmVzdWx0cyhhY3R1YWxIYXNoKSkKLSAgICAgICAgZHVtcEJpdG1hcChjb250ZXh0KTsK
KyAgICAgICAgZHVtcEJpdG1hcChjb250ZXh0LCBhY3R1YWxIYXNoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9XZWJLaXRU
ZXN0UnVubmVyLnZjcHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RS
dW5uZXIudmNwcm9qCmluZGV4IGJiNGI0YzZiN2JiM2M1OGFjM2U3MmU3NjBmNjZkMjM2NTVkNGY2
NGUuLjBlNGFhMjI4NTBiNjE1NWNiZDM0ZTc2YTQwMGFmZjZiYTJiZGVhODYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RSdW5uZXIudmNwcm9qCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1dlYktpdFRlc3RSdW5uZXIudmNwcm9qCkBAIC00
NzEsNiArNDcxLDIyIEBACiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsZQorCQkJUmVs
YXRpdmVQYXRoPSIuLlxDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIgorCQkJPgorCQk8L0ZpbGU+
CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5oIgor
CQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBpeGVsRHVtcFN1
cHBvcnQuY3BwIgorCQkJPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4u
XFBpeGVsRHVtcFN1cHBvcnQuaCIKKwkJCT4KKwkJPC9GaWxlPgorCQk8RmlsZQogCQkJUmVsYXRp
dmVQYXRoPSIuLlxQbGF0Zm9ybVdlYlZpZXcuaCIKIAkJCT4KIAkJPC9GaWxlPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>