<?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>79677</bug_id>
          
          <creation_ts>2012-02-27 09:22:02 -0800</creation_ts>
          <short_desc>Lexer: Specialize character predicates for LChar, UChar</short_desc>
          <delta_ts>2012-03-05 10:56:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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="Andy Wingo">wingo</reporter>
          <assigned_to name="Andy Wingo">wingo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565727</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-02-27 09:22:02 -0800</bug_when>
    <thetext>The patch to be attached specializes some character predicates in the lexer for LChar vs UChar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565742</commentid>
    <comment_count>1</comment_count>
      <attachid>129055</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-02-27 09:41:37 -0800</bug_when>
    <thetext>Created attachment 129055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565747</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-02-27 09:45:00 -0800</bug_when>
    <thetext>Adding reviewers.  For speed tests, I used this:

$ time echo  &apos;for (var i=0; i&lt;1000; i++) checkSyntax(&quot;tests/parse-only/concat-jquery-mootools-prototype.js&quot;);&apos; | /home/wingo/src/WebKit-trunk/WebKitBuild/Release/Programs/.libs/lt-jsc-3 /dev/stdin

real	0m6.290s
user	0m6.000s
sys	0m0.256s

$ time echo  &apos;for (var i=0; i&lt;1000; i++) checkSyntax(&quot;tests/parse-only/concat-jquery-mootools-prototype.js&quot;);&apos; | /home/wingo/src/WebKit/WebKitBuild/Release/Programs/.libs/lt-jsc-3 /dev/stdin

real	0m6.141s
user	0m5.936s
sys	0m0.180s

That is to say, that I ran checkSyntax 1000 times in the same process on the larger file in the parse-only tests, and timed the whole run.  Here we see a reduction from 6.29 total seconds to 6.14 total seconds.  The times vary a bit, but they&apos;re about like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570553</commentid>
    <comment_count>3</comment_count>
      <attachid>130089</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-03-05 03:32:48 -0800</bug_when>
    <thetext>Created attachment 130089
fix unused param warning on mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570758</commentid>
    <comment_count>4</comment_count>
      <attachid>130089</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-05 09:10:54 -0800</bug_when>
    <thetext>Comment on attachment 130089
fix unused param warning on mac

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570787</commentid>
    <comment_count>5</comment_count>
      <attachid>130089</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-03-05 09:41:57 -0800</bug_when>
    <thetext>Comment on attachment 130089
fix unused param warning on mac

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570840</commentid>
    <comment_count>6</comment_count>
      <attachid>130089</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 10:56:47 -0800</bug_when>
    <thetext>Comment on attachment 130089
fix unused param warning on mac

Clearing flags on attachment: 130089

Committed r109769: &lt;http://trac.webkit.org/changeset/109769&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570841</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 10:56:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129055</attachid>
            <date>2012-02-27 09:41:37 -0800</date>
            <delta_ts>2012-03-05 03:32:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79677-20120227184135.patch</filename>
            <type>text/plain</type>
            <size>21196</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZDNjYzgyNzFmZjY3MTA0NWNhOGE2NjU2M2I3NjI5YjYwMWRiMDM2Li4wYWI3MWIyZTQ3YjBhODc4
ZDIzOTYwYTgzMThlZDI1MGFlMTI2ZGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxMi0wMi0yNyAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTGV4ZXI6IFNwZWNpYWxpemUgY2hhcmFjdGVyIHByZWRpY2F0ZXMgZm9yIExDaGFy
LCBVQ2hhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzk2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIHNwZWNpYWxpemVzIGlzSWRlbnRTdGFydCwgaXNJZGVudFBhcnQsIGlzV2hpdGVT
cGFjZSwKKyAgICAgICAgYW5kIGlzTGluZVRlcm1pbmF0b3IgdG8gcGVyZm9ybSBhIG1vcmUgbGlt
aXRlZCBudW1iZXIgb2YgY2hlY2tzIGlmCisgICAgICAgIHRoZSBsZXhlciBpcyBiZWluZyBpbnN0
YW50aWF0ZWQgdG8gd29yayBvbiBMQ2hhciBzZXF1ZW5jZXMuICBUaGlzCisgICAgICAgIGlzIGFi
b3V0IGEgMS41JSB3aW4gb24gdGhlIC0tcGFyc2Utb25seSBzdWl0ZSwgaGVyZS4KKworICAgICAg
ICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OmlzTGF0aW4xKTogTmV3IHN0YXRp
YyBoZWxwZXIsIHNwZWNpYWxpemVkIGZvciBMQ2hhciBhbmQKKyAgICAgICAgVUNoYXIuCisgICAg
ICAgIChKU0M6OnR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzKTogUmVuYW1lIGZyb20KKyAgICAgICAg
dHlwZXNPZkFTQ0lJQ2hhcmFjdGVycywgYW5kIGV4cGFuZCB0byB0aGUgcmFuZ2Ugb2YgdGhlIExD
aGFyCisgICAgICAgIHR5cGUuICBBbGwgdXNlcyBvZiBpc0FTQ0lJIGFyZSBjaGFuZ2VkIHRvIHVz
ZSBpc0xhdGluMS4gIEdlbmVyYXRlZAorICAgICAgICB1c2luZyBsaWJ1bmlzdHJpbmcuCisgICAg
ICAgIChKU0M6OmlzTm9uTGF0aW4xSWRlbnRTdGFydCk6CisgICAgICAgIChKU0M6OmlzSWRlbnRT
dGFydCk6CisgICAgICAgIChKU0M6OmlzTm9uTGF0aW4xSWRlbnRQYXJ0KToKKyAgICAgICAgKEpT
Qzo6aXNJZGVudFBhcnQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2hpZnRMaW5lVGVybWluYXRv
cik6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlND
OjpMZXhlcjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjo6
cGFyc2VTdHJpbmdTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJzZU11bHRpbGlu
ZUNvbW1lbnQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6TGV4
ZXI6OnNjYW5SZWdFeHApOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2tpcFJlZ0V4cCk6IFNwcmlu
a2xlIHN0YXRpY19jYXN0PFQ+KF8pIGFyb3VuZC4KKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoK
KyAgICAgICAgKEpTQzo6TGV4ZXI6OmlzV2hpdGVTcGFjZSk6CisgICAgICAgIChKU0M6OkxleGVy
Ojppc0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5
OgorICAgICAgICAoVHJpZS5wcmludEFzQyk6IERlY2xhcmUgc3BlY2lhbGl6ZWQgaXNJZGVudFBh
cnQgc3RhdGljIGZ1bmN0aW9ucy4KKwogMjAxMi0wMi0yNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3Jy
aXRhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIENocm9tZUNsaWVudDo6c2hvd0NvbnRl
eHRNZW51KCkgdG8gQ29udGV4dE1lbnVDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9LZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0tleXdvcmRMb29rdXBHZW5lcmF0b3IucHkKaW5kZXggZGM3NzllMGM1NTMyYzBhOTllMjgwYjNk
MGYxMjRkODkyZTVhMDZiMS4uMjlmNTBkZmUwNzQ5MzM4OTJmZjIwZGJjOTZmNDk2ZjBlMWE1MWNi
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0
b3IucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBHZW5lcmF0b3Iu
cHkKQEAgLTE2OSw3ICsxNjksOCBAQCBjbGFzcyBUcmllOgogICAgIGRlZiBwcmludEFzQyhzZWxm
KToKICAgICAgICAgcHJpbnQoIm5hbWVzcGFjZSBKU0MgeyIpCiAgICAgICAgIHByaW50KCIiKQot
ICAgICAgICBwcmludCgic3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0lkZW50UGFydChpbnQg
Yyk7IikKKyAgICAgICAgcHJpbnQoInN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJZGVudFBh
cnQoTENoYXIgYyk7IikKKyAgICAgICAgcHJpbnQoInN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNJZGVudFBhcnQoVUNoYXIgYyk7IikKICAgICAgICAgIyBtYXggbGVuZ3RoICsgMSBzbyB3ZSBk
b24ndCBuZWVkIHRvIGRvIGFueSBib3VuZHMgY2hlY2tpbmcgYXQgYWxsCiAgICAgICAgIHByaW50
KCJzdGF0aWMgY29uc3QgaW50IG1heFRva2VuTGVuZ3RoID0gJWQ7IiAlIChzZWxmLm1heExlbmd0
aCgpICsgMSkpCiAgICAgICAgIHByaW50KCIiKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcAppbmRleCBhZTNlNWViYmY4YjRjYjhkOTllYTEzMzQ0MWMxZWQ2YzExNTJmYThhLi5i
ODU5ODNhZGY0YmY2NTFjODRjOGRlMDMzM2RiYjkzOTc2ODk4NmI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtOTUsOCArOTUsOCBAQCBlbnVtIENoYXJhY3RlclR5
cGUgewogICAgIENoYXJhY3RlcldoaXRlU3BhY2UsCiB9OwogCi0vLyAxMjggQVNDSUkgY29kZXMK
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mQVNDSUlDaGFyYWN0ZXJzWzEyOF0g
PSB7CisvLyAyNTYgTGF0aW4tMSBjb2Rlcworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5
cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzWzI1Nl0gPSB7CiAvKiAgIDAgLSBOdWxsICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKIC8qICAgMSAtIFN0YXJ0IG9mIEhlYWRpbmcgICAqLyBD
aGFyYWN0ZXJJbnZhbGlkLAogLyogICAyIC0gU3RhcnQgb2YgVGV4dCAgICAgICovIENoYXJhY3Rl
ckludmFsaWQsCkBAIC0yMjUsNiArMjI1LDEzNCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hv
cnQgdHlwZXNPZkFTQ0lJQ2hhcmFjdGVyc1sxMjhdID0gewogLyogMTI1IC0gfSAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckNsb3NlQnJhY2UsCiAvKiAxMjYgLSB+ICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyVGlsZGUsCiAvKiAxMjcgLSBEZWxldGUgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVySW52YWxpZCwKKy8qIDEyOCAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
bnZhbGlkLAorLyogMTI5IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQs
CisvKiAxMzAgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDEz
MSAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTMyIC0gQ2Mg
Y2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxMzMgLSBDYyBjYXRlZ29y
eSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDEzNCAtIENjIGNhdGVnb3J5ICAgICAg
ICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTM1IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENo
YXJhY3RlckludmFsaWQsCisvKiAxMzYgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVy
SW52YWxpZCwKKy8qIDEzNyAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlk
LAorLyogMTM4IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAx
MzkgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE0MCAtIENj
IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTQxIC0gQ2MgY2F0ZWdv
cnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNDIgLSBDYyBjYXRlZ29yeSAgICAg
ICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE0MyAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBD
aGFyYWN0ZXJJbnZhbGlkLAorLyogMTQ0IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rl
ckludmFsaWQsCisvKiAxNDUgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxp
ZCwKKy8qIDE0NiAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyog
MTQ3IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNDggLSBD
YyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE0OSAtIENjIGNhdGVn
b3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTUwIC0gQ2MgY2F0ZWdvcnkgICAg
ICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNTEgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8g
Q2hhcmFjdGVySW52YWxpZCwKKy8qIDE1MiAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0
ZXJJbnZhbGlkLAorLyogMTUzIC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFs
aWQsCisvKiAxNTQgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8q
IDE1NSAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTU2IC0g
Q2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNTcgLSBDYyBjYXRl
Z29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE1OCAtIENjIGNhdGVnb3J5ICAg
ICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTU5IC0gQ2MgY2F0ZWdvcnkgICAgICAgICov
IENoYXJhY3RlckludmFsaWQsCisvKiAxNjAgLSBacyBjYXRlZ29yeSAobmJzcCkgKi8gQ2hhcmFj
dGVyV2hpdGVTcGFjZSwKKy8qIDE2MSAtIFBvIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
bnZhbGlkLAorLyogMTYyIC0gU2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQs
CisvKiAxNjMgLSBTYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE2
NCAtIFNjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTY1IC0gU2Mg
Y2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNjYgLSBTbyBjYXRlZ29y
eSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE2NyAtIFNvIGNhdGVnb3J5ICAgICAg
ICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTY4IC0gU2sgY2F0ZWdvcnkgICAgICAgICovIENo
YXJhY3RlckludmFsaWQsCisvKiAxNjkgLSBTbyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVy
SW52YWxpZCwKKy8qIDE3MCAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlm
aWVyU3RhcnQsCisvKiAxNzEgLSBQaSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxp
ZCwKKy8qIDE3MiAtIFNtIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyog
MTczIC0gQ2YgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNzQgLSBT
byBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE3NSAtIFNrIGNhdGVn
b3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTc2IC0gU28gY2F0ZWdvcnkgICAg
ICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNzcgLSBTbSBjYXRlZ29yeSAgICAgICAgKi8g
Q2hhcmFjdGVySW52YWxpZCwKKy8qIDE3OCAtIE5vIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0
ZXJJbnZhbGlkLAorLyogMTc5IC0gTm8gY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFs
aWQsCisvKiAxODAgLSBTayBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8q
IDE4MSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisv
KiAxODIgLSBTbyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE4MyAt
IFBvIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTg0IC0gU2sgY2F0
ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxODUgLSBObyBjYXRlZ29yeSAg
ICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE4NiAtIExsIGNhdGVnb3J5ICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxODcgLSBQZiBjYXRlZ29yeSAgICAgICAg
Ki8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE4OCAtIE5vIGNhdGVnb3J5ICAgICAgICAqLyBDaGFy
YWN0ZXJJbnZhbGlkLAorLyogMTg5IC0gTm8gY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rlcklu
dmFsaWQsCisvKiAxOTAgLSBObyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwK
Ky8qIDE5MSAtIFBvIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTky
IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDE5
MyAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAx
OTQgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyog
MTk1IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8q
IDE5NiAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisv
KiAxOTcgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAor
LyogMTk4IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwK
Ky8qIDE5OSAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQs
CisvKiAyMDAgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0
LAorLyogMjAxIC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFy
dCwKKy8qIDIwMiAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3Rh
cnQsCisvKiAyMDMgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LAorLyogMjA0IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKKy8qIDIwNSAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVy
U3RhcnQsCisvKiAyMDYgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmll
clN0YXJ0LAorLyogMjA3IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZp
ZXJTdGFydCwKKy8qIDIwOCAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlm
aWVyU3RhcnQsCisvKiAyMDkgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRp
ZmllclN0YXJ0LAorLyogMjEwIC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKKy8qIDIxMSAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCisvKiAyMTIgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAorLyogMjEzIC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKKy8qIDIxNCAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCisvKiAyMTUgLSBTbSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVy
SW52YWxpZCwKKy8qIDIxNiAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlm
aWVyU3RhcnQsCisvKiAyMTcgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRp
ZmllclN0YXJ0LAorLyogMjE4IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKKy8qIDIxOSAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCisvKiAyMjAgLSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAorLyogMjIxIC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKKy8qIDIyMiAtIEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCisvKiAyMjMgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LAorLyogMjI0IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rl
cklkZW50aWZpZXJTdGFydCwKKy8qIDIyNSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMjYgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAorLyogMjI3IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIyOCAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFy
YWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMjkgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hh
cmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjMwIC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENo
YXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIzMSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMzIgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjMzIC0gTGwgY2F0ZWdvcnkgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIzNCAtIExsIGNhdGVnb3J5ICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMzUgLSBMbCBjYXRlZ29yeSAgICAgICAg
Ki8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjM2IC0gTGwgY2F0ZWdvcnkgICAgICAg
ICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIzNyAtIExsIGNhdGVnb3J5ICAgICAg
ICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMzggLSBMbCBjYXRlZ29yeSAgICAg
ICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjM5IC0gTGwgY2F0ZWdvcnkgICAg
ICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDI0MCAtIExsIGNhdGVnb3J5ICAg
ICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyNDEgLSBMbCBjYXRlZ29yeSAg
ICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjQyIC0gTGwgY2F0ZWdvcnkg
ICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDI0MyAtIExsIGNhdGVnb3J5
ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyNDQgLSBMbCBjYXRlZ29y
eSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjQ1IC0gTGwgY2F0ZWdv
cnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDI0NiAtIExsIGNhdGVn
b3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyNDcgLSBTbSBjYXRl
Z29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDI0OCAtIExsIGNhdGVnb3J5ICAg
ICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyNDkgLSBMbCBjYXRlZ29yeSAg
ICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjUwIC0gTGwgY2F0ZWdvcnkg
ICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDI1MSAtIExsIGNhdGVnb3J5
ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyNTIgLSBMbCBjYXRlZ29y
eSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjUzIC0gTGwgY2F0ZWdv
cnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDI1NCAtIExsIGNhdGVn
b3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyNTUgLSBMbCBjYXRl
Z29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0CiB9OwogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KQEAgLTM1MCw3ICs0NzgsNyBAQCBpbnQgTGV4ZXI8VD46OmdldFVuaWNvZGVD
aGFyYWN0ZXIoKQogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB2b2lkIExleGVyPFQ+OjpzaGlmdExp
bmVUZXJtaW5hdG9yKCkKIHsKLSAgICBBU1NFUlQoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQp
KTsKKyAgICBBU1NFUlQoaXNMaW5lVGVybWluYXRvcihzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQp
KSk7CiAKICAgICBpbnQgbV9wcmV2ID0gbV9jdXJyZW50OwogICAgIHNoaWZ0KCk7CkBAIC0zNjgs
MjggKzQ5Niw0OCBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8VD46Omxhc3RUb2tlbldhc1Jl
c3RyS2V5d29yZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGFzdFRva2VuID09IENPTlRJTlVFIHx8
IG1fbGFzdFRva2VuID09IEJSRUFLIHx8IG1fbGFzdFRva2VuID09IFJFVFVSTiB8fCBtX2xhc3RU
b2tlbiA9PSBUSFJPVzsKIH0KIAotc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9uQVNDSUlJ
ZGVudFN0YXJ0KGludCBjKQorc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9uTGF0aW4xSWRl
bnRTdGFydChpbnQgYykKIHsKICAgICByZXR1cm4gY2F0ZWdvcnkoYykgJiAoTGV0dGVyX1VwcGVy
Y2FzZSB8IExldHRlcl9Mb3dlcmNhc2UgfCBMZXR0ZXJfVGl0bGVjYXNlIHwgTGV0dGVyX01vZGlm
aWVyIHwgTGV0dGVyX090aGVyKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzSWRlbnRTdGFy
dChpbnQgYykKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMYXRpbjEoTENoYXIgYykKIHsK
LSAgICByZXR1cm4gaXNBU0NJSShjKSA/IHR5cGVzT2ZBU0NJSUNoYXJhY3RlcnNbY10gPT0gQ2hh
cmFjdGVySWRlbnRpZmllclN0YXJ0IDogaXNOb25BU0NJSUlkZW50U3RhcnQoYyk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNMYXRpbjEoVUNoYXIg
YykKK3sKKyAgICByZXR1cm4gYyA8IDI1NjsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzSWRl
bnRTdGFydChMQ2hhciBjKQoreworICAgIHJldHVybiB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1tj
XSA9PSBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQ7CiB9CiAKLXN0YXRpYyBORVZFUl9JTkxJTkUg
Ym9vbCBpc05vbkFTQ0lJSWRlbnRQYXJ0KGludCBjKQorc3RhdGljIGlubGluZSBib29sIGlzSWRl
bnRTdGFydChVQ2hhciBjKQoreworICAgIHJldHVybiBpc0xhdGluMShjKSA/IGlzSWRlbnRTdGFy
dChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpIDogaXNOb25MYXRpbjFJZGVudFN0YXJ0KGMpOworfQor
CitzdGF0aWMgTkVWRVJfSU5MSU5FIGJvb2wgaXNOb25MYXRpbjFJZGVudFBhcnQoaW50IGMpCiB7
CiAgICAgcmV0dXJuIChjYXRlZ29yeShjKSAmIChMZXR0ZXJfVXBwZXJjYXNlIHwgTGV0dGVyX0xv
d2VyY2FzZSB8IExldHRlcl9UaXRsZWNhc2UgfCBMZXR0ZXJfTW9kaWZpZXIgfCBMZXR0ZXJfT3Ro
ZXIKICAgICAgICAgfCBNYXJrX05vblNwYWNpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmcgfCBO
dW1iZXJfRGVjaW1hbERpZ2l0IHwgUHVuY3R1YXRpb25fQ29ubmVjdG9yKSkgfHwgYyA9PSAweDIw
MEMgfHwgYyA9PSAweDIwMEQ7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJZGVu
dFBhcnQoaW50IGMpCitzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSWRlbnRQYXJ0KExDaGFy
IGMpCiB7CiAgICAgLy8gQ2hhcmFjdGVyIHR5cGVzIGFyZSBkaXZpZGVkIGludG8gdHdvIGdyb3Vw
cyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5IGNhbiBiZSBwYXJ0IG9mIGFuCiAgICAgLy8gaWRl
bnRpZmllciBvciBub3QuIFRob3NlIHdob3NlIHR5cGUgdmFsdWUgaXMgbGVzcyBvciBlcXVhbCB0
aGFuIENoYXJhY3Rlck51bWJlciBjYW4gYmUKICAgICAvLyBwYXJ0IG9mIGFuIGlkZW50aWZpZXIu
IChTZWUgdGhlIENoYXJhY3RlclR5cGUgZGVmaW5pdGlvbiBmb3IgbW9yZSBkZXRhaWxzLikKLSAg
ICByZXR1cm4gaXNBU0NJSShjKSA/IHR5cGVzT2ZBU0NJSUNoYXJhY3RlcnNbY10gPD0gQ2hhcmFj
dGVyTnVtYmVyIDogaXNOb25BU0NJSUlkZW50UGFydChjKTsKKyAgICByZXR1cm4gdHlwZXNPZkxh
dGluMUNoYXJhY3RlcnNbY10gPD0gQ2hhcmFjdGVyTnVtYmVyOworfQorCitzdGF0aWMgQUxXQVlT
X0lOTElORSBib29sIGlzSWRlbnRQYXJ0KFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGlzTGF0aW4x
KGMpID8gaXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKSA6IGlzTm9uTGF0aW4xSWRl
bnRQYXJ0KGMpOwogfQogCiBzdGF0aWMgaW5saW5lIGludCBzaW5nbGVFc2NhcGUoaW50IGMpCkBA
IC00OTksNyArNjQ3LDcgQEAgdGVtcGxhdGUgPD4KIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlm
aWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CiAgICAgCi0gICAgd2hpbGUgKGlzSWRlbnRQ
YXJ0KG1fY3VycmVudCkpCisgICAgd2hpbGUgKG1fY3VycmVudCAhPSAtMSAmJiBpc0lkZW50UGFy
dChzdGF0aWNfY2FzdDxMQ2hhcj4obV9jdXJyZW50KSkpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAg
CiAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSkgewpAQCAtNTUwLDcgKzY5OCw3
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUg
SlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+OjpwCiAKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsK
ICAgICAKLSAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkgeworICAgIHdoaWxlICht
X2N1cnJlbnQgIT0gLTEgJiYgaXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8VUNoYXI+KG1fY3VycmVu
dCkpKSB7CiAgICAgICAgIG9yQWxsQ2hhcnMgfD0gbV9jdXJyZW50OwogICAgICAgICBzaGlmdCgp
OwogICAgIH0KQEAgLTYwNCw3ICs3NTIsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyPiBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6cGFyc2VJZGVudGlmaWVyU2xvdwogICAg
IGJvb2wgYnVmZmVyUmVxdWlyZWQgPSBmYWxzZTsKIAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIGlmIChMSUtFTFkoaXNJZGVudFBhcnQobV9jdXJyZW50KSkpIHsKKyAgICAgICAgaWYgKExJ
S0VMWShtX2N1cnJlbnQgIT0gLTEgJiYgaXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8VD4obV9jdXJy
ZW50KSkpKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIH0KQEAgLTYyMiwxMCArNzcwLDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0
ZUlkZW50aWZpZXI+IEpTVG9rZW5UeXBlIExleGVyPFQ+OjpwYXJzZUlkZW50aWZpZXJTbG93CiAg
ICAgICAgIGludCBjaGFyYWN0ZXIgPSBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7CiAgICAgICAgIGlm
IChVTkxJS0VMWShjaGFyYWN0ZXIgPT0gLTEpKQogICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9L
OwotICAgICAgICBpZiAoVU5MSUtFTFkobV9idWZmZXIxNi5zaXplKCkgPyAhaXNJZGVudFBhcnQo
Y2hhcmFjdGVyKSA6ICFpc0lkZW50U3RhcnQoY2hhcmFjdGVyKSkpCisgICAgICAgIFVDaGFyIHVj
aGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxVQ2hhcj4oY2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKFVO
TElLRUxZKG1fYnVmZmVyMTYuc2l6ZSgpID8gIWlzSWRlbnRQYXJ0KHVjaGFyYWN0ZXIpIDogIWlz
SWRlbnRTdGFydCh1Y2hhcmFjdGVyKSkpCiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAg
ICAgICAgIGlmIChzaG91bGRDcmVhdGVJZGVudGlmaWVyKQotICAgICAgICAgICAgcmVjb3JkMTYo
Y2hhcmFjdGVyKTsKKyAgICAgICAgICAgIHJlY29yZDE2KHVjaGFyYWN0ZXIpOwogICAgICAgICBp
ZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CiAgICAgfQogCkBAIC03NTMsNyAr
OTAyLDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBib29sIExleGVyPFQ+
OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9rZW5EYXQKICAgICAgICAgICAgICAgICBpZiAoc2hv
dWxkQnVpbGRTdHJpbmdzKQogICAgICAgICAgICAgICAgICAgICByZWNvcmQxNihlc2NhcGUpOwog
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZ
KGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkpCisgICAgICAgICAgICB9IGVsc2UgaWYgKFVO
TElLRUxZKGlzTGluZVRlcm1pbmF0b3Ioc3RhdGljX2Nhc3Q8VD4obV9jdXJyZW50KSkpKQogICAg
ICAgICAgICAgICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICAgICAgICAgIGVsc2UgaWYg
KG1fY3VycmVudCA9PSAneCcpIHsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwpAQCAtODI2LDcg
Kzk3NSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gYm9vbCBMZXhlcjxU
Pjo6cGFyc2VTdHJpbmdTbG93Q2FzZShKU1Rva2VuRGF0CiAgICAgICAgIC8vIGFzIHBvc3NpYmxl
LCBhbmQgbGV0cyB0aHJvdWdoIGFsbCBjb21tb24gQVNDSUkgY2hhcmFjdGVycy4KICAgICAgICAg
aWYgKFVOTElLRUxZKCgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudCkgLSAweEUpICYg
MHgyMDAwKSkpIHsKICAgICAgICAgICAgIC8vIE5ldy1saW5lIG9yIGVuZCBvZiBpbnB1dCBpcyBu
b3QgYWxsb3dlZAotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTGluZVRlcm1pbmF0b3IobV9j
dXJyZW50KSkgfHwgVU5MSUtFTFkobV9jdXJyZW50ID09IC0xKSkgeworICAgICAgICAgICAgaWYg
KFVOTElLRUxZKG1fY3VycmVudCA9PSAtMSkgfHwgVU5MSUtFTFkoaXNMaW5lVGVybWluYXRvcihz
dGF0aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgfQpAQCAtMTAwNiw3ICsxMTU1LDcgQEAgQUxXQVlTX0lOTElORSBib29s
IExleGVyPFQ+OjpwYXJzZU11bHRpbGluZUNvbW1lbnQoKQogICAgICAgICBpZiAoVU5MSUtFTFko
bV9jdXJyZW50ID09IC0xKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBp
ZiAoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB7CisgICAgICAgIGlmIChpc0xpbmVUZXJt
aW5hdG9yKHN0YXRpY19jYXN0PFQ+KG1fY3VycmVudCkpKSB7CiAgICAgICAgICAgICBzaGlmdExp
bmVUZXJtaW5hdG9yKCk7CiAgICAgICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAg
ICB9IGVsc2UKQEAgLTEwMzUsNyArMTE4NCw3IEBAIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXgo
SlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkluZm8qIHRva2VuSW5mbywgdW5zaWduCiAg
ICAgbV90ZXJtaW5hdG9yID0gZmFsc2U7CiAKIHN0YXJ0OgotICAgIHdoaWxlIChpc1doaXRlU3Bh
Y2UobV9jdXJyZW50KSkKKyAgICB3aGlsZSAobV9jdXJyZW50ICE9IC0xICYmIGlzV2hpdGVTcGFj
ZShzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkKICAgICAgICAgc2hpZnQoKTsKIAogICAgIGlu
dCBzdGFydE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKQEAgLTEwNDYsMTEgKzExOTUsMTEgQEAg
c3RhcnQ6CiAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKIAogICAgIENoYXJhY3RlclR5cGUgdHlw
ZTsKLSAgICBpZiAoTElLRUxZKGlzQVNDSUkobV9jdXJyZW50KSkpCi0gICAgICAgIHR5cGUgPSBz
dGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPih0eXBlc09mQVNDSUlDaGFyYWN0ZXJzW21fY3VycmVu
dF0pOwotICAgIGVsc2UgaWYgKGlzTm9uQVNDSUlJZGVudFN0YXJ0KG1fY3VycmVudCkpCisgICAg
aWYgKExJS0VMWShpc0xhdGluMShzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkpCisgICAgICAg
IHR5cGUgPSBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPih0eXBlc09mTGF0aW4xQ2hhcmFjdGVy
c1ttX2N1cnJlbnRdKTsKKyAgICBlbHNlIGlmIChpc05vbkxhdGluMUlkZW50U3RhcnQobV9jdXJy
ZW50KSkKICAgICAgICAgdHlwZSA9IENoYXJhY3RlcklkZW50aWZpZXJTdGFydDsKLSAgICBlbHNl
IGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpCisgICAgZWxzZSBpZiAoaXNMaW5lVGVy
bWluYXRvcihzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkKICAgICAgICAgdHlwZSA9IENoYXJh
Y3RlckxpbmVUZXJtaW5hdG9yOwogICAgIGVsc2UKICAgICAgICAgdHlwZSA9IENoYXJhY3Rlcklu
dmFsaWQ7CkBAIC0xMzM3LDcgKzE0ODYsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50Ogog
ICAgICAgICB9CiAKICAgICAgICAgLy8gTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBh
ZnRlciBudW1lcmljIGxpdGVyYWwsIGUuZy4gIjNpbiIgaXMgYmFkLgotICAgICAgICBpZiAoVU5M
SUtFTFkoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWSht
X2N1cnJlbnQgIT0gLTEgJiYgaXNJZGVudFN0YXJ0KHN0YXRpY19jYXN0PFQ+KG1fY3VycmVudCkp
KSkgewogICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiQXQgbGVhc3Qgb25lIGRpZ2l0
IG11c3Qgb2NjdXIgYWZ0ZXIgYSBkZWNpbWFsIHBvaW50IjsKICAgICAgICAgICAgIGdvdG8gcmV0
dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTEzNTcsNyArMTUwNiw3IEBAIGluTnVtYmVyQWZ0ZXJE
ZWNpbWFsUG9pbnQ6CiAgICAgICAgIHRva2VuID0gU1RSSU5HOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIENoYXJhY3RlcklkZW50aWZpZXJTdGFydDoKLSAgICAgICAgQVNTRVJUKGlzSWRlbnRT
dGFydChtX2N1cnJlbnQpKTsKKyAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChzdGF0aWNfY2Fz
dDxUPihtX2N1cnJlbnQpKSk7CiAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCBpbnRvIENoYXJhY3Rl
ckJhY2tTbGFzaC4KICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKICAgICAgICAgaWYgKGxl
eGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCkBAIC0xMzY2LDcgKzE1MTUs
NyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICAgICAgdG9rZW4gPSBwYXJz
ZUlkZW50aWZpZXI8dHJ1ZT4odG9rZW5EYXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJMaW5lVGVybWluYXRvcjoKLSAgICAgICAg
QVNTRVJUKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSk7CisgICAgICAgIEFTU0VSVChpc0xp
bmVUZXJtaW5hdG9yKHN0YXRpY19jYXN0PFQ+KG1fY3VycmVudCkpKTsKICAgICAgICAgc2hpZnRM
aW5lVGVybWluYXRvcigpOwogICAgICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICAgICAg
bV90ZXJtaW5hdG9yID0gdHJ1ZTsKQEAgLTEzODQsNyArMTUzMyw3IEBAIGluTnVtYmVyQWZ0ZXJE
ZWNpbWFsUG9pbnQ6CiAgICAgZ290byByZXR1cm5Ub2tlbjsKIAogaW5TaW5nbGVMaW5lQ29tbWVu
dDoKLSAgICB3aGlsZSAoIWlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkgeworICAgIHdoaWxl
ICghaXNMaW5lVGVybWluYXRvcihzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkgewogICAgICAg
ICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09IC0xKSkKICAgICAgICAgICAgIHJldHVybiBFT0ZU
T0s7CiAgICAgICAgIHNoaWZ0KCk7CkBAIC0xNDMyLDcgKzE1ODEsNyBAQCBib29sIExleGVyPFQ+
OjpzY2FuUmVnRXhwKGNvbnN0IElkZW50aWZpZXIqJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVy
KiYgZmxhZ3MsCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaW50IGN1cnJlbnQgPSBtX2N1
cnJlbnQ7CiAKLSAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IoY3VycmVudCkgfHwgY3VycmVu
dCA9PSAtMSkgeworICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihzdGF0aWNfY2FzdDxUPihj
dXJyZW50KSkgfHwgY3VycmVudCA9PSAtMSkgewogICAgICAgICAgICAgbV9idWZmZXIxNi5yZXNp
emUoMCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE0NjUsNyAr
MTYxNCw3IEBAIGJvb2wgTGV4ZXI8VD46OnNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmllciomIHBh
dHRlcm4sIGNvbnN0IElkZW50aWZpZXIqJiBmbGFncywKICAgICBwYXR0ZXJuID0gbWFrZUlkZW50
aWZpZXIobV9idWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKICAgICBtX2J1ZmZl
cjE2LnJlc2l6ZSgwKTsKIAotICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKSB7Cisg
ICAgd2hpbGUgKG1fY3VycmVudCAhPSAtMSAmJiBpc0lkZW50UGFydChzdGF0aWNfY2FzdDxUPiht
X2N1cnJlbnQpKSkgewogICAgICAgICByZWNvcmQxNihtX2N1cnJlbnQpOwogICAgICAgICBzaGlm
dCgpOwogICAgIH0KQEAgLTE0ODUsNyArMTYzNCw3IEBAIGJvb2wgTGV4ZXI8VD46OnNraXBSZWdF
eHAoKQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGludCBjdXJyZW50ID0gbV9jdXJyZW50
OwogCi0gICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGN1cnJlbnQpIHx8IGN1cnJlbnQgPT0g
LTEpCisgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKHN0YXRpY19jYXN0PFQ+KGN1cnJlbnQp
KSB8fCBjdXJyZW50ID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAg
IHNoaWZ0KCk7CkBAIC0xNTExLDcgKzE2NjAsNyBAQCBib29sIExleGVyPFQ+Ojpza2lwUmVnRXhw
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQp
KQorICAgIHdoaWxlIChtX2N1cnJlbnQgIT0gLTEgJiYgaXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8
VD4obV9jdXJyZW50KSkpCiAgICAgICAgIHNoaWZ0KCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCA2ZmUwYzlhMWMyOTZiODczZjdjZjRh
MjQ1ZmUxY2NiN2MyMTlkODE1Li44MTU1OGZhOTY4MGY5MDcxYTc2NGQ0NDVjMGFjZjc4N2NlYTkz
ODEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC03OSw4ICs3OSw4IEBA
IHB1YmxpYzoKICAgICB+TGV4ZXIoKTsKIAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24g
ZnVuY3Rpb25zLgotICAgIHN0YXRpYyBib29sIGlzV2hpdGVTcGFjZShpbnQgY2hhcmFjdGVyKTsK
LSAgICBzdGF0aWMgYm9vbCBpc0xpbmVUZXJtaW5hdG9yKGludCBjaGFyYWN0ZXIpOworICAgIHN0
YXRpYyBib29sIGlzV2hpdGVTcGFjZShUIGNoYXJhY3Rlcik7CisgICAgc3RhdGljIGJvb2wgaXNM
aW5lVGVybWluYXRvcihUIGNoYXJhY3Rlcik7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgY29u
dmVydEhleChpbnQgYzEsIGludCBjMik7CiAgICAgc3RhdGljIFVDaGFyIGNvbnZlcnRVbmljb2Rl
KGludCBjMSwgaW50IGMyLCBpbnQgYzMsIGludCBjNCk7CiAKQEAgLTE5MSwxNCArMTkxLDI2IEBA
IHByaXZhdGU6CiAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiB9OwogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6aXNXaGl0ZVNwYWNl
KGludCBjaCkKK3RlbXBsYXRlIDw+CitBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8TENoYXI+Ojpp
c1doaXRlU3BhY2UoTENoYXIgY2gpCiB7Ci0gICAgcmV0dXJuIGlzQVNDSUkoY2gpID8gKGNoID09
ICcgJyB8fCBjaCA9PSAnXHQnIHx8IGNoID09IDB4QiB8fCBjaCA9PSAweEMpIDogKFdURjo6VW5p
Y29kZTo6aXNTZXBhcmF0b3JTcGFjZShjaCkgfHwgY2ggPT0gMHhGRUZGKTsKKyAgICByZXR1cm4g
Y2ggPT0gJyAnIHx8IGNoID09ICdcdCcgfHwgY2ggPT0gMHhCIHx8IGNoID09IDB4QyB8fCBjaCA9
PSAweEEwOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBM
ZXhlcjxUPjo6aXNMaW5lVGVybWluYXRvcihpbnQgY2gpCit0ZW1wbGF0ZSA8PgorQUxXQVlTX0lO
TElORSBib29sIExleGVyPFVDaGFyPjo6aXNXaGl0ZVNwYWNlKFVDaGFyIGNoKQoreworICAgIHJl
dHVybiAoY2ggPCAyNTYpID8gTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2Uoc3RhdGljX2Nhc3Q8
TENoYXI+KGNoKSkgOiAoV1RGOjpVbmljb2RlOjppc1NlcGFyYXRvclNwYWNlKGNoKSB8fCBjaCA9
PSAweEZFRkYpOworfQorCit0ZW1wbGF0ZSA8PgorQUxXQVlTX0lOTElORSBib29sIExleGVyPExD
aGFyPjo6aXNMaW5lVGVybWluYXRvcihMQ2hhciBjaCkKK3sKKyAgICByZXR1cm4gY2ggPT0gJ1xy
JyB8fCBjaCA9PSAnXG4nOworfQorCit0ZW1wbGF0ZSA8PgorQUxXQVlTX0lOTElORSBib29sIExl
eGVyPFVDaGFyPjo6aXNMaW5lVGVybWluYXRvcihVQ2hhciBjaCkKIHsKICAgICByZXR1cm4gY2gg
PT0gJ1xyJyB8fCBjaCA9PSAnXG4nIHx8IChjaCAmIH4xKSA9PSAweDIwMjg7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130089</attachid>
            <date>2012-03-05 03:32:48 -0800</date>
            <delta_ts>2012-03-05 10:56:47 -0800</delta_ts>
            <desc>fix unused param warning on mac</desc>
            <filename>bug-79677-20120305123246.patch</filename>
            <type>text/plain</type>
            <size>21172</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZWU5NmRhOGZjZWI1OTlhZjViNGM1ZDBlZTk3YjQzZTdiODNmN2JjLi5iZDFjYWY1ZWNlODg1Njk1
YjE3NTAxOWQ3ZTZkODUwMjgxNjUzZTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxMi0wMy0wNSAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CisK
KyAgICAgICAgTGV4ZXI6IFNwZWNpYWxpemUgY2hhcmFjdGVyIHByZWRpY2F0ZXMgZm9yIExDaGFy
LCBVQ2hhcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzk2NzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGlzIHBhdGNoIHNwZWNpYWxpemVzIGlzSWRlbnRTdGFydCwgaXNJZGVudFBhcnQsIGlzV2hpdGVT
cGFjZSwKKyAgICAgICAgYW5kIGlzTGluZVRlcm1pbmF0b3IgdG8gcGVyZm9ybSBhIG1vcmUgbGlt
aXRlZCBudW1iZXIgb2YgY2hlY2tzIGlmCisgICAgICAgIHRoZSBsZXhlciBpcyBiZWluZyBpbnN0
YW50aWF0ZWQgdG8gd29yayBvbiBMQ2hhciBzZXF1ZW5jZXMuICBUaGlzCisgICAgICAgIGlzIGFi
b3V0IGEgMS41JSB3aW4gb24gdGhlIC0tcGFyc2Utb25seSBzdWl0ZSwgaGVyZS4KKworICAgICAg
ICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6OmlzTGF0aW4xKTogTmV3IHN0YXRp
YyBoZWxwZXIsIHNwZWNpYWxpemVkIGZvciBMQ2hhciBhbmQKKyAgICAgICAgVUNoYXIuCisgICAg
ICAgIChKU0M6OnR5cGVzT2ZMYXRpbjFDaGFyYWN0ZXJzKTogUmVuYW1lIGZyb20KKyAgICAgICAg
dHlwZXNPZkFTQ0lJQ2hhcmFjdGVycywgYW5kIGV4cGFuZCB0byB0aGUgcmFuZ2Ugb2YgdGhlIExD
aGFyCisgICAgICAgIHR5cGUuICBBbGwgdXNlcyBvZiBpc0FTQ0lJIGFyZSBjaGFuZ2VkIHRvIHVz
ZSBpc0xhdGluMS4gIEdlbmVyYXRlZAorICAgICAgICB1c2luZyBsaWJ1bmlzdHJpbmcuCisgICAg
ICAgIChKU0M6OmlzTm9uTGF0aW4xSWRlbnRTdGFydCk6CisgICAgICAgIChKU0M6OmlzSWRlbnRT
dGFydCk6CisgICAgICAgIChKU0M6OmlzTm9uTGF0aW4xSWRlbnRQYXJ0KToKKyAgICAgICAgKEpT
Qzo6aXNJZGVudFBhcnQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2hpZnRMaW5lVGVybWluYXRv
cik6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJzZUlkZW50aWZpZXIpOgorICAgICAgICAoSlND
OjpMZXhlcjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpMZXhlcjo6
cGFyc2VTdHJpbmdTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkxleGVyOjpwYXJzZU11bHRpbGlu
ZUNvbW1lbnQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKEpTQzo6TGV4
ZXI6OnNjYW5SZWdFeHApOgorICAgICAgICAoSlNDOjpMZXhlcjo6c2tpcFJlZ0V4cCk6IFNwcmlu
a2xlIHN0YXRpY19jYXN0PFQ+KF8pIGFyb3VuZC4KKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoK
KyAgICAgICAgKEpTQzo6TGV4ZXI6OmlzV2hpdGVTcGFjZSk6CisgICAgICAgIChKU0M6OkxleGVy
Ojppc0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBLZXl3b3JkTG9va3VwR2VuZXJhdG9yLnB5
OgorICAgICAgICAoVHJpZS5wcmludEFzQyk6IERlY2xhcmUgc3BlY2lhbGl6ZWQgaXNJZGVudFBh
cnQgc3RhdGljIGZ1bmN0aW9ucy4KKwogMjAxMi0wMi0yOCAgQW5keSBXaW5nbyAgPHdpbmdvQGln
YWxpYS5jb20+CiAKICAgICAgICAgUGFyc2VyOiBJbmxpbmUgU2NvcGVOb2RlRGF0YSBpbnRvIFNj
b3BlTm9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0tleXdvcmRMb29rdXBH
ZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRv
ci5weQppbmRleCBkYzc3OWUwYzU1MzJjMGE5OWUyODBiM2QwZjEyNGQ4OTJlNWEwNmIxLi4yOWY1
MGRmZTA3NDkzMzg5MmZmMjBkYmM5NmY0OTZmMGUxYTUxY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvS2V5d29yZExvb2t1cEdlbmVyYXRvci5weQpAQCAtMTY5LDcgKzE2OSw4IEBA
IGNsYXNzIFRyaWU6CiAgICAgZGVmIHByaW50QXNDKHNlbGYpOgogICAgICAgICBwcmludCgibmFt
ZXNwYWNlIEpTQyB7IikKICAgICAgICAgcHJpbnQoIiIpCi0gICAgICAgIHByaW50KCJzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIGlzSWRlbnRQYXJ0KGludCBjKTsiKQorICAgICAgICBwcmludCgi
c3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0lkZW50UGFydChMQ2hhciBjKTsiKQorICAgICAg
ICBwcmludCgic3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBpc0lkZW50UGFydChVQ2hhciBjKTsi
KQogICAgICAgICAjIG1heCBsZW5ndGggKyAxIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IGJv
dW5kcyBjaGVja2luZyBhdCBhbGwKICAgICAgICAgcHJpbnQoInN0YXRpYyBjb25zdCBpbnQgbWF4
VG9rZW5MZW5ndGggPSAlZDsiICUgKHNlbGYubWF4TGVuZ3RoKCkgKyAxKSkKICAgICAgICAgcHJp
bnQoIiIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IGFlM2U1ZWJi
ZjhiNGNiOGQ5OWVhMTMzNDQxYzFlZDZjMTE1MmZhOGEuLjgzOTAwNzdhZjM4MDYwZjVhMGFmYTEz
OGNhMTgwNTMwNjcwMDZjNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3Bw
CkBAIC05NSw4ICs5NSw4IEBAIGVudW0gQ2hhcmFjdGVyVHlwZSB7CiAgICAgQ2hhcmFjdGVyV2hp
dGVTcGFjZSwKIH07CiAKLS8vIDEyOCBBU0NJSSBjb2Rlcwotc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNob3J0IHR5cGVzT2ZBU0NJSUNoYXJhY3RlcnNbMTI4XSA9IHsKKy8vIDI1NiBMYXRpbi0xIGNv
ZGVzCitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNb
MjU2XSA9IHsKIC8qICAgMCAtIE51bGwgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlk
LAogLyogICAxIC0gU3RhcnQgb2YgSGVhZGluZyAgICovIENoYXJhY3RlckludmFsaWQsCiAvKiAg
IDIgLSBTdGFydCBvZiBUZXh0ICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKQEAgLTIyNSw2ICsy
MjUsMTM0IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mQVNDSUlDaGFyYWN0
ZXJzWzEyOF0gPSB7CiAvKiAxMjUgLSB9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQ2xv
c2VCcmFjZSwKIC8qIDEyNiAtIH4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJUaWxkZSwK
IC8qIDEyNyAtIERlbGV0ZSAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTI4
IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxMjkgLSBDYyBj
YXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDEzMCAtIENjIGNhdGVnb3J5
ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTMxIC0gQ2MgY2F0ZWdvcnkgICAgICAg
ICovIENoYXJhY3RlckludmFsaWQsCisvKiAxMzIgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hh
cmFjdGVySW52YWxpZCwKKy8qIDEzMyAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
bnZhbGlkLAorLyogMTM0IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQs
CisvKiAxMzUgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDEz
NiAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTM3IC0gQ2Mg
Y2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxMzggLSBDYyBjYXRlZ29y
eSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDEzOSAtIENjIGNhdGVnb3J5ICAgICAg
ICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTQwIC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENo
YXJhY3RlckludmFsaWQsCisvKiAxNDEgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVy
SW52YWxpZCwKKy8qIDE0MiAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlk
LAorLyogMTQzIC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAx
NDQgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE0NSAtIENj
IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTQ2IC0gQ2MgY2F0ZWdv
cnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNDcgLSBDYyBjYXRlZ29yeSAgICAg
ICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE0OCAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBD
aGFyYWN0ZXJJbnZhbGlkLAorLyogMTQ5IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rl
ckludmFsaWQsCisvKiAxNTAgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxp
ZCwKKy8qIDE1MSAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyog
MTUyIC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNTMgLSBD
YyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE1NCAtIENjIGNhdGVn
b3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTU1IC0gQ2MgY2F0ZWdvcnkgICAg
ICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNTYgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8g
Q2hhcmFjdGVySW52YWxpZCwKKy8qIDE1NyAtIENjIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0
ZXJJbnZhbGlkLAorLyogMTU4IC0gQ2MgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFs
aWQsCisvKiAxNTkgLSBDYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8q
IDE2MCAtIFpzIGNhdGVnb3J5IChuYnNwKSAqLyBDaGFyYWN0ZXJXaGl0ZVNwYWNlLAorLyogMTYx
IC0gUG8gY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNjIgLSBTYyBj
YXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE2MyAtIFNjIGNhdGVnb3J5
ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTY0IC0gU2MgY2F0ZWdvcnkgICAgICAg
ICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNjUgLSBTYyBjYXRlZ29yeSAgICAgICAgKi8gQ2hh
cmFjdGVySW52YWxpZCwKKy8qIDE2NiAtIFNvIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
bnZhbGlkLAorLyogMTY3IC0gU28gY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQs
CisvKiAxNjggLSBTayBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE2
OSAtIFNvIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTcwIC0gTGwg
Y2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDE3MSAtIFBp
IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTcyIC0gU20gY2F0ZWdv
cnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNzMgLSBDZiBjYXRlZ29yeSAgICAg
ICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE3NCAtIFNvIGNhdGVnb3J5ICAgICAgICAqLyBD
aGFyYWN0ZXJJbnZhbGlkLAorLyogMTc1IC0gU2sgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rl
ckludmFsaWQsCisvKiAxNzYgLSBTbyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxp
ZCwKKy8qIDE3NyAtIFNtIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyog
MTc4IC0gTm8gY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxNzkgLSBO
byBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE4MCAtIFNrIGNhdGVn
b3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTgxIC0gTGwgY2F0ZWdvcnkgICAg
ICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDE4MiAtIFNvIGNhdGVnb3J5ICAg
ICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTgzIC0gUG8gY2F0ZWdvcnkgICAgICAgICov
IENoYXJhY3RlckludmFsaWQsCisvKiAxODQgLSBTayBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFj
dGVySW52YWxpZCwKKy8qIDE4NSAtIE5vIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZh
bGlkLAorLyogMTg2IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKKy8qIDE4NyAtIFBmIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAor
LyogMTg4IC0gTm8gY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxODkg
LSBObyBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKKy8qIDE5MCAtIE5vIGNh
dGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMTkxIC0gUG8gY2F0ZWdvcnkg
ICAgICAgICovIENoYXJhY3RlckludmFsaWQsCisvKiAxOTIgLSBMdSBjYXRlZ29yeSAgICAgICAg
Ki8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMTkzIC0gTHUgY2F0ZWdvcnkgICAgICAg
ICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDE5NCAtIEx1IGNhdGVnb3J5ICAgICAg
ICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxOTUgLSBMdSBjYXRlZ29yeSAgICAg
ICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMTk2IC0gTHUgY2F0ZWdvcnkgICAg
ICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDE5NyAtIEx1IGNhdGVnb3J5ICAg
ICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxOTggLSBMdSBjYXRlZ29yeSAg
ICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMTk5IC0gTHUgY2F0ZWdvcnkg
ICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIwMCAtIEx1IGNhdGVnb3J5
ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMDEgLSBMdSBjYXRlZ29y
eSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjAyIC0gTHUgY2F0ZWdv
cnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIwMyAtIEx1IGNhdGVn
b3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMDQgLSBMdSBjYXRl
Z29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjA1IC0gTHUgY2F0
ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIwNiAtIEx1IGNh
dGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMDcgLSBMdSBj
YXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjA4IC0gTHUg
Y2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIwOSAtIEx1
IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMTAgLSBM
dSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjExIC0g
THUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIxMiAt
IEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMTMg
LSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjE0
IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIx
NSAtIFNtIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAorLyogMjE2IC0gTHUg
Y2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIxNyAtIEx1
IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMTggLSBM
dSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjE5IC0g
THUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIyMCAt
IEx1IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAyMjEg
LSBMdSBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMjIy
IC0gTHUgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDIy
MyAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAy
MjQgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyog
MjI1IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8q
IDIyNiAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisv
KiAyMjcgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAor
LyogMjI4IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwK
Ky8qIDIyOSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQs
CisvKiAyMzAgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0
LAorLyogMjMxIC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFy
dCwKKy8qIDIzMiAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3Rh
cnQsCisvKiAyMzMgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LAorLyogMjM0IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKKy8qIDIzNSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVy
U3RhcnQsCisvKiAyMzYgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmll
clN0YXJ0LAorLyogMjM3IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZp
ZXJTdGFydCwKKy8qIDIzOCAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlm
aWVyU3RhcnQsCisvKiAyMzkgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRp
ZmllclN0YXJ0LAorLyogMjQwIC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKKy8qIDI0MSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCisvKiAyNDIgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAorLyogMjQzIC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKKy8qIDI0NCAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCisvKiAyNDUgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LAorLyogMjQ2IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rl
cklkZW50aWZpZXJTdGFydCwKKy8qIDI0NyAtIFNtIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0
ZXJJbnZhbGlkLAorLyogMjQ4IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKKy8qIDI0OSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCisvKiAyNTAgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAorLyogMjUxIC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKKy8qIDI1MiAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCisvKiAyNTMgLSBMbCBjYXRlZ29yeSAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LAorLyogMjU0IC0gTGwgY2F0ZWdvcnkgICAgICAgICovIENoYXJhY3Rl
cklkZW50aWZpZXJTdGFydCwKKy8qIDI1NSAtIExsIGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMzUwLDcg
KzQ3OCw3IEBAIGludCBMZXhlcjxUPjo6Z2V0VW5pY29kZUNoYXJhY3RlcigpCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIHZvaWQgTGV4ZXI8VD46OnNoaWZ0TGluZVRlcm1pbmF0b3IoKQogewotICAg
IEFTU0VSVChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpOworICAgIEFTU0VSVChpc0xpbmVU
ZXJtaW5hdG9yKHN0YXRpY19jYXN0PFQ+KG1fY3VycmVudCkpKTsKIAogICAgIGludCBtX3ByZXYg
PSBtX2N1cnJlbnQ7CiAgICAgc2hpZnQoKTsKQEAgLTM2OCwyOCArNDk2LDQ4IEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBMZXhlcjxUPjo6bGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3QKICAg
ICByZXR1cm4gbV9sYXN0VG9rZW4gPT0gQ09OVElOVUUgfHwgbV9sYXN0VG9rZW4gPT0gQlJFQUsg
fHwgbV9sYXN0VG9rZW4gPT0gUkVUVVJOIHx8IG1fbGFzdFRva2VuID09IFRIUk9XOwogfQogCi1z
dGF0aWMgTkVWRVJfSU5MSU5FIGJvb2wgaXNOb25BU0NJSUlkZW50U3RhcnQoaW50IGMpCitzdGF0
aWMgTkVWRVJfSU5MSU5FIGJvb2wgaXNOb25MYXRpbjFJZGVudFN0YXJ0KGludCBjKQogewogICAg
IHJldHVybiBjYXRlZ29yeShjKSAmIChMZXR0ZXJfVXBwZXJjYXNlIHwgTGV0dGVyX0xvd2VyY2Fz
ZSB8IExldHRlcl9UaXRsZWNhc2UgfCBMZXR0ZXJfTW9kaWZpZXIgfCBMZXR0ZXJfT3RoZXIpOwog
fQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNJZGVudFN0YXJ0KGludCBjKQorc3RhdGljIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc0xhdGluMShMQ2hhcikKIHsKLSAgICByZXR1cm4gaXNBU0NJSShjKSA/
IHR5cGVzT2ZBU0NJSUNoYXJhY3RlcnNbY10gPT0gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0IDog
aXNOb25BU0NJSUlkZW50U3RhcnQoYyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNMYXRpbjEoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA8IDI1
NjsKK30KKworc3RhdGljIGlubGluZSBib29sIGlzSWRlbnRTdGFydChMQ2hhciBjKQoreworICAg
IHJldHVybiB0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1tjXSA9PSBDaGFyYWN0ZXJJZGVudGlmaWVy
U3RhcnQ7CiB9CiAKLXN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05vbkFTQ0lJSWRlbnRQYXJ0
KGludCBjKQorc3RhdGljIGlubGluZSBib29sIGlzSWRlbnRTdGFydChVQ2hhciBjKQoreworICAg
IHJldHVybiBpc0xhdGluMShjKSA/IGlzSWRlbnRTdGFydChzdGF0aWNfY2FzdDxMQ2hhcj4oYykp
IDogaXNOb25MYXRpbjFJZGVudFN0YXJ0KGMpOworfQorCitzdGF0aWMgTkVWRVJfSU5MSU5FIGJv
b2wgaXNOb25MYXRpbjFJZGVudFBhcnQoaW50IGMpCiB7CiAgICAgcmV0dXJuIChjYXRlZ29yeShj
KSAmIChMZXR0ZXJfVXBwZXJjYXNlIHwgTGV0dGVyX0xvd2VyY2FzZSB8IExldHRlcl9UaXRsZWNh
c2UgfCBMZXR0ZXJfTW9kaWZpZXIgfCBMZXR0ZXJfT3RoZXIKICAgICAgICAgfCBNYXJrX05vblNw
YWNpbmcgfCBNYXJrX1NwYWNpbmdDb21iaW5pbmcgfCBOdW1iZXJfRGVjaW1hbERpZ2l0IHwgUHVu
Y3R1YXRpb25fQ29ubmVjdG9yKSkgfHwgYyA9PSAweDIwMEMgfHwgYyA9PSAweDIwMEQ7CiB9CiAK
LXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJZGVudFBhcnQoaW50IGMpCitzdGF0aWMgQUxX
QVlTX0lOTElORSBib29sIGlzSWRlbnRQYXJ0KExDaGFyIGMpCiB7CiAgICAgLy8gQ2hhcmFjdGVy
IHR5cGVzIGFyZSBkaXZpZGVkIGludG8gdHdvIGdyb3VwcyBkZXBlbmRpbmcgb24gd2hldGhlciB0
aGV5IGNhbiBiZSBwYXJ0IG9mIGFuCiAgICAgLy8gaWRlbnRpZmllciBvciBub3QuIFRob3NlIHdo
b3NlIHR5cGUgdmFsdWUgaXMgbGVzcyBvciBlcXVhbCB0aGFuIENoYXJhY3Rlck51bWJlciBjYW4g
YmUKICAgICAvLyBwYXJ0IG9mIGFuIGlkZW50aWZpZXIuIChTZWUgdGhlIENoYXJhY3RlclR5cGUg
ZGVmaW5pdGlvbiBmb3IgbW9yZSBkZXRhaWxzLikKLSAgICByZXR1cm4gaXNBU0NJSShjKSA/IHR5
cGVzT2ZBU0NJSUNoYXJhY3RlcnNbY10gPD0gQ2hhcmFjdGVyTnVtYmVyIDogaXNOb25BU0NJSUlk
ZW50UGFydChjKTsKKyAgICByZXR1cm4gdHlwZXNPZkxhdGluMUNoYXJhY3RlcnNbY10gPD0gQ2hh
cmFjdGVyTnVtYmVyOworfQorCitzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSWRlbnRQYXJ0
KFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGlzTGF0aW4xKGMpID8gaXNJZGVudFBhcnQoc3RhdGlj
X2Nhc3Q8TENoYXI+KGMpKSA6IGlzTm9uTGF0aW4xSWRlbnRQYXJ0KGMpOwogfQogCiBzdGF0aWMg
aW5saW5lIGludCBzaW5nbGVFc2NhcGUoaW50IGMpCkBAIC00OTksNyArNjQ3LDcgQEAgdGVtcGxh
dGUgPD4KIAogICAgIGNvbnN0IExDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFj
dGVyKCk7CiAgICAgCi0gICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpCisgICAgd2hp
bGUgKG1fY3VycmVudCAhPSAtMSAmJiBpc0lkZW50UGFydChzdGF0aWNfY2FzdDxMQ2hhcj4obV9j
dXJyZW50KSkpCiAgICAgICAgIHNoaWZ0KCk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZKG1fY3Vy
cmVudCA9PSAnXFwnKSkgewpAQCAtNTUwLDcgKzY5OCw3IEBAIHRlbXBsYXRlIDxib29sIHNob3Vs
ZENyZWF0ZUlkZW50aWZpZXI+IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VUNoYXI+
OjpwCiAKICAgICBVQ2hhciBvckFsbENoYXJzID0gMDsKICAgICAKLSAgICB3aGlsZSAoaXNJZGVu
dFBhcnQobV9jdXJyZW50KSkgeworICAgIHdoaWxlIChtX2N1cnJlbnQgIT0gLTEgJiYgaXNJZGVu
dFBhcnQoc3RhdGljX2Nhc3Q8VUNoYXI+KG1fY3VycmVudCkpKSB7CiAgICAgICAgIG9yQWxsQ2hh
cnMgfD0gbV9jdXJyZW50OwogICAgICAgICBzaGlmdCgpOwogICAgIH0KQEAgLTYwNCw3ICs3NTIs
NyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKU1Rva2VuVHlwZSBM
ZXhlcjxUPjo6cGFyc2VJZGVudGlmaWVyU2xvdwogICAgIGJvb2wgYnVmZmVyUmVxdWlyZWQgPSBm
YWxzZTsKIAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChMSUtFTFkoaXNJZGVudFBh
cnQobV9jdXJyZW50KSkpIHsKKyAgICAgICAgaWYgKExJS0VMWShtX2N1cnJlbnQgIT0gLTEgJiYg
aXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8VD4obV9jdXJyZW50KSkpKSB7CiAgICAgICAgICAgICBz
aGlmdCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTYyMiwxMCArNzcw
LDExIEBAIHRlbXBsYXRlIDxib29sIHNob3VsZENyZWF0ZUlkZW50aWZpZXI+IEpTVG9rZW5UeXBl
IExleGVyPFQ+OjpwYXJzZUlkZW50aWZpZXJTbG93CiAgICAgICAgIGludCBjaGFyYWN0ZXIgPSBn
ZXRVbmljb2RlQ2hhcmFjdGVyKCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShjaGFyYWN0ZXIgPT0g
LTEpKQogICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LOwotICAgICAgICBpZiAoVU5MSUtFTFko
bV9idWZmZXIxNi5zaXplKCkgPyAhaXNJZGVudFBhcnQoY2hhcmFjdGVyKSA6ICFpc0lkZW50U3Rh
cnQoY2hhcmFjdGVyKSkpCisgICAgICAgIFVDaGFyIHVjaGFyYWN0ZXIgPSBzdGF0aWNfY2FzdDxV
Q2hhcj4oY2hhcmFjdGVyKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1fYnVmZmVyMTYuc2l6ZSgp
ID8gIWlzSWRlbnRQYXJ0KHVjaGFyYWN0ZXIpIDogIWlzSWRlbnRTdGFydCh1Y2hhcmFjdGVyKSkp
CiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7CiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVJ
ZGVudGlmaWVyKQotICAgICAgICAgICAgcmVjb3JkMTYoY2hhcmFjdGVyKTsKKyAgICAgICAgICAg
IHJlY29yZDE2KHVjaGFyYWN0ZXIpOwogICAgICAgICBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
Q2hhcmFjdGVyKCk7CiAgICAgfQogCkBAIC03NTMsNyArOTAyLDcgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQnVpbGRTdHJpbmdzPiBib29sIExleGVyPFQ+OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKEpT
VG9rZW5EYXQKICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKQogICAgICAg
ICAgICAgICAgICAgICByZWNvcmQxNihlc2NhcGUpOwogICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKGlzTGluZVRlcm1pbmF0b3IobV9jdXJy
ZW50KSkpCisgICAgICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKGlzTGluZVRlcm1pbmF0b3Io
c3RhdGljX2Nhc3Q8VD4obV9jdXJyZW50KSkpKQogICAgICAgICAgICAgICAgIHNoaWZ0TGluZVRl
cm1pbmF0b3IoKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG1fY3VycmVudCA9PSAneCcpIHsKICAg
ICAgICAgICAgICAgICBzaGlmdCgpOwpAQCAtODI2LDcgKzk3NSw3IEBAIHRlbXBsYXRlIDxib29s
IHNob3VsZEJ1aWxkU3RyaW5ncz4gYm9vbCBMZXhlcjxUPjo6cGFyc2VTdHJpbmdTbG93Q2FzZShK
U1Rva2VuRGF0CiAgICAgICAgIC8vIGFzIHBvc3NpYmxlLCBhbmQgbGV0cyB0aHJvdWdoIGFsbCBj
b21tb24gQVNDSUkgY2hhcmFjdGVycy4KICAgICAgICAgaWYgKFVOTElLRUxZKCgoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fY3VycmVudCkgLSAweEUpICYgMHgyMDAwKSkpIHsKICAgICAgICAgICAg
IC8vIE5ldy1saW5lIG9yIGVuZCBvZiBpbnB1dCBpcyBub3QgYWxsb3dlZAotICAgICAgICAgICAg
aWYgKFVOTElLRUxZKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkgfHwgVU5MSUtFTFkobV9j
dXJyZW50ID09IC0xKSkgeworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAt
MSkgfHwgVU5MSUtFTFkoaXNMaW5lVGVybWluYXRvcihzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQp
KSkpIHsKICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVP
RiI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMTAw
Niw3ICsxMTU1LDcgQEAgQUxXQVlTX0lOTElORSBib29sIExleGVyPFQ+OjpwYXJzZU11bHRpbGlu
ZUNvbW1lbnQoKQogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09IC0xKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihtX2N1
cnJlbnQpKSB7CisgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKHN0YXRpY19jYXN0PFQ+KG1f
Y3VycmVudCkpKSB7CiAgICAgICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAgICAgICAg
ICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwogICAgICAgICB9IGVsc2UKQEAgLTEwMzUsNyArMTE4
NCw3IEBAIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXgoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwg
SlNUb2tlbkluZm8qIHRva2VuSW5mbywgdW5zaWduCiAgICAgbV90ZXJtaW5hdG9yID0gZmFsc2U7
CiAKIHN0YXJ0OgotICAgIHdoaWxlIChpc1doaXRlU3BhY2UobV9jdXJyZW50KSkKKyAgICB3aGls
ZSAobV9jdXJyZW50ICE9IC0xICYmIGlzV2hpdGVTcGFjZShzdGF0aWNfY2FzdDxUPihtX2N1cnJl
bnQpKSkKICAgICAgICAgc2hpZnQoKTsKIAogICAgIGludCBzdGFydE9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKQEAgLTEwNDYsMTEgKzExOTUsMTEgQEAgc3RhcnQ6CiAgICAgbV9kZWxpbWl0ZWQg
PSBmYWxzZTsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsKLSAgICBpZiAoTElLRUxZKGlzQVND
SUkobV9jdXJyZW50KSkpCi0gICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBl
Pih0eXBlc09mQVNDSUlDaGFyYWN0ZXJzW21fY3VycmVudF0pOwotICAgIGVsc2UgaWYgKGlzTm9u
QVNDSUlJZGVudFN0YXJ0KG1fY3VycmVudCkpCisgICAgaWYgKExJS0VMWShpc0xhdGluMShzdGF0
aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkpCisgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxDaGFy
YWN0ZXJUeXBlPih0eXBlc09mTGF0aW4xQ2hhcmFjdGVyc1ttX2N1cnJlbnRdKTsKKyAgICBlbHNl
IGlmIChpc05vbkxhdGluMUlkZW50U3RhcnQobV9jdXJyZW50KSkKICAgICAgICAgdHlwZSA9IENo
YXJhY3RlcklkZW50aWZpZXJTdGFydDsKLSAgICBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1f
Y3VycmVudCkpCisgICAgZWxzZSBpZiAoaXNMaW5lVGVybWluYXRvcihzdGF0aWNfY2FzdDxUPiht
X2N1cnJlbnQpKSkKICAgICAgICAgdHlwZSA9IENoYXJhY3RlckxpbmVUZXJtaW5hdG9yOwogICAg
IGVsc2UKICAgICAgICAgdHlwZSA9IENoYXJhY3RlckludmFsaWQ7CkBAIC0xMzM3LDcgKzE0ODYs
NyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICB9CiAKICAgICAgICAgLy8g
Tm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxpdGVyYWwsIGUu
Zy4gIjNpbiIgaXMgYmFkLgotICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KG1fY3Vy
cmVudCkpKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgIT0gLTEgJiYgaXNJZGVu
dFN0YXJ0KHN0YXRpY19jYXN0PFQ+KG1fY3VycmVudCkpKSkgewogICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiQXQgbGVhc3Qgb25lIGRpZ2l0IG11c3Qgb2NjdXIgYWZ0ZXIgYSBkZWNp
bWFsIHBvaW50IjsKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAg
LTEzNTcsNyArMTUwNiw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIHRv
a2VuID0gU1RSSU5HOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENoYXJhY3RlcklkZW50aWZp
ZXJTdGFydDoKLSAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQpKTsKKyAgICAg
ICAgQVNTRVJUKGlzSWRlbnRTdGFydChzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQpKSk7CiAgICAg
ICAgIC8vIEZhbGwgdGhyb3VnaCBpbnRvIENoYXJhY3RlckJhY2tTbGFzaC4KICAgICBjYXNlIENo
YXJhY3RlckJhY2tTbGFzaDoKICAgICAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9u
dEJ1aWxkS2V5d29yZHMpCkBAIC0xMzY2LDcgKzE1MTUsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1h
bFBvaW50OgogICAgICAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50aWZpZXI8dHJ1ZT4odG9rZW5E
YXRhLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBD
aGFyYWN0ZXJMaW5lVGVybWluYXRvcjoKLSAgICAgICAgQVNTRVJUKGlzTGluZVRlcm1pbmF0b3Io
bV9jdXJyZW50KSk7CisgICAgICAgIEFTU0VSVChpc0xpbmVUZXJtaW5hdG9yKHN0YXRpY19jYXN0
PFQ+KG1fY3VycmVudCkpKTsKICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgICAg
ICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKQEAg
LTEzODQsNyArMTUzMyw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgZ290byBy
ZXR1cm5Ub2tlbjsKIAogaW5TaW5nbGVMaW5lQ29tbWVudDoKLSAgICB3aGlsZSAoIWlzTGluZVRl
cm1pbmF0b3IobV9jdXJyZW50KSkgeworICAgIHdoaWxlICghaXNMaW5lVGVybWluYXRvcihzdGF0
aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50
ID09IC0xKSkKICAgICAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAgICAgIHNoaWZ0KCk7CkBA
IC0xNDMyLDcgKzE1ODEsNyBAQCBib29sIExleGVyPFQ+OjpzY2FuUmVnRXhwKGNvbnN0IElkZW50
aWZpZXIqJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyKiYgZmxhZ3MsCiAgICAgd2hpbGUgKHRy
dWUpIHsKICAgICAgICAgaW50IGN1cnJlbnQgPSBtX2N1cnJlbnQ7CiAKLSAgICAgICAgaWYgKGlz
TGluZVRlcm1pbmF0b3IoY3VycmVudCkgfHwgY3VycmVudCA9PSAtMSkgeworICAgICAgICBpZiAo
aXNMaW5lVGVybWluYXRvcihzdGF0aWNfY2FzdDxUPihjdXJyZW50KSkgfHwgY3VycmVudCA9PSAt
MSkgewogICAgICAgICAgICAgbV9idWZmZXIxNi5yZXNpemUoMCk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTE0NjUsNyArMTYxNCw3IEBAIGJvb2wgTGV4ZXI8VD46
OnNjYW5SZWdFeHAoY29uc3QgSWRlbnRpZmllciomIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIq
JiBmbGFncywKICAgICBwYXR0ZXJuID0gbWFrZUlkZW50aWZpZXIobV9idWZmZXIxNi5kYXRhKCks
IG1fYnVmZmVyMTYuc2l6ZSgpKTsKICAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKIAotICAgIHdo
aWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKSB7CisgICAgd2hpbGUgKG1fY3VycmVudCAhPSAt
MSAmJiBpc0lkZW50UGFydChzdGF0aWNfY2FzdDxUPihtX2N1cnJlbnQpKSkgewogICAgICAgICBy
ZWNvcmQxNihtX2N1cnJlbnQpOwogICAgICAgICBzaGlmdCgpOwogICAgIH0KQEAgLTE0ODUsNyAr
MTYzNCw3IEBAIGJvb2wgTGV4ZXI8VD46OnNraXBSZWdFeHAoKQogICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgIGludCBjdXJyZW50ID0gbV9jdXJyZW50OwogCi0gICAgICAgIGlmIChpc0xpbmVU
ZXJtaW5hdG9yKGN1cnJlbnQpIHx8IGN1cnJlbnQgPT0gLTEpCisgICAgICAgIGlmIChpc0xpbmVU
ZXJtaW5hdG9yKHN0YXRpY19jYXN0PFQ+KGN1cnJlbnQpKSB8fCBjdXJyZW50ID09IC0xKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHNoaWZ0KCk7CkBAIC0xNTExLDcgKzE2
NjAsNyBAQCBib29sIExleGVyPFQ+Ojpza2lwUmVnRXhwKCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKQorICAgIHdoaWxlIChtX2N1cnJlbnQg
IT0gLTEgJiYgaXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8VD4obV9jdXJyZW50KSkpCiAgICAgICAg
IHNoaWZ0KCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaAppbmRleCA2ZmUwYzlhMWMyOTZiODczZjdjZjRhMjQ1ZmUxY2NiN2MyMTlkODE1Li44MTU1
OGZhOTY4MGY5MDcxYTc2NGQ0NDVjMGFjZjc4N2NlYTkzODEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oCkBAIC03OSw4ICs3OSw4IEBAIHB1YmxpYzoKICAgICB+TGV4ZXIoKTsK
IAogICAgIC8vIENoYXJhY3RlciBtYW5pcHVsYXRpb24gZnVuY3Rpb25zLgotICAgIHN0YXRpYyBi
b29sIGlzV2hpdGVTcGFjZShpbnQgY2hhcmFjdGVyKTsKLSAgICBzdGF0aWMgYm9vbCBpc0xpbmVU
ZXJtaW5hdG9yKGludCBjaGFyYWN0ZXIpOworICAgIHN0YXRpYyBib29sIGlzV2hpdGVTcGFjZShU
IGNoYXJhY3Rlcik7CisgICAgc3RhdGljIGJvb2wgaXNMaW5lVGVybWluYXRvcihUIGNoYXJhY3Rl
cik7CiAgICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgY29udmVydEhleChpbnQgYzEsIGludCBjMik7
CiAgICAgc3RhdGljIFVDaGFyIGNvbnZlcnRVbmljb2RlKGludCBjMSwgaW50IGMyLCBpbnQgYzMs
IGludCBjNCk7CiAKQEAgLTE5MSwxNCArMTkxLDI2IEBAIHByaXZhdGU6CiAgICAgSlNHbG9iYWxE
YXRhKiBtX2dsb2JhbERhdGE7CiB9OwogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZU19J
TkxJTkUgYm9vbCBMZXhlcjxUPjo6aXNXaGl0ZVNwYWNlKGludCBjaCkKK3RlbXBsYXRlIDw+CitB
TFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI8TENoYXI+Ojppc1doaXRlU3BhY2UoTENoYXIgY2gpCiB7
Ci0gICAgcmV0dXJuIGlzQVNDSUkoY2gpID8gKGNoID09ICcgJyB8fCBjaCA9PSAnXHQnIHx8IGNo
ID09IDB4QiB8fCBjaCA9PSAweEMpIDogKFdURjo6VW5pY29kZTo6aXNTZXBhcmF0b3JTcGFjZShj
aCkgfHwgY2ggPT0gMHhGRUZGKTsKKyAgICByZXR1cm4gY2ggPT0gJyAnIHx8IGNoID09ICdcdCcg
fHwgY2ggPT0gMHhCIHx8IGNoID09IDB4QyB8fCBjaCA9PSAweEEwOwogfQogCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KLUFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjxUPjo6aXNMaW5lVGVybWluYXRv
cihpbnQgY2gpCit0ZW1wbGF0ZSA8PgorQUxXQVlTX0lOTElORSBib29sIExleGVyPFVDaGFyPjo6
aXNXaGl0ZVNwYWNlKFVDaGFyIGNoKQoreworICAgIHJldHVybiAoY2ggPCAyNTYpID8gTGV4ZXI8
TENoYXI+Ojppc1doaXRlU3BhY2Uoc3RhdGljX2Nhc3Q8TENoYXI+KGNoKSkgOiAoV1RGOjpVbmlj
b2RlOjppc1NlcGFyYXRvclNwYWNlKGNoKSB8fCBjaCA9PSAweEZFRkYpOworfQorCit0ZW1wbGF0
ZSA8PgorQUxXQVlTX0lOTElORSBib29sIExleGVyPExDaGFyPjo6aXNMaW5lVGVybWluYXRvcihM
Q2hhciBjaCkKK3sKKyAgICByZXR1cm4gY2ggPT0gJ1xyJyB8fCBjaCA9PSAnXG4nOworfQorCit0
ZW1wbGF0ZSA8PgorQUxXQVlTX0lOTElORSBib29sIExleGVyPFVDaGFyPjo6aXNMaW5lVGVybWlu
YXRvcihVQ2hhciBjaCkKIHsKICAgICByZXR1cm4gY2ggPT0gJ1xyJyB8fCBjaCA9PSAnXG4nIHx8
IChjaCAmIH4xKSA9PSAweDIwMjg7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>