<?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>233891</bug_id>
          
          <creation_ts>2021-12-06 12:27:39 -0800</creation_ts>
          <short_desc>Remove unneeded virtual allocator methods from Subspace.</short_desc>
          <delta_ts>2021-12-06 14:52:48 -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>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>232849</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1820718</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-06 12:27:39 -0800</bug_when>
    <thetext>Since the virtual allocate() and allocateFor() methods are now deleted, we can also rename the inline allocateNonVirtual() and allocatorForNonVirtual() methods to simply allocate() and allocateFor().  Similarly, rename allocatorForNonVirtualConcurrently() to allocatorForConcurrently().

There are 2 places that still invokes the non-inline version of CompleteSubspace::allocatorFor().  For this reason, we introduce a CompleteSubsace::allocatorForNonInline() to keep the linkage the same.  There&apos;s a chance that the compiler/linker may already inline the method in 1 or both of these places, but we&apos;ll offer allocatorForNonInline() to keep the code expressing the same thing and let the compiler/linker decide whether to inline it or not just as before.

This is purely a re-factoring patch.  There are no behavior changes, except for the removal of those 2 entries from the vtbls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820719</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-06 12:28:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/86117970&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820720</commentid>
    <comment_count>2</comment_count>
      <attachid>446068</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-06 12:32:16 -0800</bug_when>
    <thetext>Created attachment 446068
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820725</commentid>
    <comment_count>3</comment_count>
      <attachid>446068</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-12-06 12:43:14 -0800</bug_when>
    <thetext>Comment on attachment 446068
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1820784</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-12-06 14:52:48 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r286572: &lt;http://trac.webkit.org/r286572&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446068</attachid>
            <date>2021-12-06 12:32:16 -0800</date>
            <delta_ts>2021-12-06 13:27:55 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-233891.patch</filename>
            <type>text/plain</type>
            <size>39193</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2NTYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBA
CisyMDIxLTEyLTA2ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZW1vdmUgdW5uZWVkZWQgdmlydHVhbCBhbGxvY2F0b3IgbWV0aG9kcyBmcm9tIFN1YnNwYWNlLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzODkxCisg
ICAgICAgIHJkYXI6Ly84NjExNzk3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFNpbmNlIHRoZSB2aXJ0dWFsIGFsbG9jYXRlKCkgYW5kIGFsbG9jYXRl
Rm9yKCkgbWV0aG9kcyBhcmUgbm93IGRlbGV0ZWQsIHdlIGNhbgorICAgICAgICBhbHNvIHJlbmFt
ZSB0aGUgaW5saW5lIGFsbG9jYXRlTm9uVmlydHVhbCgpIGFuZCBhbGxvY2F0b3JGb3JOb25WaXJ0
dWFsKCkgbWV0aG9kcworICAgICAgICB0byBzaW1wbHkgYWxsb2NhdGUoKSBhbmQgYWxsb2NhdGVG
b3IoKS4gIFNpbWlsYXJseSwgcmVuYW1lCisgICAgICAgIGFsbG9jYXRvckZvck5vblZpcnR1YWxD
b25jdXJyZW50bHkoKSB0byBhbGxvY2F0b3JGb3JDb25jdXJyZW50bHkoKS4KKworICAgICAgICBU
aGVyZSBhcmUgMiBwbGFjZXMgdGhhdCBzdGlsbCBpbnZva2VzIHRoZSBub24taW5saW5lIHZlcnNp
b24gb2YKKyAgICAgICAgQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdG9yRm9yKCkuICBGb3IgdGhp
cyByZWFzb24sIHdlIGludHJvZHVjZSBhCisgICAgICAgIENvbXBsZXRlU3Vic2FjZTo6YWxsb2Nh
dG9yRm9yTm9uSW5saW5lKCkgdG8ga2VlcCB0aGUgbGlua2FnZSB0aGUgc2FtZS4gIFRoZXJlJ3Mg
YQorICAgICAgICBjaGFuY2UgdGhhdCB0aGUgY29tcGlsZXIvbGlua2VyIG1heSBhbHJlYWR5IGlu
bGluZSB0aGUgbWV0aG9kIGluIDEgb3IgYm90aCBvZgorICAgICAgICB0aGVzZSBwbGFjZXMsIGJ1
dCB3ZSdsbCBvZmZlciBhbGxvY2F0b3JGb3JOb25JbmxpbmUoKSB0byBrZWVwIHRoZSBjb2RlIGV4
cHJlc3NpbmcKKyAgICAgICAgdGhlIHNhbWUgdGhpbmcgYW5kIGxldCB0aGUgY29tcGlsZXIvbGlu
a2VyIGRlY2lkZSB3aGV0aGVyIHRvIGlubGluZSBpdCBvciBub3QganVzdAorICAgICAgICBhcyBi
ZWZvcmUuCisKKyAgICAgICAgVGhpcyBpcyBwdXJlbHkgYSByZS1mYWN0b3JpbmcgcGF0Y2guICBU
aGVyZSBhcmUgbm8gYmVoYXZpb3IgY2hhbmdlcywgZXhjZXB0IGZvcgorICAgICAgICB0aGUgcmVt
b3ZhbCBvZiB0aG9zZSAyIGVudHJpZXMgZnJvbSB0aGUgdnRibHMuCisKKyAgICAgICAgKiBieXRl
Y29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6Z2VuZXJhdGVJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPERlcml2ZWQ+Ojpp
bml0aWFsaXplUHJvZmlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlUmF3T2JqZWN0
KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1ha2VSb3BlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNvbXBhcmVTdHJpY3RFcSk6CisgICAgICAgICog
aGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcDoKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFj
ZTo6YWxsb2NhdG9yRm9yTm9uSW5saW5lKToKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFj
ZTo6dHJ5QWxsb2NhdGVTbG93KToKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxs
b2NhdG9yRm9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFjZTo6YWxs
b2NhdGUpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvQ29tcGxldGVTdWJzcGFjZS5oOgorICAg
ICAgICAoSlNDOjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3IpOgorICAgICAgICAoSlND
OjpDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3JOb25WaXJ0dWFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBoZWFwL0NvbXBsZXRlU3Vic3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNv
bXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRlKToKKyAgICAgICAgKEpTQzo6Q29tcGxldGVTdWJzcGFj
ZTo6YWxsb2NhdGVOb25WaXJ0dWFsKTogRGVsZXRlZC4KKyAgICAgICAgKiBoZWFwL0lzb1N1YnNw
YWNlLmNwcDoKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjphbGxvY2F0ZSk6IERlbGV0ZWQuCisgICAg
ICAgICogaGVhcC9Jc29TdWJzcGFjZS5oOgorICAgICAgICAoSlNDOjpJc29TdWJzcGFjZTo6YWxs
b2NhdG9yRm9yKToKKyAgICAgICAgKEpTQzo6SXNvU3Vic3BhY2U6OmFsbG9jYXRvckZvck5vblZp
cnR1YWwpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6Oklzb1N1YnNwYWNlOjphbGxvY2F0ZSk6CisgICAgICAgIChKU0M6Oklzb1N1
YnNwYWNlOjphbGxvY2F0ZU5vblZpcnR1YWwpOiBEZWxldGVkLgorICAgICAgICAqIGhlYXAvU3Vi
c3BhY2UuaDoKKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6ZW1pdEFsbG9jYXRlSlNPYmplY3RXaXRoS25vd25TaXplKToKKyAg
ICAgICAgKiBydW50aW1lL0J1dHRlcmZseUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6QnV0dGVy
Zmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QnV0dGVyZmx5Ojpj
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKEpTQzo6QnV0dGVyZmx5Ojp0cnlDcmVhdGUp
OgorICAgICAgICAoSlNDOjpCdXR0ZXJmbHk6Omdyb3dBcnJheVJpZ2h0KToKKyAgICAgICAgKEpT
Qzo6QnV0dGVyZmx5OjpyZWFsbG9jQXJyYXlSaWdodElmUG9zc2libGUpOgorICAgICAgICAqIHJ1
bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6RGlyZWN0QXJndW1lbnRz
OjpvdmVycmlkZVRoaW5ncyk6CisgICAgICAgICogcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+Ojppbml0TW9kaWZp
ZWRBcmd1bWVudHNEZXNjcmlwdG9yKToKKyAgICAgICAgKiBydW50aW1lL0hhc2hNYXBJbXBsLmg6
CisgICAgICAgIChKU0M6Okhhc2hNYXBCdWZmZXI6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFs
aXplZFJlc3RyaWN0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAo
SlNDOjpKU0FycmF5Ojp0cnlDcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwOgorICAgICAgICAoSlNDOjpKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9u
Q29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCk6CisgICAgICAgICogcnVudGltZS9KU0JpZ0lu
dC5jcHA6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpjcmVhdGVXaXRoTGVuZ3RoKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6YWxsb2NhdG9yRm9y
Q29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6dHJ5QWxsb2NhdGVDZWxsSGVscGVyKToKKyAg
ICAgICAgKEpTQzo6YWxsb2NhdG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseSk6IERlbGV0ZWQu
CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9TY29wZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpTY29wZWRBcmd1bWVudHM6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
Y3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlKToKKwogMjAyMS0xMi0w
NiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3VwcG9ydCBDYXNjYWRlIExheWVycyBpbiB0aGUgU3R5bGVzIHNpZGViYXIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlz
aW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBBY2Nlc3NDYXNl
OjpnZW5lcmF0ZUltcGwoQWNjZXNzR2VuZQogICAgICAgICAgICAgc2l6ZV90IG5ld1NpemUgPSBu
ZXdTdHJ1Y3R1cmUoKS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSAqIHNpemVvZihKU1ZhbHVlKTsKIAog
ICAgICAgICAgICAgaWYgKGFsbG9jYXRpbmdJbmxpbmUpIHsKLSAgICAgICAgICAgICAgICBBbGxv
Y2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxv
Y2F0b3JGb3IobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwor
ICAgICAgICAgICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VB
dXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRvckZvck5vbklubGluZShuZXdTaXplLCBBbGxvY2F0b3JG
b3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CiAKICAgICAgICAgICAgICAgICBqaXQuZW1pdEFs
bG9jYXRlKHNjcmF0Y2hHUFIsIEpJVEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2NhdG9yKSwgc2Ny
YXRjaEdQUjIsIHNjcmF0Y2hHUFIzLCBzbG93UGF0aCk7CiAgICAgICAgICAgICAgICAgaml0LmFk
ZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihuZXdTaXplICsgc2l6ZW9mKEluZGV4aW5n
SGVhZGVyKSksIHNjcmF0Y2hHUFIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMu
aAkocmV2aXNpb24gMjg2NTU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09i
amVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTksNyAr
OTksNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpCiAgICAgQVNT
RVJUKGlubGluZUNhcGFjaXR5IDw9IEpTRmluYWxPYmplY3Q6Om1heElubGluZUNhcGFjaXR5KCkp
OwogCiAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6YWxsb2NhdGlv
blNpemUoaW5saW5lQ2FwYWNpdHkpOwotICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSBzdWJzcGFj
ZUZvcjxKU0ZpbmFsT2JqZWN0Pih2bSktPmFsbG9jYXRvckZvck5vblZpcnR1YWwoYWxsb2NhdGlv
blNpemUsIEFsbG9jYXRvckZvck1vZGU6OkVuc3VyZUFsbG9jYXRvcik7CisgICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IHN1YnNwYWNlRm9yPEpTRmluYWxPYmplY3Q+KHZtKS0+YWxsb2NhdG9yRm9y
KGFsbG9jYXRpb25TaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpFbnN1cmVBbGxvY2F0b3IpOwogCiAg
ICAgLy8gVGFrZSBhZHZhbnRhZ2Ugb2YgZXh0cmEgaW5saW5lIGNhcGFjaXR5IGF2YWlsYWJsZSBp
biB0aGUgc2l6ZSBjbGFzcy4KICAgICBpZiAoYWxsb2NhdG9yKSB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjg2
NTU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgpOwogICAgIGlmIChz
aXplKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0uanNWYWx1ZUdpZ2Fj
YWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIEFsbG9jYXRv
ckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkgeworICAgICAgICBpZiAoQWxsb2NhdG9yIGFs
bG9jYXRvciA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9y
KHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkgewogICAgICAgICAg
ICAgbV9qaXQuZW1pdEFsbG9jYXRlKHN0b3JhZ2VHUFIsIEpJVEFsbG9jYXRvcjo6Y29uc3RhbnQo
YWxsb2NhdG9yKSwgc2NyYXRjaEdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIG1faml0LmFkZFB0cigKQEAgLTEzNSw5ICsxMzUsOSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVSYXdPYmplCiAKICAgICBBbGxvY2F0b3IgYWxs
b2NhdG9yOwogICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEpTVHlwZTo6
QXJyYXlUeXBlKQotICAgICAgICBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29u
Y3VycmVudGx5PEpTQXJyYXk+KHZtLCBKU0FycmF5OjphbGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBh
Y2l0eSksIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAgYWxs
b2NhdG9yID0gYWxsb2NhdG9yRm9yQ29uY3VycmVudGx5PEpTQXJyYXk+KHZtLCBKU0FycmF5Ojph
bGxvY2F0aW9uU2l6ZShpbmxpbmVDYXBhY2l0eSksIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRv
cklmRXhpc3RzKTsKICAgICBlbHNlCi0gICAgICAgIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5v
blZpcnR1YWxDb25jdXJyZW50bHk8SlNGaW5hbE9iamVjdD4odm0sIEpTRmluYWxPYmplY3Q6OmFs
bG9jYXRpb25TaXplKGlubGluZUNhcGFjaXR5KSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9y
SWZFeGlzdHMpOworICAgICAgICBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JDb25jdXJyZW50bHk8
SlNGaW5hbE9iamVjdD4odm0sIEpTRmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKGlubGluZUNh
cGFjaXR5KSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgIGlmIChh
bGxvY2F0b3IpIHsKICAgICAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBKSVRB
bGxvY2F0b3I6OmNvbnN0YW50KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW1QdHIo
c3RydWN0dXJlKSwgc3RvcmFnZUdQUiwgc2NyYXRjaDJHUFIsIHNsb3dDYXNlcyk7CiAgICAgICAg
IG1faml0LmVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRHUFIsIHN0cnVjdHVyZS0+
aW5saW5lQ2FwYWNpdHkoKSk7CkBAIC0xMDczNyw3ICsxMDczNyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVByb3AKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IGluaXRp
YWxPdXRPZkxpbmVDYXBhY2l0eSAqIHNpemVvZihKU1ZhbHVlKTsKIAotICAgIEFsbG9jYXRvciBh
bGxvY2F0b3IgPSB2bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9y
Rm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7
CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKS5hbGxvY2F0b3JGb3Ioc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZF
eGlzdHMpOwogCiAgICAgaWYgKCFhbGxvY2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2
aW91cy0+Y291bGRIYXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTEwNzgxLDcgKzEwNzgxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVJlYWxsb2NhdGVQcgogICAgIHNpemVfdCBu
ZXdTaXplID0gb2xkU2l6ZSAqIG91dE9mTGluZUdyb3d0aEZhY3RvcjsKICAgICBBU1NFUlQobmV3
U2l6ZSA9PSBub2RlLT50cmFuc2l0aW9uKCktPm5leHQtPm91dE9mTGluZUNhcGFjaXR5KCkgKiBz
aXplb2YoSlNWYWx1ZSkpOwogICAgIAotICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2bSgpLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVhbChuZXdT
aXplLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IHZtKCkuanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0
b3JGb3IobmV3U2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogCiAg
ICAgaWYgKCFhbGxvY2F0b3IgfHwgbm9kZS0+dHJhbnNpdGlvbigpLT5wcmV2aW91cy0+Y291bGRI
YXZlSW5kZXhpbmdIZWFkZXIoKSkgewogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKQEAgLTE0OTExLDcgKzE0OTExLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU5ld09iamVjdChObwogCiAgICAgUmVnaXN0ZXJlZFN0cnVjdHVy
ZSBzdHJ1Y3R1cmUgPSBub2RlLT5zdHJ1Y3R1cmUoKTsKICAgICBzaXplX3QgYWxsb2NhdGlvblNp
emUgPSBKU0ZpbmFsT2JqZWN0OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFj
aXR5KCkpOwotICAgIEFsbG9jYXRvciBhbGxvY2F0b3JWYWx1ZSA9IGFsbG9jYXRvckZvck5vblZp
cnR1YWxDb25jdXJyZW50bHk8SlNGaW5hbE9iamVjdD4odm0oKSwgYWxsb2NhdGlvblNpemUsIEFs
bG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2Nh
dG9yVmFsdWUgPSBhbGxvY2F0b3JGb3JDb25jdXJyZW50bHk8SlNGaW5hbE9iamVjdD4odm0oKSwg
YWxsb2NhdGlvblNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKICAg
ICBpZiAoIWFsbG9jYXRvclZhbHVlKQogICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuanVt
cCgpKTsKICAgICBlbHNlIHsKQEAgLTE2MDAzLDcgKzE2MDAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU1ha2VSb3BlKE5vZAogICAgIEdQUlJlZyBzY3JhdGNoMkdQUiA9IHNjcmF0
Y2gyLmdwcigpOwogCiAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzbG93UGF0aDsKLSAgICBB
bGxvY2F0b3IgYWxsb2NhdG9yVmFsdWUgPSBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsQ29uY3VycmVu
dGx5PEpTUm9wZVN0cmluZz4odm0oKSwgc2l6ZW9mKEpTUm9wZVN0cmluZyksIEFsbG9jYXRvckZv
ck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9yVmFsdWUg
PSBhbGxvY2F0b3JGb3JDb25jdXJyZW50bHk8SlNSb3BlU3RyaW5nPih2bSgpLCBzaXplb2YoSlNS
b3BlU3RyaW5nKSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgIGVt
aXRBbGxvY2F0ZUpTQ2VsbChyZXN1bHRHUFIsIEpJVEFsbG9jYXRvcjo6Y29uc3RhbnQoYWxsb2Nh
dG9yVmFsdWUpLCBhbGxvY2F0b3JHUFIsIFRydXN0ZWRJbW1QdHIobV9qaXQuZ3JhcGgoKS5yZWdp
c3RlclN0cnVjdHVyZSh2bSgpLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSkpLCBzY3JhdGNoR1BSLCBz
bG93UGF0aCk7CiAKICAgICAvLyBUaGlzIHB1dHMgbnVsbHB0ciBmb3IgdGhlIGZpcnN0IGZpYmVy
LiBJdCBtYWtlcyB2aXNpdENoaWxkcmVuIHNhZmUgZXZlbiBpZiB0aGlzIEpTUm9wZVN0cmluZyBp
cyBkaXNjYXJkZWQgZHVlIHRvIHRoZSBzcGVjdWxhdGlvbiBmYWlsdXJlIGluIHRoZSBmb2xsb3dp
bmcgcGF0aC4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHJldmlzaW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc0Nyw3ICs4NzQ3LDcgQEAg
SUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICBMQmFzaWNCbG9jayBzbG93UGF0aCA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9IG1f
b3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgIAotICAgICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxKU1JvcGVTdHJpbmc+KHZtKCksIHNp
emVvZihKU1JvcGVTdHJpbmcpLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7
CisgICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JDb25jdXJyZW50bHk8
SlNSb3BlU3RyaW5nPih2bSgpLCBzaXplb2YoSlNSb3BlU3RyaW5nKSwgQWxsb2NhdG9yRm9yTW9k
ZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgICAgICAKICAgICAgICAgTFZhbHVlIHJlc3VsdCA9
IGFsbG9jYXRlQ2VsbCgKICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50UHRyKGFsbG9jYXRvci5s
b2NhbEFsbG9jYXRvcigpKSwgdm0oKS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCksIHNsb3dQYXRoKTsK
QEAgLTEzODgxLDkgKzEzODgxLDkgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSB8fCBoYXNJbmRleGVkUHJv
cGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkgewogICAgICAgICAgICAgICAgIEFs
bG9jYXRvciBjZWxsQWxsb2NhdG9yOwogICAgICAgICAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkudHlwZSgpID09IEpTVHlwZTo6QXJyYXlUeXBlKQotICAgICAgICAgICAgICAgICAg
ICBjZWxsQWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxKU0Fy
cmF5Pih2bSgpLCBKU0FycmF5OjphbGxvY2F0aW9uU2l6ZShzdHJ1Y3R1cmUtPmlubGluZUNhcGFj
aXR5KCkpLCBBbGxvY2F0b3JGb3JNb2RlOjpBbGxvY2F0b3JJZkV4aXN0cyk7CisgICAgICAgICAg
ICAgICAgICAgIGNlbGxBbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JDb25jdXJyZW50bHk8SlNBcnJh
eT4odm0oKSwgSlNBcnJheTo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0
eSgpKSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2VsbEFsbG9jYXRvciA9IGFsbG9jYXRvckZv
ck5vblZpcnR1YWxDb25jdXJyZW50bHk8SlNGaW5hbE9iamVjdD4odm0oKSwgSlNGaW5hbE9iamVj
dDo6YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpKSwgQWxsb2NhdG9y
Rm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAgICAgICAgICAgICAgICBjZWxsQWxs
b2NhdG9yID0gYWxsb2NhdG9yRm9yQ29uY3VycmVudGx5PEpTRmluYWxPYmplY3Q+KHZtKCksIEpT
RmluYWxPYmplY3Q6OmFsbG9jYXRpb25TaXplKHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHkoKSks
IEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKIAogICAgICAgICAgICAgICAg
IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSBoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUt
PmluZGV4aW5nVHlwZSgpKTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleGluZ0hlYWRl
clNpemUgPSAwOwpAQCAtMTUwMTcsNyArMTUwMTcsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1Nf
RU5ECiAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuaW5zZXJ0TmV3QmxvY2tz
QmVmb3JlKHNsb3dQYXRoKTsKIAogICAgICAgICBzaXplX3Qgc2l6ZUluQnl0ZXMgPSBzaXplSW5W
YWx1ZXMgKiBzaXplb2YoSlNWYWx1ZSk7Ci0gICAgICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSB2
bSgpLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdG9yRm9yTm9uVmlydHVh
bChzaXplSW5CeXRlcywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAg
ICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gdm0oKS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRvckZvcihzaXplSW5CeXRlcywgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2Nh
dG9ySWZFeGlzdHMpOwogICAgICAgICBMVmFsdWUgc3RhcnRPZlN0b3JhZ2UgPSBhbGxvY2F0ZUhl
YXBDZWxsKAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yLmxvY2FsQWxs
b2NhdG9yKCkpLCBzbG93UGF0aCk7CiAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZhc3RCdXR0ZXJm
bHkgPSBtX291dC5hbmNob3IoCkBAIC0xNjg1Miw3ICsxNjg1Miw3IEBAIElHTk9SRV9DTEFOR19X
QVJOSU5HU19FTkQKICAgICBMVmFsdWUgYWxsb2NhdGVPYmplY3QoCiAgICAgICAgIHNpemVfdCBz
aXplLCBTdHJ1Y3R1cmVUeXBlIHN0cnVjdHVyZSwgTFZhbHVlIGJ1dHRlcmZseSwgTEJhc2ljQmxv
Y2sgc2xvd1BhdGgpCiAgICAgewotICAgICAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2Nh
dG9yRm9yTm9uVmlydHVhbENvbmN1cnJlbnRseTxDbGFzc1R5cGU+KHZtKCksIHNpemUsIEFsbG9j
YXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAgQWxsb2NhdG9yIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvckNvbmN1cnJlbnRseTxDbGFzc1R5cGU+KHZtKCksIHNpemUsIEFs
bG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKICAgICAgICAgcmV0dXJuIGFsbG9j
YXRlT2JqZWN0KAogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnRQdHIoYWxsb2NhdG9yLmxvY2Fs
QWxsb2NhdG9yKCkpLCBzdHJ1Y3R1cmUsIGJ1dHRlcmZseSwgc2xvd1BhdGgpOwogICAgIH0KQEAg
LTE2ODczLDcgKzE2ODczLDcgQEAgSUdOT1JFX0NMQU5HX1dBUk5JTkdTX0VORAogICAgICAgICAg
ICAgQ29tcGxldGVTdWJzcGFjZSogYWN0dWFsU3Vic3BhY2UgPSBiaXR3aXNlX2Nhc3Q8Q29tcGxl
dGVTdWJzcGFjZSo+KHN1YnNwYWNlLT5hc0ludFB0cigpKTsKICAgICAgICAgICAgIHNpemVfdCBh
Y3R1YWxTaXplID0gc2l6ZS0+YXNJbnRQdHIoKTsKIAotICAgICAgICAgICAgQWxsb2NhdG9yIGFj
dHVhbEFsbG9jYXRvciA9IGFjdHVhbFN1YnNwYWNlLT5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKGFj
dHVhbFNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAg
ICAgIEFsbG9jYXRvciBhY3R1YWxBbGxvY2F0b3IgPSBhY3R1YWxTdWJzcGFjZS0+YWxsb2NhdG9y
Rm9yKGFjdHVhbFNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKICAg
ICAgICAgICAgIGlmICghYWN0dWFsQWxsb2NhdG9yKSB7CiAgICAgICAgICAgICAgICAgTEJhc2lj
QmxvY2sgY29udGludWF0aW9uID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgICAgICAgICBM
QmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0Lmluc2VydE5ld0Jsb2Nrc0JlZm9yZShjb250aW51
YXRpb24pOwpAQCAtMTY5MzUsNyArMTY5MzUsNyBAQCBJR05PUkVfQ0xBTkdfV0FSTklOR1NfRU5E
CiAgICAgTFZhbHVlIGFsbG9jYXRlT2JqZWN0KFJlZ2lzdGVyZWRTdHJ1Y3R1cmUgc3RydWN0dXJl
KQogICAgIHsKICAgICAgICAgc2l6ZV90IGFsbG9jYXRpb25TaXplID0gSlNGaW5hbE9iamVjdDo6
YWxsb2NhdGlvblNpemUoc3RydWN0dXJlLmdldCgpLT5pbmxpbmVDYXBhY2l0eSgpKTsKLSAgICAg
ICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50
bHk8SlNGaW5hbE9iamVjdD4odm0oKSwgYWxsb2NhdGlvblNpemUsIEFsbG9jYXRvckZvck1vZGU6
OkFsbG9jYXRvcklmRXhpc3RzKTsKKyAgICAgICAgQWxsb2NhdG9yIGFsbG9jYXRvciA9IGFsbG9j
YXRvckZvckNvbmN1cnJlbnRseTxKU0ZpbmFsT2JqZWN0Pih2bSgpLCBhbGxvY2F0aW9uU2l6ZSwg
QWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOwogICAgICAgICAKICAgICAgICAg
Ly8gRklYTUU6IElmIHRoZSBhbGxvY2F0b3IgaXMgbnVsbCwgd2UgY291bGQgc2ltcGx5IGVtaXQg
YSBub3JtYWwgQyBjYWxsIHRvIHRoZSBhbGxvY2F0b3IKICAgICAgICAgLy8gaW5zdGVhZCBvZiBw
dXR0aW5nIGl0IG9uIHRoZSBzbG93IHBhdGguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlLmNwcAkocmV2aXNpb24gMjg2NTU4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDE0ICs0NSw5IEBAIENvbXBsZXRlU3Vic3BhY2U6On5Db21wbGV0ZVN1YnNwYWNl
KCkKIHsKIH0KIAotQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRvckZvcihzaXpl
X3Qgc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZSBtb2RlKQorQWxsb2NhdG9yIENvbXBsZXRlU3Vic3Bh
Y2U6OmFsbG9jYXRvckZvck5vbklubGluZShzaXplX3Qgc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZSBt
b2RlKQogewotICAgIHJldHVybiBhbGxvY2F0b3JGb3JOb25WaXJ0dWFsKHNpemUsIG1vZGUpOwot
fQotCi12b2lkKiBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0ZShWTSYgdm0sIHNpemVfdCBzaXpl
LCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGUgZmFpbHVyZU1vZGUpCi17Ci0gICAgcmV0dXJuIGFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6
ZSwgZGVmZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7CisgICAgcmV0dXJuIGFsbG9jYXRvckZv
cihzaXplLCBtb2RlKTsKIH0KIAogQWxsb2NhdG9yIENvbXBsZXRlU3Vic3BhY2U6OmFsbG9jYXRv
ckZvclNsb3coc2l6ZV90IHNpemUpCkBAIC0xMjMsOCArMTE4LDggQEAgdm9pZCogQ29tcGxldGVT
dWJzcGFjZTo6dHJ5QWxsb2NhdGVTbG93KAogICAgICAgICB2bS52ZXJpZnlDYW5HQygpOwogCiAg
ICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKLSAgICAKLSAgICBpZiAoQWxsb2NhdG9yIGFsbG9j
YXRvciA9IGFsbG9jYXRvckZvcihzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpFbnN1cmVBbGxvY2F0
b3IpKQorCisgICAgaWYgKEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3JOb25Jbmxp
bmUoc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6RW5zdXJlQWxsb2NhdG9yKSkKICAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRp
b25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgCiAgICAgaWYgKHNpemUgPD0gT3B0aW9u
czo6cHJlY2lzZUFsbG9jYXRpb25DdXRvZmYoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQ29tcGxldGVTdWJzcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0NvbXBsZXRlU3Vic3BhY2UuaAkocmV2aXNpb24gMjg2NTU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSwxMSArMzksMTAgQEAgcHVibGljOgogICAgIAogICAgIC8vIEZJWE1FOiBDdXJyZW50bHkg
c3Vic3BhY2VzIHNwZWFrIG9mIEJsb2NrRGlyZWN0b3JpZXMgYXMgImFsbG9jYXRvcnMiLCBidXQg
dGhhdCdzIHRlbXBvcmFyeS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTgxNTU5Ci0gICAgQWxsb2NhdG9yIGFsbG9jYXRvckZvcihzaXplX3QsIEFsbG9j
YXRvckZvck1vZGUpIGZpbmFsOwotICAgIEFsbG9jYXRvciBhbGxvY2F0b3JGb3JOb25WaXJ0dWFs
KHNpemVfdCwgQWxsb2NhdG9yRm9yTW9kZSk7Ci0gICAgCi0gICAgdm9pZCogYWxsb2NhdGUoVk0m
LCBzaXplX3QsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKSBmaW5h
bDsKLSAgICB2b2lkKiBhbGxvY2F0ZU5vblZpcnR1YWwoVk0mLCBzaXplX3QsIEdDRGVmZXJyYWxD
b250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlKTsKKyAgICBBbGxvY2F0b3IgYWxsb2NhdG9y
Rm9yKHNpemVfdCwgQWxsb2NhdG9yRm9yTW9kZSk7CisgICAgQWxsb2NhdG9yIGFsbG9jYXRvckZv
ck5vbklubGluZShzaXplX3QsIEFsbG9jYXRvckZvck1vZGUpOworCisgICAgdm9pZCogYWxsb2Nh
dGUoVk0mLCBzaXplX3QsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVNb2Rl
KTsKICAgICB2b2lkKiByZWFsbG9jYXRlUHJlY2lzZUFsbG9jYXRpb25Ob25WaXJ0dWFsKFZNJiwg
SGVhcENlbGwqLCBzaXplX3QsIEdDRGVmZXJyYWxDb250ZXh0KiwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlKTsKICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9yRm9yU2l6
ZVN0ZXAoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoQ29tcGxldGVTdWJzcGFjZSwgbV9hbGxv
Y2F0b3JGb3JTaXplU3RlcCk7IH0KQEAgLTYyLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPExvY2FsQWxsb2NhdG9yPj4gbV9sb2NhbEFsbG9jYXRvcnM7CiB9
OwogCi1BTFdBWVNfSU5MSU5FIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JG
b3JOb25WaXJ0dWFsKHNpemVfdCBzaXplLCBBbGxvY2F0b3JGb3JNb2RlIG1vZGUpCitBTFdBWVNf
SU5MSU5FIEFsbG9jYXRvciBDb21wbGV0ZVN1YnNwYWNlOjphbGxvY2F0b3JGb3Ioc2l6ZV90IHNp
emUsIEFsbG9jYXRvckZvck1vZGUgbW9kZSkKIHsKICAgICBpZiAoc2l6ZSA8PSBNYXJrZWRTcGFj
ZTo6bGFyZ2VDdXRvZmYpIHsKICAgICAgICAgQWxsb2NhdG9yIHJlc3VsdCA9IG1fYWxsb2NhdG9y
Rm9yU2l6ZVN0ZXBbTWFya2VkU3BhY2U6OnNpemVDbGFzc1RvSW5kZXgoc2l6ZSldOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29tcGxldGVTdWJzcGFjZUlubGluZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db21wbGV0ZVN1YnNwYWNlSW5s
aW5lcy5oCShyZXZpc2lvbiAyODY1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b21wbGV0ZVN1YnNwYWNlSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxMiArMzAsMTIg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxldGVTdWJz
cGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxD
b250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9k
ZSkKK0FMV0FZU19JTkxJTkUgdm9pZCogQ29tcGxldGVTdWJzcGFjZTo6YWxsb2NhdGUoVk0mIHZt
LCBzaXplX3Qgc2l6ZSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlIGZhaWx1cmVNb2RlKQogewogICAgIGlmIGNvbnN0ZXhwciAodmFsaWRh
dGVERkdEb2VzR0MpCiAgICAgICAgIHZtLnZlcmlmeUNhbkdDKCk7CiAKLSAgICBpZiAoQWxsb2Nh
dG9yIGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgQWxsb2NhdG9yRm9y
TW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpKQorICAgIGlmIChBbGxvY2F0b3IgYWxsb2NhdG9yID0g
YWxsb2NhdG9yRm9yKHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKSkK
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5hbGxvY2F0ZSh2bS5oZWFwLCBkZWZlcnJhbENvbnRl
eHQsIGZhaWx1cmVNb2RlKTsKICAgICByZXR1cm4gYWxsb2NhdGVTbG93KHZtLCBzaXplLCBkZWZl
cnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Jc29TdWJzcGFjZS5jcHAJKHJldmlzaW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTYg
KzU2LDYgQEAgSXNvU3Vic3BhY2U6On5Jc29TdWJzcGFjZSgpCiB7CiB9CiAKLUFsbG9jYXRvciBJ
c29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yKHNpemVfdCBzaXplLCBBbGxvY2F0b3JGb3JNb2RlIG1v
ZGUpCi17Ci0gICAgcmV0dXJuIGFsbG9jYXRvckZvck5vblZpcnR1YWwoc2l6ZSwgbW9kZSk7Ci19
Ci0KLXZvaWQqIElzb1N1YnNwYWNlOjphbGxvY2F0ZShWTSYgdm0sIHNpemVfdCBzaXplLCBHQ0Rl
ZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgZmFp
bHVyZU1vZGUpCi17Ci0gICAgcmV0dXJuIGFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgZGVm
ZXJyYWxDb250ZXh0LCBmYWlsdXJlTW9kZSk7Ci19Ci0KIHZvaWQgSXNvU3Vic3BhY2U6OmRpZFJl
c2l6ZUJpdHModW5zaWduZWQgYmxvY2tJbmRleCkKIHsKICAgICBtX2NlbGxTZXRzLmZvckVhY2go
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Jc29TdWJzcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgJKHJldmlzaW9u
IDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDExICs0Miw5IEBAIHB1YmxpYzoKIAogICAgIHNpemVfdCBjZWxs
U2l6ZSgpIHsgcmV0dXJuIG1fZGlyZWN0b3J5LmNlbGxTaXplKCk7IH0KIAotICAgIEFsbG9jYXRv
ciBhbGxvY2F0b3JGb3Ioc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKSBvdmVycmlkZTsKLSAgICBB
bGxvY2F0b3IgYWxsb2NhdG9yRm9yTm9uVmlydHVhbChzaXplX3QsIEFsbG9jYXRvckZvck1vZGUp
OworICAgIEFsbG9jYXRvciBhbGxvY2F0b3JGb3Ioc2l6ZV90LCBBbGxvY2F0b3JGb3JNb2RlKTsK
IAotICAgIHZvaWQqIGFsbG9jYXRlKFZNJiwgc2l6ZV90LCBHQ0RlZmVycmFsQ29udGV4dCosIEFs
bG9jYXRpb25GYWlsdXJlTW9kZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCogYWxsb2NhdGVOb25WaXJ0
dWFsKFZNJiwgc2l6ZV90LCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9jYXRpb25GYWlsdXJlTW9k
ZSk7CisgICAgdm9pZCogYWxsb2NhdGUoVk0mLCBzaXplX3QsIEdDRGVmZXJyYWxDb250ZXh0Kiwg
QWxsb2NhdGlvbkZhaWx1cmVNb2RlKTsKIAogICAgIHZvaWQgc3dlZXBMb3dlclRpZXJDZWxsKFBy
ZWNpc2VBbGxvY2F0aW9uKik7CiAgICAgdm9pZCBjbGVhcklzb0NlbGxTZXRCaXQoUHJlY2lzZUFs
bG9jYXRpb24qKTsKQEAgLTcyLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBTZW50aW5lbExpbmtl
ZExpc3Q8SXNvQ2VsbFNldCwgUGFja2VkUmF3U2VudGluZWxOb2RlPElzb0NlbGxTZXQ+PiBtX2Nl
bGxTZXRzOwogfTsKIAotQUxXQVlTX0lOTElORSBBbGxvY2F0b3IgSXNvU3Vic3BhY2U6OmFsbG9j
YXRvckZvck5vblZpcnR1YWwoc2l6ZV90IHNpemUsIEFsbG9jYXRvckZvck1vZGUpCitBTFdBWVNf
SU5MSU5FIEFsbG9jYXRvciBJc29TdWJzcGFjZTo6YWxsb2NhdG9yRm9yKHNpemVfdCBzaXplLCBB
bGxvY2F0b3JGb3JNb2RlKQogewogICAgIFJFTEVBU0VfQVNTRVJUKFdURjo6cm91bmRVcFRvTXVs
dGlwbGVPZjxNYXJrZWRCbG9jazo6YXRvbVNpemU+KHNpemUpID09IGNlbGxTaXplKCkpOwogICAg
IHJldHVybiBBbGxvY2F0b3IoJm1fbG9jYWxBbGxvY2F0b3IpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSXNvU3Vic3BhY2VJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjU1
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0lzb1N1YnNwYWNlSW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI3LDEwICsyNywxMCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlT
X0lOTElORSB2b2lkKiBJc29TdWJzcGFjZTo6YWxsb2NhdGVOb25WaXJ0dWFsKFZNJiB2bSwgc2l6
ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25G
YWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKK0FMV0FZU19JTkxJTkUgdm9pZCogSXNvU3Vic3BhY2U6
OmFsbG9jYXRlKFZNJiB2bSwgc2l6ZV90IHNpemUsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJh
bENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZSBmYWlsdXJlTW9kZSkKIHsKICAgICBSRUxF
QVNFX0FTU0VSVChXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8TWFya2VkQmxvY2s6OmF0b21TaXpl
PihzaXplKSA9PSBjZWxsU2l6ZSgpKTsKLSAgICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2Nh
dG9yRm9yTm9uVmlydHVhbChzaXplLCBBbGxvY2F0b3JGb3JNb2RlOjpNdXN0QWxyZWFkeUhhdmVB
bGxvY2F0b3IpOworICAgIEFsbG9jYXRvciBhbGxvY2F0b3IgPSBhbGxvY2F0b3JGb3Ioc2l6ZSwg
QWxsb2NhdG9yRm9yTW9kZTo6TXVzdEFscmVhZHlIYXZlQWxsb2NhdG9yKTsKICAgICB2b2lkKiBy
ZXN1bHQgPSBhbGxvY2F0b3IuYWxsb2NhdGUodm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBmYWls
dXJlTW9kZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1N1YnNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU3Vic3BhY2UuaAkocmV2aXNpb24gMjg2NTU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Vic3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOSArNTYsNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBmaW5pc2hTd2VlcChNYXJrZWRCbG9jazo6SGFuZGxlJiwgRnJlZUxpc3Qq
KTsKICAgICB2b2lkIGRlc3Ryb3koVk0mLCBKU0NlbGwqKTsKIAotICAgIHZpcnR1YWwgQWxsb2Nh
dG9yIGFsbG9jYXRvckZvcihzaXplX3QsIEFsbG9jYXRvckZvck1vZGUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQqIGFsbG9jYXRlKFZNJiwgc2l6ZV90LCBHQ0RlZmVycmFsQ29udGV4dCosIEFsbG9j
YXRpb25GYWlsdXJlTW9kZSkgPSAwOwotICAgIAogICAgIHZvaWQgcHJlcGFyZUZvckFsbG9jYXRp
b24oKTsKICAgICAKICAgICB2b2lkIGRpZENyZWF0ZUZpcnN0RGlyZWN0b3J5KEJsb2NrRGlyZWN0
b3J5KiBkaXJlY3RvcnkpIHsgbV9kaXJlY3RvcnlGb3JFbXB0eUFsbG9jYXRpb24gPSBkaXJlY3Rv
cnk7IH0KQEAgLTExNSwxMyArMTEyLDEzIEBAIHByb3RlY3RlZDoKICAgICBCbG9ja0RpcmVjdG9y
eSogbV9maXJzdERpcmVjdG9yeSB7IG51bGxwdHIgfTsKICAgICBCbG9ja0RpcmVjdG9yeSogbV9k
aXJlY3RvcnlGb3JFbXB0eUFsbG9jYXRpb24geyBudWxscHRyIH07IC8vIFVzZXMgdGhlIE1hcmtl
ZFNwYWNlIGxpbmtlZCBsaXN0IG9mIGJsb2Nrcy4KICAgICBTZW50aW5lbExpbmtlZExpc3Q8UHJl
Y2lzZUFsbG9jYXRpb24sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxQcmVjaXNlQWxsb2NhdGlvbj4+
IG1fcHJlY2lzZUFsbG9jYXRpb25zOwotICAgIFN1YnNwYWNlKiBtX25leHRTdWJzcGFjZUluQWxp
Z25lZE1lbW9yeUFsbG9jYXRvciB7IG51bGxwdHIgfTsKLQotICAgIENTdHJpbmcgbV9uYW1lOwog
CiAgICAgYm9vbCBtX2lzSXNvU3Vic3BhY2UgeyBmYWxzZSB9OwotcHJvdGVjdGVkOgogICAgIHVp
bnQ4X3QgbV9yZW1haW5pbmdMb3dlclRpZXJDZWxsQ291bnQgeyAwIH07CisKKyAgICBTdWJzcGFj
ZSogbV9uZXh0U3Vic3BhY2VJbkFsaWduZWRNZW1vcnlBbGxvY2F0b3IgeyBudWxscHRyIH07CisK
KyAgICBDU3RyaW5nIG1fbmFtZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyODY1
NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODIwLDcgKzE4MjAsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZNJiB2bSwg
R1BSUmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIFN0b3JhZ2VUeXBlIHN0
b3JhZ2UsIEdQUlJlZyBzY3JhdGNoR1BSMSwKICAgICAgICAgR1BSUmVnIHNjcmF0Y2hHUFIyLCBK
dW1wTGlzdCYgc2xvd1BhdGgsIHNpemVfdCBzaXplKQogICAgIHsKLSAgICAgICAgQWxsb2NhdG9y
IGFsbG9jYXRvciA9IGFsbG9jYXRvckZvck5vblZpcnR1YWxDb25jdXJyZW50bHk8Q2xhc3NUeXBl
Pih2bSwgc2l6ZSwgQWxsb2NhdG9yRm9yTW9kZTo6QWxsb2NhdG9ySWZFeGlzdHMpOworICAgICAg
ICBBbGxvY2F0b3IgYWxsb2NhdG9yID0gYWxsb2NhdG9yRm9yQ29uY3VycmVudGx5PENsYXNzVHlw
ZT4odm0sIHNpemUsIEFsbG9jYXRvckZvck1vZGU6OkFsbG9jYXRvcklmRXhpc3RzKTsKICAgICAg
ICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBKSVRBbGxvY2F0b3I6OmNvbnN0YW50
KGFsbG9jYXRvciksIHNjcmF0Y2hHUFIxLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UsIHNjcmF0Y2hHUFIy
LCBzbG93UGF0aCk7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0J1dHRlcmZseUlubGluZXMuaAkocmV2aXNpb24gMjg2NTU4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQnV0dGVyZmx5SW5saW5lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNzcsNyArNzcsNyBAQCBBTFdBWVNfSU5MSU5FIHVuc2lnbmVkIEJ1dHRlcmZseTo6
b3B0aW1hCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6
ZWQoVk0mIHZtLCBKU09iamVjdCosIHNpemVfdCBwcmVDYXBhY2l0eSwgc2l6ZV90IHByb3BlcnR5
Q2FwYWNpdHksIGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIsIHNpemVfdCBpbmRleGluZ1BheWxvYWRT
aXplSW5CeXRlcywgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKIHsKICAgICBz
aXplX3Qgc2l6ZSA9IHRvdGFsU2l6ZShwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSwgaGFz
SW5kZXhpbmdIZWFkZXIsIGluZGV4aW5nUGF5bG9hZFNpemVJbkJ5dGVzKTsKLSAgICB2b2lkKiBi
YXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1
YWwodm0sIHNpemUsIGRlZmVycmFsQ29udGV4dCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKKyAgICB2b2lkKiBiYXNlID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UoKS5hbGxvY2F0ZSh2bSwgc2l6ZSwgZGVmZXJyYWxDb250ZXh0LCBBbGxvY2F0aW9uRmFpbHVy
ZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlmIChVTkxJS0VMWSghYmFzZSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC04OSw3ICs4OSw3IEBAIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRl
cmZseTo6dHJ5Q3JlYXRlVW4KIGlubGluZSBCdXR0ZXJmbHkqIEJ1dHRlcmZseTo6Y3JlYXRlVW5p
bml0aWFsaXplZChWTSYgdm0sIEpTT2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3Qg
cHJvcGVydHlDYXBhY2l0eSwgYm9vbCBoYXNJbmRleGluZ0hlYWRlciwgc2l6ZV90IGluZGV4aW5n
UGF5bG9hZFNpemVJbkJ5dGVzKQogewogICAgIHNpemVfdCBzaXplID0gdG90YWxTaXplKHByZUNh
cGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5LCBoYXNJbmRleGluZ0hlYWRlciwgaW5kZXhpbmdQYXls
b2FkU2l6ZUluQnl0ZXMpOwotICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhp
bGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgc2l6ZSwgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpOworICAgIHZvaWQqIGJhc2UgPSB2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0
aW9uRmFpbHVyZU1vZGU6OkFzc2VydCk7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQgPSBmcm9tQmFz
ZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtOTgsNyArOTgsNyBAQCBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OmNyZWF0
ZVVuaW5pCiBpbmxpbmUgQnV0dGVyZmx5KiBCdXR0ZXJmbHk6OnRyeUNyZWF0ZShWTSYgdm0sIEpT
T2JqZWN0Kiwgc2l6ZV90IHByZUNhcGFjaXR5LCBzaXplX3QgcHJvcGVydHlDYXBhY2l0eSwgYm9v
bCBoYXNJbmRleGluZ0hlYWRlciwgY29uc3QgSW5kZXhpbmdIZWFkZXImIGluZGV4aW5nSGVhZGVy
LCBzaXplX3QgaW5kZXhpbmdQYXlsb2FkU2l6ZUluQnl0ZXMpCiB7CiAgICAgc2l6ZV90IHNpemUg
PSB0b3RhbFNpemUocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHksIGhhc0luZGV4aW5nSGVh
ZGVyLCBpbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7Ci0gICAgdm9pZCogYmFzZSA9IHZtLmpz
VmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBzaXpl
LCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOworICAgIHZvaWQq
IGJhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlKHZtLCBz
aXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwogICAgIGlm
ICghYmFzZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgQnV0dGVyZmx5KiByZXN1bHQg
PSBmcm9tQmFzZShiYXNlLCBwcmVDYXBhY2l0eSwgcHJvcGVydHlDYXBhY2l0eSk7CkBAIC0xNzQs
NyArMTc0LDcgQEAgaW5saW5lIEJ1dHRlcmZseSogQnV0dGVyZmx5Ojpncm93QXJyYXlSaQogICAg
IHZvaWQqIHRoZUJhc2UgPSBiYXNlKDAsIHByb3BlcnR5Q2FwYWNpdHkpOwogICAgIHNpemVfdCBv
bGRTaXplID0gdG90YWxTaXplKDAsIHByb3BlcnR5Q2FwYWNpdHksIGhhZEluZGV4aW5nSGVhZGVy
LCBvbGRJbmRleGluZ1BheWxvYWRTaXplSW5CeXRlcyk7CiAgICAgc2l6ZV90IG5ld1NpemUgPSB0
b3RhbFNpemUoMCwgcHJvcGVydHlDYXBhY2l0eSwgdHJ1ZSwgbmV3SW5kZXhpbmdQYXlsb2FkU2l6
ZUluQnl0ZXMpOwotICAgIHZvaWQqIG5ld0Jhc2UgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbmV3U2l6ZSwgbnVsbHB0ciwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICB2b2lkKiBuZXdCYXNlID0gdm0uanNW
YWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZSh2bSwgbmV3U2l6ZSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBpZiAoIW5ld0Jhc2Up
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIC8vIEZJWE1FOiBUaGlzIHByb2JhYmx5IHNo
b3VsZG4ndCBiZSBhIG1lbWNweS4KQEAgLTIxNyw3ICsyMTcsNyBAQCBpbmxpbmUgQnV0dGVyZmx5
KiBCdXR0ZXJmbHk6OnJlYWxsb2NBcnJhCiAgICAgICAgIHJldHVybiBmcm9tQmFzZShuZXdCYXNl
LCAwLCBwcm9wZXJ0eUNhcGFjaXR5KTsKICAgICB9CiAKLSAgICB2b2lkKiBuZXdCYXNlID0gdm0u
anNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIG5l
d1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVs
bCk7CisgICAgdm9pZCogbmV3QmFzZSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCkuYWxsb2NhdGUodm0sIG5ld1NpemUsICZkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6UmV0dXJuTnVsbCk7CiAgICAgaWYgKCFuZXdCYXNlKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBnY1NhZmVNZW1jcHkoc3RhdGljX2Nhc3Q8SlNWYWx1ZSo+KG5ld0Jhc2Up
LCBzdGF0aWNfY2FzdDxKU1ZhbHVlKj4odGhlQmFzZSksIG9sZFNpemUpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwCShyZXZp
c2lvbiAyODY1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBEaXJlY3RB
cmd1bWVudHM6Om92ZXJyaWRlVGhpbmdzKEpTRwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+Y2FsbGVlLCBtX2NhbGxlZS5nZXQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1
bmN0aW9uKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICAKLSAgICB2b2lkKiBiYWNraW5nU3RvcmUgPSB2bS5naWdhY2FnZUF1eGlsaWFy
eVNwYWNlKG1fbWFwcGVkQXJndW1lbnRzLmtpbmQpLmFsbG9jYXRlTm9uVmlydHVhbCh2bSwgbWFw
cGVkQXJndW1lbnRzU2l6ZSgpLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVy
bk51bGwpOworICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3Bh
Y2UobV9tYXBwZWRBcmd1bWVudHMua2luZCkuYWxsb2NhdGUodm0sIG1hcHBlZEFyZ3VtZW50c1Np
emUoKSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWJhY2tpbmdTdG9yZSkpIHsKICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmgJKHJldmlzaW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw3ICsyNzYs
NyBAQCB2b2lkIEdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmluaXRNb2RpZmllCiAgICAgUkVMRUFT
RV9BU1NFUlQoIW1fbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yKTsKIAogICAgIGlmIChhcmdz
TGVuZ3RoKSB7Ci0gICAgICAgIHZvaWQqIGJhY2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxp
YXJ5U3BhY2UobV9tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3Iua2luZCkuYWxsb2NhdGVOb25W
aXJ0dWFsKHZtLCBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Y8OD4oYXJnc0xlbmd0aCksIG51bGxw
dHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgICAgIHZvaWQqIGJh
Y2tpbmdTdG9yZSA9IHZtLmdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UobV9tb2RpZmllZEFyZ3VtZW50
c0Rlc2NyaXB0b3Iua2luZCkuYWxsb2NhdGUodm0sIFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjw4
PihhcmdzTGVuZ3RoKSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxs
KTsKICAgICAgICAgaWYgKFVOTElLRUxZKCFiYWNraW5nU3RvcmUpKSB7CiAgICAgICAgICAgICB0
aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBs
LmgJKHJldmlzaW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
ICAgIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSA9IEhhc2hNYXBCdWZmZXI6OmFsbG9jYXRpb25TaXpl
KGNhcGFjaXR5KTsKLSAgICAgICAgdm9pZCogZGF0YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKHZtLCBhbGxvY2F0aW9uU2l6ZSwgbnVsbHB0
ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKKyAgICAgICAgdm9pZCogZGF0
YSA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGUodm0sIGFsbG9j
YXRpb25TaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6OlJldHVybk51bGwpOwog
ICAgICAgICBpZiAoIWRhdGEpIHsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAJKHJldmlzaW9uIDI4NjU1
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIEpTQXJyYXkqIEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5p
dGlhbGl6ZWQKICAgICAgICAgICAgIHx8IGhhc0NvbnRpZ3VvdXMoaW5kZXhpbmdUeXBlKSk7CiAK
ICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0gQnV0dGVyZmx5OjpvcHRpbWFsQ29udGln
dW91c1ZlY3Rvckxlbmd0aChzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpOwotICAgICAgICB2b2lk
KiB0ZW1wID0gdm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5vblZp
cnR1YWwoCisgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlT
cGFjZSgpLmFsbG9jYXRlKAogICAgICAgICAgICAgdm0sCiAgICAgICAgICAgICBCdXR0ZXJmbHk6
OnRvdGFsU2l6ZSgwLCBvdXRPZkxpbmVTdG9yYWdlLCB0cnVlLCB2ZWN0b3JMZW5ndGggKiBzaXpl
b2YoRW5jb2RlZEpTVmFsdWUpKSwKICAgICAgICAgICAgIGRlZmVycmFsQ29udGV4dCwgQWxsb2Nh
dGlvbkZhaWx1cmVNb2RlOjpSZXR1cm5OdWxsKTsKQEAgLTc4LDcgKzc4LDcgQEAgSlNBcnJheSog
SlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZAogICAgICAgICAgICAgfHwgaW5kZXhpbmdU
eXBlID09IEFycmF5V2l0aEFycmF5U3RvcmFnZSk7CiAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgaW5kZXhCaWFzID0gMDsKICAgICAgICAgdW5zaWduZWQgdmVjdG9yTGVuZ3RoID0g
QXJyYXlTdG9yYWdlOjpvcHRpbWFsVmVjdG9yTGVuZ3RoKGluZGV4Qmlhcywgc3RydWN0dXJlLCBp
bml0aWFsTGVuZ3RoKTsKLSAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1
eGlsaWFyeVNwYWNlKCkuYWxsb2NhdGVOb25WaXJ0dWFsKAorICAgICAgICB2b2lkKiB0ZW1wID0g
dm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZSgKICAgICAgICAgICAg
IHZtLAogICAgICAgICAgICAgQnV0dGVyZmx5Ojp0b3RhbFNpemUoaW5kZXhCaWFzLCBvdXRPZkxp
bmVTdG9yYWdlLCB0cnVlLCBBcnJheVN0b3JhZ2U6OnNpemVGb3IodmVjdG9yTGVuZ3RoKSksCiAg
ICAgICAgICAgICBkZWZlcnJhbENvbnRleHQsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJu
TnVsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZp
c2lvbiAyODY1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NCw3ICsyNDQsNyBAQCBpbmxpbmUgSlNBcnJheSogSlNBcnJh
eTo6dHJ5Q3JlYXRlKFZNJiB2CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAg
ICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBCdXR0ZXJmbHk6Om9wdGltYWxDb250aWd1b3VzVmVj
dG9yTGVuZ3RoKHN0cnVjdHVyZSwgdmVjdG9yTGVuZ3RoSGludCk7Ci0gICAgICAgIHZvaWQqIHRl
bXAgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVh
bCgKKyAgICAgICAgdm9pZCogdGVtcCA9IHZtLmpzVmFsdWVHaWdhY2FnZUF1eGlsaWFyeVNwYWNl
KCkuYWxsb2NhdGUoCiAgICAgICAgICAgICB2bSwKICAgICAgICAgICAgIEJ1dHRlcmZseTo6dG90
YWxTaXplKDAsIG91dE9mTGluZVN0b3JhZ2UsIHRydWUsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpLAogICAgICAgICAgICAgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVN
b2RlOjpSZXR1cm5OdWxsKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXlCdWZmZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAJKHJldmlzaW9uIDI4NjU1OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29u
dGV4dDo6CiAgICAgICAgIC8vIEF0dGVtcHQgR0MgYWxsb2NhdGlvbi4KICAgICAgICAgdm9pZCog
dGVtcDsKICAgICAgICAgc2l6ZV90IHNpemUgPSBzaXplT2YobGVuZ3RoLCBlbGVtZW50U2l6ZSk7
Ci0gICAgICAgIHRlbXAgPSB2bS5wcmltaXRpdmVHaWdhY2FnZUF1eGlsaWFyeVNwYWNlKCkuYWxs
b2NhdGVOb25WaXJ0dWFsKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OlJldHVybk51bGwpOworICAgICAgICB0ZW1wID0gdm0ucHJpbWl0aXZlR2lnYWNhZ2VBdXhpbGlh
cnlTcGFjZSgpLmFsbG9jYXRlKHZtLCBzaXplLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1v
ZGU6OlJldHVybk51bGwpOwogICAgICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICByZXR1cm47
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAJKHJl
dmlzaW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIGlubGluZSBKU0JpZ0ludCog
SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW4KICAgICB9CiAKICAgICBBU1NFUlQobGVuZ3RoIDw9IG1h
eExlbmd0aCk7Ci0gICAgdm9pZCogZGF0YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5
U3BhY2UoKS5hbGxvY2F0ZU5vblZpcnR1YWwodm0sIGxlbmd0aCAqIHNpemVvZihEaWdpdCksIG51
bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCk7CisgICAgdm9pZCogZGF0
YSA9IHZtLnByaW1pdGl2ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZSh2bSwgbGVu
Z3RoICogc2l6ZW9mKERpZ2l0KSwgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpSZXR1
cm5OdWxsKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGEpKSB7CiAgICAgICAgIGlmIChudWxsT3JH
bG9iYWxPYmplY3RGb3JPT00pIHsKICAgICAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGxJbmxpbmVzLmgJKHJldmlzaW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDEwICsxNjUs
MTAgQEAgQUxXQVlTX0lOTElORSBWTSYgQ2FsbEZyYW1lOjpkZXByZWNhdGVkVgogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUeXBlPgotaW5saW5lIEFsbG9jYXRvciBhbGxvY2F0b3JGb3JOb25WaXJ0
dWFsQ29uY3VycmVudGx5KFZNJiB2bSwgc2l6ZV90IGFsbG9jYXRpb25TaXplLCBBbGxvY2F0b3JG
b3JNb2RlIG1vZGUpCitpbmxpbmUgQWxsb2NhdG9yIGFsbG9jYXRvckZvckNvbmN1cnJlbnRseShW
TSYgdm0sIHNpemVfdCBhbGxvY2F0aW9uU2l6ZSwgQWxsb2NhdG9yRm9yTW9kZSBtb2RlKQogewog
ICAgIGlmIChhdXRvKiBzdWJzcGFjZSA9IHN1YnNwYWNlRm9yQ29uY3VycmVudGx5PFR5cGU+KHZt
KSkKLSAgICAgICAgcmV0dXJuIHN1YnNwYWNlLT5hbGxvY2F0b3JGb3JOb25WaXJ0dWFsKGFsbG9j
YXRpb25TaXplLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIHN1YnNwYWNlLT5hbGxvY2F0b3JGb3Io
YWxsb2NhdGlvblNpemUsIG1vZGUpOwogICAgIHJldHVybiB7IH07CiB9CiAKQEAgLTE3OCw3ICsx
NzgsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQqIHRyeUFsbG9jYXRlQ2VsbEhlbHBlCiAgICAgVk0m
IHZtID0gaGVhcC52bSgpOwogICAgIEFTU0VSVChkZWZlcnJhbENvbnRleHQgfHwgaGVhcC5pc0Rl
ZmVycmVkKCkgfHwgIURpc2FsbG93R0M6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7CiAg
ICAgQVNTRVJUKHNpemUgPj0gc2l6ZW9mKFQpKTsKLSAgICBKU0NlbGwqIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PEpTQ2VsbCo+KHN1YnNwYWNlRm9yPFQ+KHZtKS0+YWxsb2NhdGVOb25WaXJ0dWFsKHZt
LCBzaXplLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKSk7CisgICAgSlNDZWxsKiByZXN1
bHQgPSBzdGF0aWNfY2FzdDxKU0NlbGwqPihzdWJzcGFjZUZvcjxUPih2bSktPmFsbG9jYXRlKHZt
LCBzaXplLCBkZWZlcnJhbENvbnRleHQsIGZhaWx1cmVNb2RlKSk7CiAgICAgaWYgKGZhaWx1cmVN
b2RlID09IEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6UmV0dXJuTnVsbCAmJiAhcmVzdWx0KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICNpZiBFTkFCTEUoR0NfVkFMSURBVElPTikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lRW51bWVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yLmNwcAkocmV2aXNpb24gMjg2NTU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNyArMzgsNyBAQCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIEpTUHJvcGVydHlOYW1l
CiAgICAgdW5zaWduZWQgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzID0gQ2hlY2tlZDx1
bnNpZ25lZD4ocHJvcGVydHlOYW1lc1NpemUpICogc2l6ZW9mKFdyaXRlQmFycmllcjxKU1N0cmlu
Zz4pOwogICAgIFdyaXRlQmFycmllcjxKU1N0cmluZz4qIHByb3BlcnR5TmFtZXNCdWZmZXIgPSBu
dWxscHRyOwogICAgIGlmIChwcm9wZXJ0eU5hbWVzQnVmZmVyU2l6ZUluQnl0ZXMpIHsKLSAgICAg
ICAgcHJvcGVydHlOYW1lc0J1ZmZlciA9IHN0YXRpY19jYXN0PFdyaXRlQmFycmllcjxKU1N0cmlu
Zz4qPih2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVh
bCh2bSwgcHJvcGVydHlOYW1lc0J1ZmZlclNpemVJbkJ5dGVzLCBudWxscHRyLCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGU6OkFzc2VydCkpOworICAgICAgICBwcm9wZXJ0eU5hbWVzQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8V3JpdGVCYXJyaWVyPEpTU3RyaW5nPio+KHZtLmpzVmFsdWVHaWdhY2FnZUF1eGls
aWFyeVNwYWNlKCkuYWxsb2NhdGUodm0sIHByb3BlcnR5TmFtZXNCdWZmZXJTaXplSW5CeXRlcywg
bnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpKTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHByb3BlcnR5TmFtZXNTaXplOyArK2kpCiAgICAgICAgICAgICBw
cm9wZXJ0eU5hbWVzQnVmZmVyW2ldLmNsZWFyKCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAy
ODY1NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIFNjb3BlZEFyZ3VtZW50cyogU2Nv
cGVkQXJndW1lbnRzOjpjcmVhdGUKICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHN0b3JhZ2Ug
PSBudWxscHRyOwogICAgIGlmICh0b3RhbExlbmd0aCA+IHRhYmxlLT5sZW5ndGgoKSkgewogICAg
ICAgICBDaGVja2VkPHVuc2lnbmVkPiBvdmVyZmxvd0xlbmd0aCA9IHRvdGFsTGVuZ3RoIC0gdGFi
bGUtPmxlbmd0aCgpOwotICAgICAgICBzdG9yYWdlID0gc3RhdGljX2Nhc3Q8V3JpdGVCYXJyaWVy
PFVua25vd24+Kj4odm0uanNWYWx1ZUdpZ2FjYWdlQXV4aWxpYXJ5U3BhY2UoKS5hbGxvY2F0ZU5v
blZpcnR1YWwodm0sIG92ZXJmbG93TGVuZ3RoICogc2l6ZW9mKFdyaXRlQmFycmllcjxVbmtub3du
PiksIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KSk7CisgICAgICAgIHN0
b3JhZ2UgPSBzdGF0aWNfY2FzdDxXcml0ZUJhcnJpZXI8VW5rbm93bj4qPih2bS5qc1ZhbHVlR2ln
YWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlKHZtLCBvdmVyZmxvd0xlbmd0aCAqIHNpemVv
ZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBudWxscHRyLCBBbGxvY2F0aW9uRmFpbHVyZU1vZGU6
OkFzc2VydCkpOwogICAgIH0KIAogICAgIFNjb3BlZEFyZ3VtZW50cyogcmVzdWx0ID0gbmV3ICgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5jcHAJKHJldmlzaW9uIDI4NjU1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBTdHJ1
Y3R1cmVDaGFpbiogU3RydWN0dXJlQ2hhaW46OmNyZWF0ZShWCiAgICAgICAgICsrc2l6ZTsKICAg
ICArK3NpemU7IC8vIFNlbnRpbmVsIG51bGxwdHIuCiAgICAgc2l6ZV90IGJ5dGVzID0gQ2hlY2tl
ZDxzaXplX3Q+KHNpemUpICogc2l6ZW9mKFN0cnVjdHVyZUlEKTsKLSAgICB2b2lkKiB2ZWN0b3Ig
PSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRlTm9uVmlydHVhbCh2
bSwgYnl0ZXMsIG51bGxwdHIsIEFsbG9jYXRpb25GYWlsdXJlTW9kZTo6QXNzZXJ0KTsKKyAgICB2
b2lkKiB2ZWN0b3IgPSB2bS5qc1ZhbHVlR2lnYWNhZ2VBdXhpbGlhcnlTcGFjZSgpLmFsbG9jYXRl
KHZtLCBieXRlcywgbnVsbHB0ciwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpBc3NlcnQpOwogICAg
IHN0YXRpY19hc3NlcnQoIVN0cnVjdHVyZUlEKCkuYml0cygpLCAiTWFrZSBzdXJlIHRoZSB2YWx1
ZSB3ZSdyZSBnb2luZyB0byBtZW1jcHkgYmVsb3cgbWF0Y2hlcyB0aGUgZGVmYXVsdCBTdHJ1Y3R1
cmVJRCIpOwogICAgIG1lbXNldCh2ZWN0b3IsIDAsIGJ5dGVzKTsKICAgICBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJ1Y3R1cmVDaGFpbj4odm0p
KSBTdHJ1Y3R1cmVDaGFpbih2bSwgdm0uc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIHN0
YXRpY19jYXN0PFN0cnVjdHVyZUlEKj4odmVjdG9yKSk7Cg==
</data>
<flag name="review"
          id="471393"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="471403"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>