<?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>151010</bug_id>
          
          <creation_ts>2015-11-08 18:22:00 -0800</creation_ts>
          <short_desc>MacroAssembler needs an API for disabling scratch registers</short_desc>
          <delta_ts>2016-02-16 18:26:14 -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>All</rep_platform>
          <op_sys>All</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>
          <dependson>151669</dependson>
          <blocked>151008</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1140289</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-08 18:22:00 -0800</bug_when>
    <thetext>When the scratch registers are disabled, any instruction that uses them should CRASH.  This should be used by Air::generate().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144859</commentid>
    <comment_count>1</comment_count>
      <attachid>266255</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 11:57:23 -0800</bug_when>
    <thetext>Created attachment 266255
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144860</commentid>
    <comment_count>2</comment_count>
      <attachid>266256</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 11:58:00 -0800</bug_when>
    <thetext>Created attachment 266256
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144863</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-11-30 12:03:54 -0800</bug_when>
    <thetext>r=me as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144864</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-30 12:07:43 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/192812</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1144878</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-30 12:34:56 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 151669</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165444</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-02-16 18:26:14 -0800</bug_when>
    <thetext>This definitely relanded, don&apos;t remember when, but it was a long time ago.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266255</attachid>
            <date>2015-11-30 11:57:23 -0800</date>
            <delta_ts>2015-11-30 11:58:00 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>86551</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyNTA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3NCBA
QAorMjAxNS0xMS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IENoZWNrQWRkL011bCBzaG91bGQgaGF2ZSBjb21tdXRhdGl2aXR5IG9wdGltaXphdGlvbnMgaW4g
QjMtPkFpciBsb3dlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTUxMjE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyBhbiBvdmVyaGF1bCBvZiBDaGVja0FkZC9DaGVja1N1Yi9DaGVja011
bCB0aGF0IGZpeGVzIGJ1Z3MsIGltcHJvdmVzIGNvZGVnZW4sIGFuZAorICAgICAgICBzaW1wbGlm
aWVzIHRoZSBjb250cmFjdCBiZXR3ZWVuIEIzIGFuZCBpdHMgY2xpZW50LgorCisgICAgICAgIFBy
ZXZpb3VzbHksIHRoZSBpZGVhIHdhcyB0aGF0IHRoZSBvcGVyYW5kcyB0byB0aGUgQWlyIEJyYW5j
aEFkZC9TdWIvTXVsIG1hdGNoZWQgdGhlIGNoaWxkcmVuIG9mCisgICAgICAgIHRoZSBCMyBDaGVj
a0FkZC9TdWIvTXVsLCBvciBhdCBsZWFzdCwgdGhhdCdzIHdoYXQgdGhlIEIzOjpDaGVja1NwZWNp
YWwgd291bGQgbWFrZSB5b3UgYmVsaWV2ZS4KKyAgICAgICAgVGhpcyBtZWFudCB0aGF0IEIzL0Fp
ciBoYWQgdG8gYXZvaWQgb3B0aW1pemF0aW9ucyB0aGF0IHdvdWxkIGJyZWFrIHRoaXMgcHJvdG9j
b2wuIFRoaXMgcHJldmVudGVkCisgICAgICAgIGNvbW11dGF0aXZpdHkgb3B0aW1pemF0aW9ucyBv
biBDaGVja0FkZC9NdWwgYW5kIGl0IGFsc28gcHJldmVudGVkIHN0cmVuZ3RoIHJlZHVjdGlvbiBm
cm9tCisgICAgICAgIENoZWNrTXVsKHgsIDIpIHRvIENoZWNrQWRkKHgsIHgpLCBmb3IgZXhhbXBs
ZS4gVGhvc2Ugb3B0aW1pemF0aW9ucyB3b3VsZCBicmVhayB0aGluZ3MgYmVjYXVzZSB0aGUKKyAg
ICAgICAgY2xpZW50J3MgU3RhY2ttYXAgZ2VuZXJhdGlvbiBjYWxsYmFjayB3YXMgYWxsb3dlZCB0
byBhc3N1bWUgdGhhdCB0aGUgZmlyc3QgZW50cnkgaW4gcGFyYW1zLnJlcHMKKyAgICAgICAgd2Fz
IHRoZSBmaXJzdCBjaGlsZC4gQWxzbywgdGhlcmUgd2FzIGEgY29udHJhY3QgYmV0d2VlbiBCMyBh
bmQgaXRzIGNsaWVudCB0aGF0IGZvciBDaGVja0FkZC9TdWIsCisgICAgICAgIHRoZSBjbGllbnQg
d291bGQgdW5kbyB0aGUgb3BlcmF0aW9uIGJ5IGRvaW5nIHRoZSBvcHBvc2l0ZSBvcGVyYXRpb24g
d2l0aCB0aGUgcGFyYW1zLnJlcHNbMF0gYXMgdGhlCisgICAgICAgIHNvdXJjZSBhbmQgcGFyYW1z
LnJlcHNbMV0gYXMgdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICAgIFRoaXMgbm90IG9ubHkgcHJl
dmVudGVkIGNvbW11dGF0aXZpdHkgb3B0aW1pemF0aW9ucywgaXQgYWxzbyBsZWQgdG8gYnVncy4g
SGVyZSBhcmUgdHdvIGJ1Z3MgdGhhdAorICAgICAgICB3ZSBoYWQ6CisKKyAgICAgICAgLSBBZGQo
eCwgeCkgd291bGQgbm90IHdvcmsuIFRoZSBjbGllbnQgd291bGQgYmUgdG9sZCB0byB1bmRvIHRo
ZSBhZGQgdXNpbmcgJXggYXMgYm90aCB0aGUgc291cmNlCisgICAgICAgICAgYW5kIGRlc3RpbmF0
aW9uLiBUaGUgY2xpZW50IHdvdWxkIHVzZSBhIHN1YigpIGluc3RydWN0aW9uLiBUaGUgcmVzdWx0
IHdvdWxkIG5vdCBiZSB4IC0gaXQgd291bGQKKyAgICAgICAgICBiZSB6ZXJvLgorCisgICAgICAg
IC0gTXVsIHdoZXJlIHRoZSByZXN1bHQgZ290IGNvYWxlc2NlZCB3aXRoIG9uZSBvZiB0aGUgc291
cmNlcy4gWW91IGNhbid0IHVuZG8gYSBtdWx0aXBsaWNhdGlvbiwgc28KKyAgICAgICAgICB5b3Ug
bmVlZCB0byBrZWVwIHRoZSBpbnB1dHMgYWxpdmUgdW50aWwgYWZ0ZXIgdGhlIHJlc3VsdCBpcyBj
b21wdXRlZCAtIGkuZS4gdGhlIGlucHV0cyBhcmUgbGF0ZQorICAgICAgICAgIHVzZXMuIEkgaW5p
dGlhbGx5IHRob3VnaHQgSSB3b3JrZWQgYXJvdW5kIHRoaXMgYnkgdXNpbmcgYSB0aHJlZS1vcGVy
YW5kIGZvcm0gb2YgTXVsLCBidXQgb2YKKyAgICAgICAgICBjb3Vyc2UgdGhhdCBkb2Vzbid0IGFj
dHVhbGx5IGZpeCB0aGUgaXNzdWUuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGVzZSBp
c3N1ZXMgY29tcHJlaGVuc2l2ZWx5IGJ5IGludHJvZHVjaW5nIHRoZSBmb2xsb3dpbmcgY2hhbmdl
czoKKworICAgICAgICBUaGUgcGFyYW1zLnJlcHMgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3Qg
dHdvIGNoaWxkcmVuIG9mIENoZWNrQWRkL1N1Yi9NdWwgYW5kIHRoZSBmaXJzdCBjaGlsZCBvZgor
ICAgICAgICBDaGVjayBhcmUgYWx3YXlzIGdhcmJhZ2U6IGlmIHlvdSB3YW50IHRvIGtub3cgdGhl
IHZhbHVlcyBvZiB0aG9zZSBjaGlsZHJlbiBpbiB0aGUgc2xvdyBwYXRoLCBwYXNzCisgICAgICAg
IHRoZW0gYXMgYWRkaXRpb25hbCBzdGFja21hcCBjaGlsZHJlbi4gVGhpcyBtYWtlcyBpdCBjbGVh
ciB0byB0aGUgY29tcGlsZXIgd2hvc2UgdmFsdWVzIHlvdQorICAgICAgICBhY3R1YWxseSBjYXJl
IGFib3V0LCBhbmQgZnJlZXMgdGhlIGNvbXBpbGVyIHRvIHJlb3JkZXIgYW5kIGNvbW11dGUgdGhl
IG5vbi1zdGFja21hcCBjaGlsZHJlbi4KKworICAgICAgICBUaGUgInVuZG8iIG9mIGFuIEFkZCBv
ciBTdWIgaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGJ5IEIzOiB0aGUgY2xpZW50IGRvZXNuJ3QgaGF2
ZSB0byBrbm93IGFueXRoaW5nCisgICAgICAgIGFib3V0IHVuZG9pbmcuIEIzIGRvZXMgaXQuIFRo
ZSBjb250cmFjdCBpcyBzaW1wbHkgdGhhdCBpZiBhIEIzOjpWYWx1ZSogaXMgYSBzdGFja21hcCBj
aGlsZCBvZiBhCisgICAgICAgIENoZWNrWFlaLCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5
IGluIHBhcmFtcy5yZXBzIGluc2lkZSB0aGUgc3RhY2ttYXAgZ2VuZXJhdG9yIGNhbGxiYWNrIHdp
bGwKKyAgICAgICAgY29udGFpbiB0aGUgdmFsdWUgb2YgdGhhdCBWYWx1ZSouIEZvciBBZGQgYW5k
IFN1YiwgQjMgdW5kb2VzIHRoZSBvcGVyYXRpb24uIEZvciBBZGQoeCwgeCksIHRoZQorICAgICAg
ICB1bmRvIHVzZXMgdGhlIGNhcnJ5IGZsYWcgYW5kIHNvbWUgc2hpZnQgbWFnaWMuIEZvciBNdWws
IEIzIHVzZXMgTGF0ZVVzZToKKworICAgICAgICBBIG5ldyBraW5kIG9mIEFyZzo6Um9sZSBjYWxs
ZWQgQXJnOjpMYXRlVXNlIGlzIGludHJvZHVjZWQ6IFRoaXMga2luZCBvZiB1c2UgbWVhbnMgdGhh
dCB0aGUgdXNlCisgICAgICAgIGhhcHBlbnMgYXQgdGhlIHN0YXJ0IG9mIHRoZSBleGVjdXRpb24g
b2YgdGhlIG5leHQgaW5zdHJ1Y3Rpb24uIE5vbmUgb2YgdGhlIGJ1aWx0LWluIEFpciBvcGNvZGVz
CisgICAgICAgIHVzZSBMYXRlVXNlLCBidXQgaXQgaXMgdXNlZCBieSBCMzo6Q2hlY2tTcGVjaWFs
LiBXZSB1c2UgaXQgdG8gaW1wbGVtZW50IENoZWNrTXVsLgorCisgICAgICAgIEZpbmFsbHksIHRo
aXMgY2hhbmdlIGZpeGVzIHRlc3RDb21wbGV4IHRvIGFjdHVhbGx5IGNyZWF0ZSBtYW55IGxpdmUg
dmFyaWFibGVzLiBUaGlzIHJldmVhbGVkIGEKKyAgICAgICAgcmVhbGx5IGR1bWIgcGF0aG9sb2d5
IGluIGFsbG9jYXRlU3RhY2soKSwgYW5kIHRoaXMgcGF0Y2ggZml4ZXMgaXQuIEJhc2ljYWxseSwg
aXQncyBhIGJhZCBpZGVhIHRvCisgICAgICAgIGJ1aWxkIGludGVyZmVyZW5jZSBncmFwaHMgYnkg
cmVwZWF0ZWRseSByZWNyZWF0aW5nIHRoZSBzYW1lIGNsaXF1ZXMuCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OnRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uOjpzZXRDYXJyeSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9u
OjppbnZlcnQpOgorICAgICAgICAqIGIzL0IzQ2hlY2tTcGVjaWFsLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6bnVtQjNBcmdzKToKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6
S2V5OjpLZXkpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpLZXk6OmR1bXApOgor
ICAgICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpDaGVja1NwZWNpYWwpOgorICAgICAgICAo
SlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAgICAgKEpTQzo6QjM6OkNo
ZWNrU3BlY2lhbDo6aXNWYWxpZCk6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1NwZWNpYWw6Omdl
bmVyYXRlKToKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6ZHVtcEltcGwpOgorICAg
ICAgICAoSlNDOjpCMzo6Q2hlY2tTcGVjaWFsOjpkZWVwRHVtcEltcGwpOgorICAgICAgICAqIGIz
L0IzQ2hlY2tTcGVjaWFsLmg6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1NwZWNpYWw6OktleTo6
S2V5KToKKyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6S2V5OjpvcGVyYXRvcj09KToK
KyAgICAgICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6S2V5OjpvcGVyYXRvciE9KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNoZWNrU3BlY2lhbDo6S2V5OjpvcGNvZGUpOgorICAgICAgICAoSlNDOjpC
Mzo6Q2hlY2tTcGVjaWFsOjpLZXk6Om51bUFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6Q2hlY2tT
cGVjaWFsOjpLZXk6OnN0YWNrbWFwUm9sZSk6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1NwZWNp
YWw6OktleTo6aGFzaCk6CisgICAgICAgICogYjMvQjNDaGVja1ZhbHVlLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkNoZWNrVmFsdWU6On5DaGVja1ZhbHVlKToKKyAgICAgICAgKEpTQzo6QjM6OkNo
ZWNrVmFsdWU6OmNvbnZlcnRUb0FkZCk6CisgICAgICAgIChKU0M6OkIzOjpDaGVja1ZhbHVlOjpD
aGVja1ZhbHVlKToKKyAgICAgICAgKiBiMy9CM0NoZWNrVmFsdWUuaDoKKyAgICAgICAgKiBiMy9C
M0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmNoZWNr
TXVsQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpjaGVja05lZ0Nv
bnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6ZGl2Q29uc3RhbnQpOgor
ICAgICAgICAqIGIzL0IzQ29uc3QzMlZhbHVlLmg6CisgICAgICAgICogYjMvQjNDb25zdDY0VmFs
dWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjpjaGVja011bENvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6Y2hlY2tOZWdDb25zdGFudCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmRpdkNvbnN0YW50KToKKyAgICAgICAgKiBi
My9CM0NvbnN0NjRWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzTG93ZXJUb0Fpci5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZEJpbk9wKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzT3Bjb2RlLmg6
CisgICAgICAgICogYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6OkIz
OjpQYXRjaHBvaW50U3BlY2lhbDo6flBhdGNocG9pbnRTcGVjaWFsKToKKyAgICAgICAgKEpTQzo6
QjM6OlBhdGNocG9pbnRTcGVjaWFsOjpmb3JFYWNoQXJnKToKKyAgICAgICAgKEpTQzo6QjM6OlBh
dGNocG9pbnRTcGVjaWFsOjppc1ZhbGlkKToKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcDoKKyAgICAgICAgKiBiMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHA6CisgICAgICAgIChKU0M6
OkIzOjpTdGFja21hcFNwZWNpYWw6OmZvckVhY2hBcmdJbXBsKToKKyAgICAgICAgKiBiMy9CM1N0
YWNrbWFwU3BlY2lhbC5oOgorICAgICAgICAqIGIzL0IzU3RhY2ttYXBWYWx1ZS5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpTdGFja21hcFZhbHVlOjphcHBlbmQpOgorICAgICAgICAoSlNDOjpCMzo6
U3RhY2ttYXBWYWx1ZTo6YXBwZW5kU29tZVJlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6QjM6OlN0
YWNrbWFwVmFsdWU6OnNldENvbnN0cmFpbmVkQ2hpbGQpOgorICAgICAgICAqIGIzL0IzU3RhY2tt
YXBWYWx1ZS5oOgorICAgICAgICAqIGIzL0IzVmFsaWRhdGUuY3BwOgorICAgICAgICAqIGIzL0Iz
VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmNoZWNrTXVsQ29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmNoZWNrTmVnQ29uc3RhbnQpOgorICAgICAgICAoSlND
OjpCMzo6VmFsdWU6OmRpdkNvbnN0YW50KToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAg
ICAgICogYjMvYWlyL0FpckFsbG9jYXRlU3RhY2suY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWly
OjphbGxvY2F0ZVN0YWNrKToKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmNwcDoKKyAgICAgICAg
KFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogYjMvYWlyL0FpckFyZy5oOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzQW55VXNlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
QXJnOjppc0Vhcmx5VXNlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc0xhdGVVc2Up
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzRGVmKToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6QXJnOjpmb3JFYWNoVG1wKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6QXJnOjppc1Vz
ZSk6IERlbGV0ZWQuCisgICAgICAgICogYjMvYWlyL0FpckdlbmVyYXRlLmNwcDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6Z2VuZXJhdGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJJdGVyYXRlZFJl
Z2lzdGVyQ29hbGVzY2luZy5jcHA6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okl0ZXJhdGVkUmVn
aXN0ZXJDb2FsZXNjaW5nQWxsb2NhdG9yOjpidWlsZCk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6
Okl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nQWxsb2NhdG9yOjphbGxvY2F0ZSk6CisgICAgICAg
IChKU0M6OkIzOjpBaXI6Okl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nQWxsb2NhdG9yOjpJbnRl
cmZlcmVuY2VFZGdlOjpoYXNoKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6SXRlcmF0ZWRSZWdp
c3RlckNvYWxlc2NpbmdBbGxvY2F0b3I6OkludGVyZmVyZW5jZUVkZ2U6OmR1bXApOgorICAgICAg
ICAoSlNDOjpCMzo6QWlyOjphZGRTcGlsbEFuZEZpbGxUb1Byb2dyYW0pOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjppdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZ09uVHlwZSk6CisgICAgICAgIChK
U0M6OkIzOjpBaXI6Oml0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nKToKKyAgICAgICAgKiBiMy9h
aXIvQWlyTGl2ZW5lc3MuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TGl2ZW5lc3M6OkxpdmVu
ZXNzKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6TG9jYWxD
YWxjKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6bGl2ZSk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkxpdmVuZXNzOjpMb2NhbENhbGM6OnRha2VMaXZlKToK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TGl2ZW5lc3M6OkxvY2FsQ2FsYzo6ZXhlY3V0ZSk6Cisg
ICAgICAgICogYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL2Fpci9BaXJS
ZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6cmVwb3J0VXNl
ZFJlZ2lzdGVycyk6CisgICAgICAgICogYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpBaXI6OnNwaWxsRXZlcnl0aGluZyk6CisgICAgICAgICogYjMvdGVz
dGIzLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBcmcpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdE11bEFyZ1N0b3JlKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RNdWxBZGRBcmcpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdE11bEFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENv
bXBsZXgpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNpbXBsZUNoZWNrKToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RDaGVja0xlc3NUaGFuKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja01l
Z2FDb21ibyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tBZGRJbW0pOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdENoZWNrQWRkSW1tQ29tbXV0ZSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0
Q2hlY2tBZGRJbW1Tb21lUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRk
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja0FkZDY0KToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RDaGVja1N1YkltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tTdWJCYWRJbW0p
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrU3ViKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RDaGVja1N1YjY0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja05lZyk6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0Q2hlY2tOZWc2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tN
dWwpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrTXVsTWVtb3J5KToKKyAgICAgICAgKEpT
Qzo6QjM6OnRlc3RDaGVja011bDIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrTXVsNjQp
OgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAxNS0xMS0xNiAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYSB0eXBvIGluIEFpckl0ZXJh
dGVkUmVnaXN0ZXJDb2FsZXNjaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCShyZXZpc2lvbiAx
OTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MTEsNiArMTYxMSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIHNldDMyKHg4NkNvbmRpdGlvbihjb25kKSwgZGVzdCk7CiAgICAgfQogCisgICAg
dm9pZCBzZXRDYXJyeShSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBzZXQzMihYODZB
c3NlbWJsZXI6OkNvbmRpdGlvbkMsIGRlc3QpOworICAgIH0KKwogICAgIC8vIEludmVydCBhIHJl
bGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRj
LgogICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tT
cGVjaWFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVj
a1NwZWNpYWwuY3BwCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDaGVja1NwZWNpYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw5ICszOSw5IEBAIHVz
aW5nIG5hbWVzcGFjZSBBaXI7CiAKIG5hbWVzcGFjZSB7CiAKLXVuc2lnbmVkIG51bUIzQXJncyhJ
bnN0JiBpbnN0KQordW5zaWduZWQgbnVtQjNBcmdzKEIzOjpPcGNvZGUgb3Bjb2RlKQogewotICAg
IHN3aXRjaCAoaW5zdC5vcmlnaW4tPm9wY29kZSgpKSB7CisgICAgc3dpdGNoIChvcGNvZGUpIHsK
ICAgICBjYXNlIENoZWNrQWRkOgogICAgIGNhc2UgQ2hlY2tTdWI6CiAgICAgY2FzZSBDaGVja011
bDoKQEAgLTU0LDI4ICs1NCw0MCBAQCB1bnNpZ25lZCBudW1CM0FyZ3MoSW5zdCYgaW5zdCkKICAg
ICB9CiB9CiAKK3Vuc2lnbmVkIG51bUIzQXJncyhWYWx1ZSogdmFsdWUpCit7CisgICAgcmV0dXJu
IG51bUIzQXJncyh2YWx1ZS0+b3Bjb2RlKCkpOworfQorCit1bnNpZ25lZCBudW1CM0FyZ3MoSW5z
dCYgaW5zdCkKK3sKKyAgICByZXR1cm4gbnVtQjNBcmdzKGluc3Qub3JpZ2luKTsKK30KKwogfSAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIENoZWNrU3BlY2lhbDo6S2V5OjpLZXkoY29uc3QgSW5z
dCYgaW5zdCkKIHsKICAgICBtX29wY29kZSA9IGluc3Qub3Bjb2RlOwogICAgIG1fbnVtQXJncyA9
IGluc3QuYXJncy5zaXplKCk7CisgICAgbV9zdGFja21hcFJvbGUgPSBBcmc6OlVzZTsKIH0KIAog
dm9pZCBDaGVja1NwZWNpYWw6OktleTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewot
ICAgIG91dC5wcmludChtX29wY29kZSwgIigiLCBtX251bUFyZ3MsICIpIik7CisgICAgb3V0LnBy
aW50KG1fb3Bjb2RlLCAiKCIsIG1fbnVtQXJncywgIiwiLCBtX3N0YWNrbWFwUm9sZSwgIikiKTsK
IH0KIAotQ2hlY2tTcGVjaWFsOjpDaGVja1NwZWNpYWwoQWlyOjpPcGNvZGUgb3Bjb2RlLCB1bnNp
Z25lZCBudW1BcmdzKQorQ2hlY2tTcGVjaWFsOjpDaGVja1NwZWNpYWwoQWlyOjpPcGNvZGUgb3Bj
b2RlLCB1bnNpZ25lZCBudW1BcmdzLCBBcmc6OlJvbGUgc3RhY2ttYXBSb2xlKQogICAgIDogbV9j
aGVja09wY29kZShvcGNvZGUpCisgICAgLCBtX3N0YWNrbWFwUm9sZShzdGFja21hcFJvbGUpCiAg
ICAgLCBtX251bUNoZWNrQXJncyhudW1BcmdzKQogewogICAgIEFTU0VSVChpc1Rlcm1pbmFsKG9w
Y29kZSkpOwogfQogCiBDaGVja1NwZWNpYWw6OkNoZWNrU3BlY2lhbChjb25zdCBDaGVja1NwZWNp
YWw6OktleSYga2V5KQotICAgIDogQ2hlY2tTcGVjaWFsKGtleS5vcGNvZGUoKSwga2V5Lm51bUFy
Z3MoKSkKKyAgICA6IENoZWNrU3BlY2lhbChrZXkub3Bjb2RlKCksIGtleS5udW1BcmdzKCksIGtl
eS5zdGFja21hcFJvbGUoKSkKIHsKIH0KIApAQCAtMTA1LDcgKzExNyw3IEBAIHZvaWQgQ2hlY2tT
cGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QKICAgICBJbnN0IGhpZGRlbiA9IGhpZGRlbkJy
YW5jaChpbnN0KTsKICAgICBoaWRkZW4uZm9yRWFjaEFyZyhjYWxsYmFjayk7CiAgICAgY29tbWl0
SGlkZGVuQnJhbmNoKGluc3QsIGhpZGRlbik7Ci0gICAgZm9yRWFjaEFyZ0ltcGwobnVtQjNBcmdz
KGluc3QpLCBtX251bUNoZWNrQXJncyArIDEsIGluc3QsIGNhbGxiYWNrKTsKKyAgICBmb3JFYWNo
QXJnSW1wbChudW1CM0FyZ3MoaW5zdCksIG1fbnVtQ2hlY2tBcmdzICsgMSwgaW5zdCwgbV9zdGFj
a21hcFJvbGUsIGNhbGxiYWNrKTsKIH0KIAogYm9vbCBDaGVja1NwZWNpYWw6OmlzVmFsaWQoSW5z
dCYgaW5zdCkKQEAgLTEzMCwyOCArMTQyLDcxIEBAIENDYWxsSGVscGVyczo6SnVtcCBDaGVja1Nw
ZWNpYWw6OmdlbmVyYXQKICAgICBBU1NFUlQodmFsdWUpOwogCiAgICAgVmVjdG9yPFZhbHVlUmVw
PiByZXBzOwotICAgIGlmIChpc0NoZWNrTWF0aCh2YWx1ZS0+b3Bjb2RlKCkpKSB7Ci0gICAgICAg
IGlmICh2YWx1ZS0+b3Bjb2RlKCkgPT0gQ2hlY2tNdWwpIHsKLSAgICAgICAgICAgIHJlcHMuYXBw
ZW5kKHJlcEZvckFyZygqY29udGV4dC5jb2RlLCBpbnN0LmFyZ3NbMl0pKTsKLSAgICAgICAgICAg
IHJlcHMuYXBwZW5kKHJlcEZvckFyZygqY29udGV4dC5jb2RlLCBpbnN0LmFyZ3NbM10pKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh2YWx1ZS0+b3Bjb2RlKCkgPT0gQ2hlY2tT
dWIgJiYgdmFsdWUtPmNoaWxkKDApLT5pc0ludCgwKSkKLSAgICAgICAgICAgICAgICByZXBzLmFw
cGVuZChWYWx1ZVJlcDo6Y29uc3RhbnQoMCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHJlcHMuYXBwZW5kKHJlcEZvckFyZygqY29udGV4dC5jb2RlLCBpbnN0LmFyZ3NbM10p
KTsKLSAgICAgICAgICAgIHJlcHMuYXBwZW5kKHJlcEZvckFyZygqY29udGV4dC5jb2RlLCBpbnN0
LmFyZ3NbMl0pKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVCh2YWx1
ZS0+b3Bjb2RlKCkgPT0gQ2hlY2spOwotICAgICAgICByZXBzLmFwcGVuZChWYWx1ZVJlcDo6Y29u
c3RhbnQoMSkpOwotICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1CM0FyZ3ModmFsdWUp
OyBpLS07KQorICAgICAgICByZXBzLmFwcGVuZChWYWx1ZVJlcCgpKTsKIAogICAgIGFwcGVuZFJl
cHNJbXBsKGNvbnRleHQsIG1fbnVtQ2hlY2tBcmdzICsgMSwgaW5zdCwgcmVwcyk7Ci0gICAgCisK
KyAgICAvLyBTZXQgYXNpZGUgdGhlIGFyZ3MgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdW5kb2luZyB0
aGUgb3BlcmF0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0bworICAgIC8vIGNh
cHR1cmUgYWxsIG9mIGluc3QgaW4gdGhlIGNsb3N1cmUgYmVsb3cuCisgICAgVmVjdG9yPEFyZywg
Mz4gYXJnczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9udW1DaGVja0FyZ3M7ICsr
aSkKKyAgICAgICAgYXJncy5hcHBlbmQoaW5zdC5hcmdzWzEgKyBpXSk7CisKICAgICBjb250ZXh0
LmxhdGVQYXRocy5hcHBlbmQoCiAgICAgICAgIGNyZWF0ZVNoYXJlZFRhc2s8R2VuZXJhdGlvbkNv
bnRleHQ6OkxhdGVQYXRoRnVuY3Rpb24+KAotICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMm
IGppdCwgR2VuZXJhdGlvbkNvbnRleHQmKSB7CisgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVy
cyYgaml0LCBHZW5lcmF0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICAgICAgICAgIGZh
aWwubGluaygmaml0KTsKKworICAgICAgICAgICAgICAgIC8vIElmIG5lY2Vzc2FyeSwgdW5kbyB0
aGUgb3BlcmF0aW9uLgorICAgICAgICAgICAgICAgIHN3aXRjaCAobV9jaGVja09wY29kZSkgewor
ICAgICAgICAgICAgICAgIGNhc2UgQnJhbmNoQWRkMzI6CisgICAgICAgICAgICAgICAgICAgIGlm
IChhcmdzWzFdID09IGFyZ3NbMl0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgdWdseSwgYnV0IHRoYXQncyBmaW5lIC0gd2Ugd29uJ3QgaGF2ZSB0byBkbyB0aGlzIHZlcnkg
b2Z0ZW4uCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYXJnc1sxXS5pc0dQUigpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IGFyZ3NbMV0uZ3ByKCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IENDYWxsSGVscGVy
czo6c2VsZWN0U2NyYXRjaEdQUih2YWx1ZUdQUik7CisgICAgICAgICAgICAgICAgICAgICAgICBq
aXQucHVzaFRvU2F2ZShzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5z
ZXRDYXJyeShzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5sc2hpZnQz
MihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigzMSksIHNjcmF0Y2hHUFIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgaml0LnVyc2hpZnQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMigx
KSwgdmFsdWVHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaEdQ
UiwgdmFsdWVHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShz
Y3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEluc3QoU3ViMzIsIG51bGxwdHIsIGFyZ3Nb
MV0sIGFyZ3NbMl0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQnJhbmNoQWRkNjQ6CisgICAgICAgICAgICAg
ICAgICAgIGlmIChhcmdzWzFdID09IGFyZ3NbMl0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIFRoaXMgaXMgdWdseSwgYnV0IHRoYXQncyBmaW5lIC0gd2Ugd29uJ3QgaGF2ZSB0byBkbyB0
aGlzIHZlcnkgb2Z0ZW4uCisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoYXJnc1sxXS5p
c0dQUigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEdQUlJlZyB2YWx1ZUdQUiA9IGFyZ3Nb
MV0uZ3ByKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEND
YWxsSGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUih2YWx1ZUdQUik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBqaXQucHVzaFRvU2F2ZShzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5zZXRDYXJyeShzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGpp
dC5sc2hpZnQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2MyksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaml0LnVyc2hpZnQ2NChDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW0zMigxKSwgdmFsdWVHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0Lm9yNjQo
c2NyYXRjaEdQUiwgdmFsdWVHUFIpOworICAgICAgICAgICAgICAgICAgICAgICAgaml0LnBvcFRv
UmVzdG9yZShzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEluc3QoU3ViNjQsIG51bGxw
dHIsIGFyZ3NbMV0sIGFyZ3NbMl0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQnJhbmNoU3ViMzI6CisgICAg
ICAgICAgICAgICAgICAgIEluc3QoQWRkMzIsIG51bGxwdHIsIGFyZ3NbMV0sIGFyZ3NbMl0pLmdl
bmVyYXRlKGppdCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgQnJhbmNoU3ViNjQ6CisgICAgICAgICAgICAgICAgICAgIEluc3QoQWRk
NjQsIG51bGxwdHIsIGFyZ3NbMV0sIGFyZ3NbMl0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQnJhbmNoTmVn
MzI6CisgICAgICAgICAgICAgICAgICAgIEluc3QoTmVnMzIsIG51bGxwdHIsIGFyZ3NbMV0pLmdl
bmVyYXRlKGppdCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgQnJhbmNoTmVnNjQ6CisgICAgICAgICAgICAgICAgICAgIEluc3QoTmVn
NjQsIG51bGxwdHIsIGFyZ3NbMV0pLmdlbmVyYXRlKGppdCwgY29udGV4dCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMgcGFyYW1zOwogICAgICAgICAgICAg
ICAgIHBhcmFtcy52YWx1ZSA9IHZhbHVlOwpAQCAtMTY2LDcgKzIyMSw3IEBAIENDYWxsSGVscGVy
czo6SnVtcCBDaGVja1NwZWNpYWw6OmdlbmVyYXQKIAogdm9pZCBDaGVja1NwZWNpYWw6OmR1bXBJ
bXBsKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KG1fY2hlY2tPcGNv
ZGUsICIoIiwgbV9udW1DaGVja0FyZ3MsICIpIik7CisgICAgb3V0LnByaW50KG1fY2hlY2tPcGNv
ZGUsICIoIiwgbV9udW1DaGVja0FyZ3MsICIsIiwgbV9zdGFja21hcFJvbGUsICIpIik7CiB9CiAK
IHZvaWQgQ2hlY2tTcGVjaWFsOjpkZWVwRHVtcEltcGwoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NoZWNrU3BlY2lhbC5oCShyZXZpc2lv
biAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1NwZWNpYWwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkKIAor
I2luY2x1ZGUgIkFpckFyZy5oIgogI2luY2x1ZGUgIkFpck9wY29kZS5oIgogI2luY2x1ZGUgIkIz
U3RhY2ttYXBTcGVjaWFsLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTU2LDEyICs1
NywxNCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBLZXkoKQogICAgICAgICAgICAg
OiBtX29wY29kZShBaXI6Ok5vcCkKKyAgICAgICAgICAgICwgbV9zdGFja21hcFJvbGUoQWlyOjpB
cmc6OlVzZSkKICAgICAgICAgICAgICwgbV9udW1BcmdzKDApCiAgICAgICAgIHsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgS2V5KEFpcjo6T3Bjb2RlIG9wY29kZSwgdW5zaWduZWQgbnVt
QXJncykKKyAgICAgICAgS2V5KEFpcjo6T3Bjb2RlIG9wY29kZSwgdW5zaWduZWQgbnVtQXJncywg
QWlyOjpBcmc6OlJvbGUgc3RhY2ttYXBSb2xlID0gQWlyOjpBcmc6OlVzZSkKICAgICAgICAgICAg
IDogbV9vcGNvZGUob3Bjb2RlKQorICAgICAgICAgICAgLCBtX3N0YWNrbWFwUm9sZShzdGFja21h
cFJvbGUpCiAgICAgICAgICAgICAsIG1fbnVtQXJncyhudW1BcmdzKQogICAgICAgICB7CiAgICAg
ICAgIH0KQEAgLTcxLDcgKzc0LDggQEAgcHVibGljOgogICAgICAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgS2V5JiBvdGhlcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1f
b3Bjb2RlID09IG90aGVyLm1fb3Bjb2RlCi0gICAgICAgICAgICAgICAgJiYgbV9udW1BcmdzID09
IG90aGVyLm1fbnVtQXJnczsKKyAgICAgICAgICAgICAgICAmJiBtX251bUFyZ3MgPT0gb3RoZXIu
bV9udW1BcmdzCisgICAgICAgICAgICAgICAgJiYgbV9zdGFja21hcFJvbGUgPT0gb3RoZXIubV9z
dGFja21hcFJvbGU7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
S2V5JiBvdGhlcikgY29uc3QKQEAgLTgzLDExICs4NywxMyBAQCBwdWJsaWM6CiAKICAgICAgICAg
QWlyOjpPcGNvZGUgb3Bjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9vcGNvZGU7IH0KICAgICAgICAg
dW5zaWduZWQgbnVtQXJncygpIGNvbnN0IHsgcmV0dXJuIG1fbnVtQXJnczsgfQorICAgICAgICBB
aXI6OkFyZzo6Um9sZSBzdGFja21hcFJvbGUoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrbWFwUm9s
ZTsgfQogCiAgICAgICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIAogICAg
ICAgICBLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQogICAgICAgICAgICAgOiBt
X29wY29kZShBaXI6Ok5vcCkKKyAgICAgICAgICAgICwgbV9zdGFja21hcFJvbGUoQWlyOjpBcmc6
OlVzZSkKICAgICAgICAgICAgICwgbV9udW1BcmdzKDEpCiAgICAgICAgIHsKICAgICAgICAgfQpA
QCAtMTAwLDE1ICsxMDYsMTYgQEAgcHVibGljOgogICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3QKICAgICAgICAgewogICAgICAgICAgICAgLy8gU2VyaW91c2x5LCB3ZSBkb24ndCBuZWVkIHRv
IGJlIHNtYXJ0IGhlcmUuIEl0IGp1c3QgZG9lc24ndCBtYXR0ZXIuCi0gICAgICAgICAgICByZXR1
cm4gbV9vcGNvZGUgKyBtX251bUFyZ3M7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGUgKyBt
X251bUFyZ3MgKyBtX3N0YWNrbWFwUm9sZTsKICAgICAgICAgfQogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBtX29wY29kZTsKKyAgICAgICAgQWlyOjpBcmc6OlJv
bGUgbV9zdGFja21hcFJvbGU7CiAgICAgICAgIHVuc2lnbmVkIG1fbnVtQXJnczsKICAgICB9Owog
ICAgIAotICAgIENoZWNrU3BlY2lhbChBaXI6Ok9wY29kZSwgdW5zaWduZWQgbnVtQXJncyk7Cisg
ICAgQ2hlY2tTcGVjaWFsKEFpcjo6T3Bjb2RlLCB1bnNpZ25lZCBudW1BcmdzLCBBaXI6OkFyZzo6
Um9sZSBzdGFja21hcFJvbGUgPSBBaXI6OkFyZzo6VXNlKTsKICAgICBDaGVja1NwZWNpYWwoY29u
c3QgS2V5Jik7CiAgICAgfkNoZWNrU3BlY2lhbCgpOwogCkBAIC0xMzMsNiArMTQwLDcgQEAgcHJv
dGVjdGVkOgogCiBwcml2YXRlOgogICAgIEFpcjo6T3Bjb2RlIG1fY2hlY2tPcGNvZGU7CisgICAg
QWlyOjpBcmc6OlJvbGUgbV9zdGFja21hcFJvbGU7CiAgICAgdW5zaWduZWQgbV9udW1DaGVja0Fy
Z3M7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1ZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1ZhbHVlLmNw
cAkocmV2aXNpb24gMTkyNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDEyIEBAIENoZWNrVmFsdWU6On5D
aGVja1ZhbHVlKCkKIHsKIH0KIAordm9pZCBDaGVja1ZhbHVlOjpjb252ZXJ0VG9BZGQoKQorewor
ICAgIFJFTEVBU0VfQVNTRVJUKG9wY29kZSgpID09IENoZWNrQWRkIHx8IG9wY29kZSgpID09IENo
ZWNrU3ViIHx8IG9wY29kZSgpID09IENoZWNrTXVsKTsKKyAgICBtX29wY29kZSA9IENoZWNrQWRk
OworfQorCiAvLyBVc2UgdGhpcyBmb3JtIGZvciBDaGVja0FkZCwgQ2hlY2tTdWIsIGFuZCBDaGVj
a011bC4KIENoZWNrVmFsdWU6OkNoZWNrVmFsdWUodW5zaWduZWQgaW5kZXgsIE9wY29kZSBvcGNv
ZGUsIE9yaWdpbiBvcmlnaW4sIFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCiAgICAgOiBTdGFj
a21hcFZhbHVlKGluZGV4LCBDaGVja2VkT3Bjb2RlLCBvcGNvZGUsIGxlZnQtPnR5cGUoKSwgb3Jp
Z2luKQpAQCAtNDEsOCArNDcsOCBAQCBDaGVja1ZhbHVlOjpDaGVja1ZhbHVlKHVuc2lnbmVkIGlu
ZGV4LCBPCiAgICAgQVNTRVJUKEIzOjppc0ludCh0eXBlKCkpKTsKICAgICBBU1NFUlQobGVmdC0+
dHlwZSgpID09IHJpZ2h0LT50eXBlKCkpOwogICAgIEFTU0VSVChvcGNvZGUgPT0gQ2hlY2tBZGQg
fHwgb3Bjb2RlID09IENoZWNrU3ViIHx8IG9wY29kZSA9PSBDaGVja011bCk7Ci0gICAgYXBwZW5k
KENvbnN0cmFpbmVkVmFsdWUobGVmdCwgVmFsdWVSZXA6OlNvbWVSZWdpc3RlcikpOwotICAgIGFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKHJpZ2h0LCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Cisg
ICAgYXBwZW5kKENvbnN0cmFpbmVkVmFsdWUobGVmdCwgVmFsdWVSZXA6OkFueSkpOworICAgIGFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKHJpZ2h0LCBWYWx1ZVJlcDo6QW55KSk7CiB9CiAKIC8vIFVz
ZSB0aGlzIGZvcm0gZm9yIENoZWNrLgpAQCAtNTAsNyArNTYsNyBAQCBDaGVja1ZhbHVlOjpDaGVj
a1ZhbHVlKHVuc2lnbmVkIGluZGV4LCBPCiAgICAgOiBTdGFja21hcFZhbHVlKGluZGV4LCBDaGVj
a2VkT3Bjb2RlLCBvcGNvZGUsIFZvaWQsIG9yaWdpbikKIHsKICAgICBBU1NFUlQob3Bjb2RlID09
IENoZWNrKTsKLSAgICBhcHBlbmQocHJlZGljYXRlKTsKKyAgICBhcHBlbmQoQ29uc3RyYWluZWRW
YWx1ZShwcmVkaWNhdGUsIFZhbHVlUmVwOjpBbnkpKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ2hlY2tWYWx1ZS5oCShyZXZp
c2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDaGVja1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogCiAgICAgfkNoZWNrVmFs
dWUoKTsKIAorICAgIHZvaWQgY29udmVydFRvQWRkKCk7CisKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIFByb2NlZHVyZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3QzMlZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdDMyVmFsdWUuY3BwCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCwxMyBA
QCBWYWx1ZSogQ29uc3QzMlZhbHVlOjpjaGVja011bENvbnN0YW50KFByCiAgICAgcmV0dXJuIHBy
b2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2luKCksIHJlc3VsdC51bnNhZmVHZXQoKSk7CiB9CiAK
K1ZhbHVlKiBDb25zdDMyVmFsdWU6OmNoZWNrTmVnQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBj
b25zdAoreworICAgIGlmIChtX3ZhbHVlID09IC1tX3ZhbHVlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICByZXR1cm4gbmVnQ29uc3RhbnQocHJvYyk7Cit9CisKIFZhbHVlKiBDb25zdDMy
VmFsdWU6OmRpdkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaAkocmV2aXNpb24gMTkyNTA3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgcHVibGljOgogICAgIFZhbHVlKiBjaGVja0FkZENvbnN0YW50KFByb2NlZHVy
ZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGNoZWNr
U3ViQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWYWx1ZSogY2hlY2tNdWxDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSog
b3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBjaGVja05lZ0NvbnN0YW50KFByb2Nl
ZHVyZSYpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBkaXZDb25zdGFudChQcm9jZWR1cmUm
LCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBiaXRBbmRD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3Qgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0
VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
NjRWYWx1ZS5jcHAJKHJldmlzaW9uIDE5MjUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0NvbnN0NjRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDEzIEBAIFZh
bHVlKiBDb25zdDY0VmFsdWU6OmNoZWNrTXVsQ29uc3RhbnQoUHIKICAgICByZXR1cm4gcHJvYy5h
ZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4oKSwgcmVzdWx0LnVuc2FmZUdldCgpKTsKIH0KIAorVmFs
dWUqIENvbnN0NjRWYWx1ZTo6Y2hlY2tOZWdDb25zdGFudChQcm9jZWR1cmUmIHByb2MpIGNvbnN0
Cit7CisgICAgaWYgKG1fdmFsdWUgPT0gLW1fdmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBuZWdDb25zdGFudChwcm9jKTsKK30KKwogVmFsdWUqIENvbnN0NjRWYWx1
ZTo6ZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0
CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGNoZWNrQWRkQ29uc3RhbnQoUHJvY2VkdXJlJiwg
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogY2hlY2tTdWJD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZhbHVlKiBjaGVja011bENvbnN0YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGNoZWNrTmVnQ29uc3RhbnQoUHJvY2VkdXJl
JikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGRpdkNvbnN0YW50KFByb2NlZHVyZSYsIGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGJpdEFuZENvbnN0
YW50KFByb2NlZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
VmFsdWUqIGJpdE9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dCBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIu
Y3BwCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dl
clRvQWlyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcwLDcgKzU3MCw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCwgd2UgcHJlZmVyIHZlcnNpb25zIG9mIHRoZSBvcGVy
YXRpb24gdGhhdCBoYXZlIGEgZnVzZWQgbG9hZCBvciBhbiBpbW1lZGlhdGUKICAgICAgICAgLy8g
b3ZlciB0aHJlZSBvcGVyYW5kIGZvcm1zLgotICAgICAgICAKKwogICAgICAgICBpZiAoY29tbXV0
YXRpdml0eSA9PSBDb21tdXRhdGl2ZSkgewogICAgICAgICAgICAgQXJnUHJvbWlzZSBsZWZ0QWRk
ciA9IGxvYWRQcm9taXNlKGxlZnQpOwogICAgICAgICAgICAgaWYgKGlzVmFsaWRGb3JtKG9wY29k
ZSwgbGVmdEFkZHIua2luZCgpLCBBcmc6OlRtcCkpIHsKQEAgLTU5OCw2ICs1OTgsMTAgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIC8vIEZJWE1F
OiBJZiB3ZSdyZSBnb2luZyB0byB1c2UgYSB0d28tb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIHRo
ZSBvcGVyYW5kIGlzIGNvbW11dGF0aXZlLCB3ZQorICAgICAgICAvLyBzaG91bGQgY29hbGVzY2Ug
dGhlIHJlc3VsdCB3aXRoIHRoZSBvcGVyYW5kIHRoYXQgaXMga2lsbGVkLgorICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUxMzIxCisgICAgICAgIAog
ICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBlKG1fdmFsdWUtPnR5cGUoKSksIHRtcChs
ZWZ0KSwgcmVzdWx0KTsKICAgICAgICAgYXBwZW5kKG9wY29kZSwgdG1wKHJpZ2h0KSwgcmVzdWx0
KTsKICAgICB9CkBAIC0xNTMwLDEwICsxNTM0LDYgQEAgcHJpdmF0ZToKIAogICAgICAgICBjYXNl
IENoZWNrQWRkOgogICAgICAgICBjYXNlIENoZWNrU3ViOiB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogTWFrZSB0aGlzIHN1cHBvcnQgY29tbXV0YXRpdml0eS4gVGhhdCB3aWxsIGxldCB1cyBsZXZl
cmFnZSBtb3JlIGluc3RydWN0aW9uIGZvcm1zCi0gICAgICAgICAgICAvLyBhbmQgaXQgbGV0IHVz
IGNvbW11dGUgdG8gbWF4aW1pemUgY29hbGVzY2luZy4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMTQKLQogICAgICAgICAgICAgQ2hl
Y2tWYWx1ZSogY2hlY2tWYWx1ZSA9IG1fdmFsdWUtPmFzPENoZWNrVmFsdWU+KCk7CiAKICAgICAg
ICAgICAgIFZhbHVlKiBsZWZ0ID0gY2hlY2tWYWx1ZS0+Y2hpbGQoMCk7CkBAIC0xNTQzLDcgKzE1
NDMsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBIYW5kbGUgY2hlY2tlZCBuZWdhdGlv
bi4KICAgICAgICAgICAgIGlmIChjaGVja1ZhbHVlLT5vcGNvZGUoKSA9PSBDaGVja1N1YiAmJiBs
ZWZ0LT5pc0ludCgwKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5
cGUoY2hlY2tWYWx1ZS0+dHlwZSgpKSwgdG1wKHJpZ2h0KSwgcmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICBhcHBlbmQoTW92ZSwgdG1wKHJpZ2h0KSwgcmVzdWx0KTsKIAogICAgICAgICAgICAgICAg
IEFpcjo6T3Bjb2RlIG9wY29kZSA9CiAgICAgICAgICAgICAgICAgICAgIG9wY29kZUZvclR5cGUo
QnJhbmNoTmVnMzIsIEJyYW5jaE5lZzY0LCBBaXI6Ok9vcHMsIGNoZWNrVmFsdWUtPnR5cGUoKSk7
CkBAIC0xNTU5LDM5ICsxNTU5LDY3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhcHBlbmQocmVsYXhlZE1vdmVGb3JUeXBl
KG1fdmFsdWUtPnR5cGUoKSksIHRtcChsZWZ0KSwgcmVzdWx0KTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBVc2UgY29tbXV0YXRpdml0eSBvZiBDaGVja0FkZCB0byBpbmNyZWFzZSB0aGUgbGlrZWxp
aG9vZCBvZiBjb2FsZXNjaW5nLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MTMyMQorCisgICAgICAgICAgICBhcHBlbmQoTW92ZSwgdG1w
KGxlZnQpLCByZXN1bHQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBaXI6Ok9wY29kZSBv
cGNvZGUgPSBBaXI6Ok9vcHM7Ci0gICAgICAgICAgICBDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBu
dWxscHRyOwogICAgICAgICAgICAgc3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAg
ICAgICAgY2FzZSBDaGVja0FkZDoKICAgICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVGb3JU
eXBlKEJyYW5jaEFkZDMyLCBCcmFuY2hBZGQ2NCwgQWlyOjpPb3BzLCBtX3ZhbHVlLT50eXBlKCkp
OwotICAgICAgICAgICAgICAgIHNwZWNpYWwgPSBlbnN1cmVDaGVja1NwZWNpYWwob3Bjb2RlLCAz
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdWI6CiAg
ICAgICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hTdWIzMiwgQnJhbmNo
U3ViNjQsIEFpcjo6T29wcywgbV92YWx1ZS0+dHlwZSgpKTsKLSAgICAgICAgICAgICAgICBzcGVj
aWFsID0gZW5zdXJlQ2hlY2tTcGVjaWFsKG9wY29kZSwgMyk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIEluc3QgaW5zdChQYXRjaCwgY2hlY2tWYWx1ZSwgQXJnOjpzcGVjaWFsKHNw
ZWNpYWwpKTsKLQotICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZChBcmc6OnJlc0NvbmQoTWFj
cm9Bc3NlbWJsZXI6Ok92ZXJmbG93KSk7Ci0KICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3Vs
ZCBiZSBncmVhdCB0byBmdXNlIExvYWRzIGludG8gdGhlc2UuIFdlIGN1cnJlbnRseSBkb24ndCBk
byBpdCBiZWNhdXNlIHRoZQogICAgICAgICAgICAgLy8gcnVsZSBmb3Igc3RhY2ttYXBzIGlzIHRo
YXQgYWxsIGFkZHJlc3NlcyBhcmUganVzdCBzdGFjayBhZGRyZXNzZXMuIE1heWJlIHdlIGNvdWxk
IHJlbGF4CiAgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgaGVyZS4KICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMjgKLSAgICAgICAgICAg
IAorCisgICAgICAgICAgICBBcmcgc291cmNlOwogICAgICAgICAgICAgaWYgKGltbShyaWdodCkg
JiYgaXNWYWxpZEZvcm0ob3Bjb2RlLCBBcmc6OlJlc0NvbmQsIEFyZzo6SW1tLCBBcmc6OlRtcCkp
Ci0gICAgICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZChpbW0ocmlnaHQpKTsKKyAgICAgICAg
ICAgICAgICBzb3VyY2UgPSBpbW0ocmlnaHQpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGluc3QuYXJncy5hcHBlbmQodG1wKHJpZ2h0KSk7Ci0gICAgICAgICAgICBpbnN0LmFy
Z3MuYXBwZW5kKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgc291cmNlID0gdG1wKHJpZ2h0KTsK
KworICAgICAgICAgICAgLy8gVGhlcmUgaXMgYSByZWFsbHkgaGlsYXJpb3VzIGNhc2UgdGhhdCBh
cmlzZXMgd2hlbiB3ZSBkbyBCcmFuY2hBZGQzMigleCwgJXgpLiBXZSB3b24ndCBlbWl0CisgICAg
ICAgICAgICAvLyBzdWNoIGNvZGUsIGJ1dCB0aGUgY29hbGVzY2luZyBpbiBvdXIgcmVnaXN0ZXIg
YWxsb2NhdG9yIGFsc28gZG9lcyBjb3B5IHByb3BhZ2F0aW9uLCBzbworICAgICAgICAgICAgLy8g
YWx0aG91Z2ggd2UgZW1pdDoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICAgTW92
ZSAldG1wMSwgJXRtcDIKKyAgICAgICAgICAgIC8vICAgICBCcmFuY2hBZGQzMiAldG1wMSwgJXRt
cDIKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUgcmVnaXN0ZXIgYWxsb2NhdG9y
IG1heSB0dXJuIHRoaXMgaW50bzoKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICAg
QnJhbmNoQWRkMzIgJXJheCwgJXJheAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEN1
cnJlbnRseSB3ZSBoYW5kbGUgdGhpcyBieSBlbnN1cmluZyB0aGF0IGV2ZW4gdGhpcyBraW5kIG9m
IGFkZGl0aW9uIGNhbiBiZSB1bmRvbmUuIFdlIGNhbgorICAgICAgICAgICAgLy8gdW5kbyBpdCBi
eSB1c2luZyB0aGUgY2FycnkgZmxhZy4gSXQncyB0ZW1wdGluZyB0byBnZXQgcmlkIG9mIHRoYXQg
Y29kZSBhbmQganVzdCAiZml4IiB0aGlzCisgICAgICAgICAgICAvLyBoZXJlIGJ5IGZvcmNpbmcg
TGF0ZVVzZSBvbiB0aGUgc3RhY2ttYXAuIElmIHdlIGRpZCB0aGF0IHVuY29uZGl0aW9uYWxseSwg
d2UnZCBsb3NlIGEgbG90IG9mCisgICAgICAgICAgICAvLyBwZXJmb3JtYW5jZS4gU28gaXQncyB0
ZW1wdGluZyB0byBkbyBpdCBvbmx5IGlmIGxlZnQgPT0gcmlnaHQuIEJ1dCB0aGF0IGNyZWF0ZXMg
YW4gYXdrd2FyZAorICAgICAgICAgICAgLy8gY29uc3RyYWludCBvbiBBaXI6IGl0IG1lYW5zIHRo
YXQgQWlyIHdvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIGRvIGFueSBjb3B5IHByb3BhZ2F0aW9uLgor
ICAgICAgICAgICAgLy8gTm90aWNlIHRoYXQgdGhlICVyYXgsJXJheCBzaXR1YXRpb24gaGFwcGVu
ZWQgYWZ0ZXIgQWlyIGNvcHktcHJvcGFnYXRlZCB0aGUgTW92ZSB3ZSBhcmUKKyAgICAgICAgICAg
IC8vIGVtaXR0aW5nLiBXZSBrbm93IHRoYXQgY29weS1wcm9wYWdhdGluZyBvdmVyIHRoYXQgTW92
ZSBjYXVzZXMgYWRkLXRvLXNlbGYuIEJ1dCB3aGF0IGlmIHdlCisgICAgICAgICAgICAvLyBlbWl0
IHNvbWV0aGluZyBsaWtlIGEgTW92ZSAtIG9yIGV2ZW4gZG8gb3RoZXIga2luZHMgb2YgY29weS1w
cm9wYWdhdGlvbiBvbiB0bXAncyAtCisgICAgICAgICAgICAvLyBzb21ld2hlcmUgZWxzZSBpbiB0
aGlzIGNvZGUuIFRoZSBhZGQtdG8tc2VsZiBzaXR1YXRpb24gbWF5IG9ubHkgZW1lcmdlIGFmdGVy
IHNvbWUgb3RoZXIgQWlyCisgICAgICAgICAgICAvLyBvcHRpbWl6YXRpb25zIHJlbW92ZSBvdGhl
ciBNb3ZlJ3Mgb3IgaWRlbnRpdHktbGlrZSBvcGVyYXRpb25zLiBUaGF0J3Mgd2h5IHdlIGRvbid0
IHVzZQorICAgICAgICAgICAgLy8gTGF0ZVVzZSBoZXJlIHRvIHRha2UgY2FyZSBvZiBhZGQtdG8t
c2VsZi4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ2hlY2tTcGVjaWFsKiBzcGVjaWFsID0g
ZW5zdXJlQ2hlY2tTcGVjaWFsKG9wY29kZSwgMyk7CiAgICAgICAgICAgICAKKyAgICAgICAgICAg
IEluc3QgaW5zdChQYXRjaCwgY2hlY2tWYWx1ZSwgQXJnOjpzcGVjaWFsKHNwZWNpYWwpKTsKKwor
ICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZChBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6
Ok92ZXJmbG93KSk7CisKKyAgICAgICAgICAgIGluc3QuYXJncy5hcHBlbmQoc291cmNlKTsKKyAg
ICAgICAgICAgIGluc3QuYXJncy5hcHBlbmQocmVzdWx0KTsKKwogICAgICAgICAgICAgZmlsbFN0
YWNrbWFwKGluc3QsIGNoZWNrVmFsdWUsIDIpOwogCiAgICAgICAgICAgICBtX2luc3RzLmxhc3Qo
KS5hcHBlbmQoV1RGOjptb3ZlKGluc3QpKTsKQEAgLTE1OTksMTAgKzE2MjcsNiBAQCBwcml2YXRl
OgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBDaGVja011bDogewotICAgICAgICAgICAgLy8g
SGFuZGxlIG11bHRpcGxpY2F0aW9uIHNlcGFyYXRlbHkuIE11bHRpcGxpY2F0aW9uIGlzIGhhcmQg
YmVjYXVzZSB3ZSBoYXZlIHRvIHByZXNlcnZlCi0gICAgICAgICAgICAvLyBib3RoIGlucHV0cy4g
VGhpcyByZXF1aXJlcyB1c2luZyB0aHJlZS1vcGVyYW5kIG11bHRpcGxpY2F0aW9uLCBldmVuIG9u
IHBsYXRmb3JtcyB3aGVyZQotICAgICAgICAgICAgLy8gdGhpcyByZXF1aXJlcyBhbiBhZGRpdGlv
bmFsIE1vdmUuCi0KICAgICAgICAgICAgIENoZWNrVmFsdWUqIGNoZWNrVmFsdWUgPSBtX3ZhbHVl
LT5hczxDaGVja1ZhbHVlPigpOwogCiAgICAgICAgICAgICBWYWx1ZSogbGVmdCA9IGNoZWNrVmFs
dWUtPmNoaWxkKDApOwpAQCAtMTYxMiwxNCArMTYzNiwxNSBAQCBwcml2YXRlOgogCiAgICAgICAg
ICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPQogICAgICAgICAgICAgICAgIG9wY29kZUZvclR5cGUo
QnJhbmNoTXVsMzIsIEJyYW5jaE11bDY0LCBBaXI6Ok9vcHMsIGNoZWNrVmFsdWUtPnR5cGUoKSk7
Ci0gICAgICAgICAgICBDaGVja1NwZWNpYWwqIHNwZWNpYWwgPSBlbnN1cmVDaGVja1NwZWNpYWwo
b3Bjb2RlLCA0KTsKKyAgICAgICAgICAgIENoZWNrU3BlY2lhbCogc3BlY2lhbCA9IGVuc3VyZUNo
ZWNrU3BlY2lhbChvcGNvZGUsIDMsIEFyZzo6TGF0ZVVzZSk7CiAKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgaW1tZWRpYXRlcy4KICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMzAKIAorICAgICAgICAgICAgYXBwZW5kKE1vdmUs
IHRtcChsZWZ0KSwgcmVzdWx0KTsKKwogICAgICAgICAgICAgSW5zdCBpbnN0KFBhdGNoLCBjaGVj
a1ZhbHVlLCBBcmc6OnNwZWNpYWwoc3BlY2lhbCkpOwogICAgICAgICAgICAgaW5zdC5hcmdzLmFw
cGVuZChBcmc6OnJlc0NvbmQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93KSk7Ci0gICAgICAgICAg
ICBpbnN0LmFyZ3MuYXBwZW5kKHRtcChsZWZ0KSk7CiAgICAgICAgICAgICBpbnN0LmFyZ3MuYXBw
ZW5kKHRtcChyaWdodCkpOwogICAgICAgICAgICAgaW5zdC5hcmdzLmFwcGVuZChyZXN1bHQpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuaAkocmV2aXNpb24gMTkyNTA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2Myw2ICsxNjMsMTAgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBjYWxsYmFj
a3MuIFlldCwgdGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyB2YWxpZCBldmVuIGlmIHRoZXkgYXJlIGRp
ZmZlcmVudCBiZWNhdXNlIHdlIGtub3cgdGhhdAogICAgIC8vIGFmdGVyIHRoZSBmaXJzdCBDaGVj
a0FkZCBleGVjdXRlcywgdGhlIHNlY29uZCBDaGVja0FkZCBjb3VsZCBub3QgaGF2ZSBwb3NzaWJs
eSB0YWtlbiBzbG93CiAgICAgLy8gcGF0aC4gVGhlcmVmb3JlLCB0aGUgc2Vjb25kIENoZWNrQWRk
J3MgY2FsbGJhY2sgaXMgaXJyZWxldmFudC4KKyAgICAvLworICAgIC8vIE5vdGUgdGhhdCB0aGUg
Zmlyc3QgdHdvIGNoaWxkcmVuIG9mIHRoZXNlIG9wZXJhdGlvbnMgaGF2ZSBWYWx1ZVJlcCdzLCBi
b3RoIGFzIGlucHV0IGNvbnN0cmFpbnRzIGFuZAorICAgIC8vIGluIHRoZSByZXBzIHByb3ZpZGVk
IHRvIHRoZSBnZW5lcmF0b3IuIFRoZSBvdXRwdXQgY29uc3RyYWludHMgY291bGQgYmUgYW55dGhp
bmcsIGFuZCBzaG91bGQgbm90IGJlCisgICAgLy8gaW5zcGVjdGVkIGZvciBtZWFuaW5nLiBJZiB5
b3Ugd2FudCB0byBjYXB0dXJlIHRoZSB2YWx1ZXMgb2YgdGhlIGlucHV0cywgdXNlIHN0YWNrbWFw
IGFyZ3VtZW50cy4KICAgICBDaGVja0FkZCwKICAgICBDaGVja1N1YiwKICAgICBDaGVja011bCwK
QEAgLTE3MCw3ICsxNzQsOCBAQCBlbnVtIE9wY29kZSA6IGludDE2X3QgewogICAgIC8vIENoZWNr
IHRoYXQgc2lkZS1leGl0cy4gVXNlIHRoZSBDaGVja1ZhbHVlIGNsYXNzLiBMaWtlIENoZWNrQWRk
IGFuZCBmcmllbmRzLCB0aGlzIGhhcyBhCiAgICAgLy8gc3RhY2ttYXAgd2l0aCBhIGdlbmVyYXRp
b24gY2FsbGJhY2suIFRoaXMgdGFrZXMgYW4gaW50IGFyZ3VtZW50IHRoYXQgdGhpcyBicmFuY2hl
cyBvbiwgd2l0aAogICAgIC8vIGZ1bGwgYnJhbmNoIGZ1c2lvbiBpbiB0aGUgaW5zdHJ1Y3Rpb24g
c2VsZWN0b3IuIEEgdHJ1ZSB2YWx1ZSBqdW1wcyB0byB0aGUgZ2VuZXJhdG9yJ3Mgc2xvdwotICAg
IC8vIHBhdGguCisgICAgLy8gcGF0aC4gTm90ZSB0aGF0IHRoZSBwcmVkaWNhdGUgY2hpbGQgaXMg
aGFzIGJvdGggYW4gaW5wdXQgYW5kIG91dHB1dCBWYWx1ZVJlcC4gVGhlIGlucHV0IGNvbnN0cmFp
bnQKKyAgICAvLyBtdXN0IGJlIEFueSwgYW5kIHRoZSBvdXRwdXQgY291bGQgYmUgYW55dGhpbmcu
CiAgICAgQ2hlY2ssCiAKICAgICAvLyBTU0Egc3VwcG9ydCwgaW4gdGhlIHN0eWxlIG9mIERGRyBT
U0EuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQYXRjaHBvaW50U3BlY2lhbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUGF0Y2hwb2ludFNw
ZWNpYWwuY3BwCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNQYXRjaHBvaW50U3BlY2lhbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDE2ICs0MywxOCBA
QCBQYXRjaHBvaW50U3BlY2lhbDo6flBhdGNocG9pbnRTcGVjaWFsKCkKIHsKIH0KIAotdm9pZCBQ
YXRjaHBvaW50U3BlY2lhbDo6Zm9yRWFjaEFyZygKLSAgICBJbnN0JiBpbnN0LCBjb25zdCBTY29w
ZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYgY2FsbGJhY2spCit2b2lkIFBhdGNocG9p
bnRTcGVjaWFsOjpmb3JFYWNoQXJnKEluc3QmIGluc3QsIGNvbnN0IFNjb3BlZExhbWJkYTxJbnN0
OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKKyAgICAvLyBGSVhNRTogQWxsb3cgQjMg
UGF0Y2hwb2ludHMgdG8gc3BlY2lmeSBMYXRlVXNlLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzMzUKKyAgICAKICAgICBpZiAoaW5zdC5vcmlnaW4t
PnR5cGUoKSA9PSBWb2lkKSB7Ci0gICAgICAgIGZvckVhY2hBcmdJbXBsKDAsIDEsIGluc3QsIGNh
bGxiYWNrKTsKKyAgICAgICAgZm9yRWFjaEFyZ0ltcGwoMCwgMSwgaW5zdCwgQXJnOjpVc2UsIGNh
bGxiYWNrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNhbGxiYWNrKGluc3QuYXJn
c1sxXSwgQXJnOjpEZWYsIGluc3Qub3JpZ2luLT5haXJUeXBlKCkpOwotICAgIGZvckVhY2hBcmdJ
bXBsKDAsIDIsIGluc3QsIGNhbGxiYWNrKTsKKyAgICBmb3JFYWNoQXJnSW1wbCgwLCAyLCBpbnN0
LCBBcmc6OlVzZSwgY2FsbGJhY2spOwogfQogCiBib29sIFBhdGNocG9pbnRTcGVjaWFsOjppc1Zh
bGlkKEluc3QmIGluc3QpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VT
dHJlbmd0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzMywxNyArNjMz
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIENoZWNr
QWRkOgotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBjb21tdXRhdGl2aXR5LgotICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIxNAot
ICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAocmVwbGFjZVdpdGhOZXdWYWx1ZShtX3ZhbHVl
LT5jaGlsZCgwKS0+Y2hlY2tBZGRDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDEpKSkp
CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICht
X3ZhbHVlLT5jaGlsZCgwKS0+aXNJbnQoMCkpIHsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlLT5y
ZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDEpKTsKLSAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkpIHsKICAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKQEAgLTY2
MSwzMCArNjU0LDQzIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKFZhbHVlKiBuZWdhdGVkQ29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+Y2hlY2tOZWdD
b25zdGFudChtX3Byb2MpKSB7CisgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
VmFsdWUobV9pbmRleCwgbmVnYXRlZENvbnN0YW50KTsKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
LT5hczxDaGVja1ZhbHVlPigpLT5jb252ZXJ0VG9BZGQoKTsKKyAgICAgICAgICAgICAgICBtX3Zh
bHVlLT5jaGlsZCgxKSA9IG5lZ2F0ZWRDb25zdGFudDsKKyAgICAgICAgICAgICAgICBtX2NoYW5n
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBDaGVja011bDoKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgY29tbXV0YXRpdml0eS4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEyMTQKLSAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKHJlcGxhY2VXaXRoTmV3VmFsdWUobV92YWx1ZS0+Y2hpbGQoMCktPmNoZWNrTXVsQ29u
c3RhbnQobV9wcm9jLCBtX3ZhbHVlLT5jaGlsZCgxKSkpKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogCi0gICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPmlzSW50KDEpKSB7Ci0gICAg
ICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgx
KSk7Ci0gICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG1fdmFs
dWUtPmNoaWxkKDEpLT5pc0ludCgxKSkgewotICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxh
Y2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkpOwotICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CiAKLSAgICAgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgwKS0+aXNJbnQoMCkgfHwgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDApKSB7Ci0g
ICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1ZShtX3Byb2MuYWRkSW50Q29uc3RhbnQo
bV92YWx1ZSwgMCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG1f
dmFsdWUtPmNoaWxkKDEpLT5oYXNJbnQoKSkgeworICAgICAgICAgICAgICAgIGJvb2wgbW9kaWZp
ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHN3aXRjaCAobV92YWx1ZS0+Y2hpbGQoMSktPmFz
SW50KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIHJl
cGxhY2VXaXRoTmV3VmFsdWUobV9wcm9jLmFkZEludENvbnN0YW50KG1fdmFsdWUsIDApKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxk
KDApKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5hczxDaGVja1ZhbHVlPigpLT5jb252ZXJ0VG9BZGQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkgPSBtX3ZhbHVlLT5jaGlsZCgwKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgbW9kaWZp
ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmIChtb2RpZmllZCkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIApAQCAtNzYxLDYgKzc2Nywx
MCBAQCBwcml2YXRlOgogICAgIC8vIElmIHdlIGRlY2lkZSB0aGF0IHZhbHVlMiBjb21pbmcgZmly
c3QgaXMgdGhlIGNhbm9uaWNhbCBvcmRlcmluZy4KICAgICB2b2lkIGhhbmRsZUNvbW11dGF0aXZp
dHkoKQogICAgIHsKKyAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGhhdmUgY29tbXV0YXRpdmUgb3Bl
cmF0aW9ucyB0aGF0IHRha2UgbW9yZSB0aGFuIHR3byBjaGlsZHJlbi4gVGhvc2Ugb3BlcmF0aW9u
cyBtYXkKKyAgICAgICAgLy8gY29tbXV0ZSB0aGVpciBmaXJzdCB0d28gY2hpbGRyZW4gd2hpbGUg
bGVhdmluZyB0aGUgcmVzdCB1bmFmZmVjdGVkLgorICAgICAgICBBU1NFUlQobV92YWx1ZS0+bnVt
Q2hpbGRyZW4oKSA+PSAyKTsKKyAgICAgICAgCiAgICAgICAgIC8vIExlYXZlIGl0IGFsb25lIGlm
IHRoZSByaWdodCBjaGlsZCBpcyBhIGNvbnN0YW50LgogICAgICAgICBpZiAobV92YWx1ZS0+Y2hp
bGQoMSktPmlzQ29uc3RhbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFwU3BlY2lhbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAkocmV2aXNpb24gMTky
NTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQCBjb25zdCBSZWdpc3RlclNldCYgU3RhY2tt
YXBTcGVjaWFsOjpleHRyCiAKIHZvaWQgU3RhY2ttYXBTcGVjaWFsOjpmb3JFYWNoQXJnSW1wbCgK
ICAgICB1bnNpZ25lZCBudW1JZ25vcmVkQjNBcmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJn
cywKLSAgICBJbnN0JiBpbnN0LCBjb25zdCBTY29wZWRMYW1iZGE8SW5zdDo6RWFjaEFyZ0NhbGxi
YWNrPiYgY2FsbGJhY2spCisgICAgSW5zdCYgaW5zdCwgQXJnOjpSb2xlIHJvbGUsIGNvbnN0IFNj
b3BlZExhbWJkYTxJbnN0OjpFYWNoQXJnQ2FsbGJhY2s+JiBjYWxsYmFjaykKIHsKICAgICBWYWx1
ZSogdmFsdWUgPSBpbnN0Lm9yaWdpbjsKIApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFN0YWNrbWFw
U3BlY2lhbDo6Zm9yRWFjaEFyZ0ltcGwoCiAgICAgICAgIEFyZyYgYXJnID0gaW5zdC5hcmdzW2kg
KyBudW1JZ25vcmVkQWlyQXJnc107CiAgICAgICAgIFZhbHVlKiBjaGlsZCA9IHZhbHVlLT5jaGls
ZChpICsgbnVtSWdub3JlZEIzQXJncyk7CiAKLSAgICAgICAgY2FsbGJhY2soYXJnLCBBcmc6OlVz
ZSwgQXJnOjp0eXBlRm9yQjNUeXBlKGNoaWxkLT50eXBlKCkpKTsKKyAgICAgICAgY2FsbGJhY2so
YXJnLCByb2xlLCBBcmc6OnR5cGVGb3JCM1R5cGUoY2hpbGQtPnR5cGUoKSkpOwogICAgIH0KIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3RhY2ttYXBTcGVjaWFsLmgJ
KHJldmlzaW9uIDE5MjUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1N0YWNrbWFw
U3BlY2lhbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUo
QjNfSklUKQogCisjaW5jbHVkZSAiQWlyQXJnLmgiCiAjaW5jbHVkZSAiQWlyU3BlY2lhbC5oIgog
I2luY2x1ZGUgIkIzVmFsdWVSZXAuaCIKIApAQCAtNTMsNyArNTQsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICB2b2lkIGZvckVhY2hBcmdJbXBsKAogICAgICAgICB1bnNpZ25lZCBudW1JZ25vcmVkQjNB
cmdzLCB1bnNpZ25lZCBudW1JZ25vcmVkQWlyQXJncywKLSAgICAgICAgQWlyOjpJbnN0JiwgY29u
c3QgU2NvcGVkTGFtYmRhPEFpcjo6SW5zdDo6RWFjaEFyZ0NhbGxiYWNrPiYpOworICAgICAgICBB
aXI6Okluc3QmLCBBaXI6OkFyZzo6Um9sZSByb2xlLCBjb25zdCBTY29wZWRMYW1iZGE8QWlyOjpJ
bnN0OjpFYWNoQXJnQ2FsbGJhY2s+Jik7CiAgICAgYm9vbCBpc1ZhbGlkSW1wbCgKICAgICAgICAg
dW5zaWduZWQgbnVtSWdub3JlZEIzQXJncywgdW5zaWduZWQgbnVtSWdub3JlZEFpckFyZ3MsCiAg
ICAgICAgIEFpcjo6SW5zdCYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzU3Rh
Y2ttYXBWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
U3RhY2ttYXBWYWx1ZS5jcHAJKHJldmlzaW9uIDE5MjUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1N0YWNrbWFwVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwx
MSBAQCB2b2lkIFN0YWNrbWFwVmFsdWU6OmFwcGVuZChjb25zdCBDb25zdHJhCiAgICAgbV9yZXBz
LmFwcGVuZChjb25zdHJhaW5lZFZhbHVlLnJlcCgpKTsKIH0KIAordm9pZCBTdGFja21hcFZhbHVl
OjphcHBlbmRTb21lUmVnaXN0ZXIoVmFsdWUqIHZhbHVlKQoreworICAgIGFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKHZhbHVlLCBWYWx1ZVJlcDo6U29tZVJlZ2lzdGVyKSk7Cit9CisKIHZvaWQgU3Rh
Y2ttYXBWYWx1ZTo6c2V0Q29uc3RyYWluZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgY29uc3QgQ29u
c3RyYWluZWRWYWx1ZSYgY29uc3RyYWluZWRWYWx1ZSkKIHsKICAgICBjaGlsZChpbmRleCkgPSBj
b25zdHJhaW5lZFZhbHVlLnZhbHVlKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNTdGFja21hcFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzU3RhY2ttYXBWYWx1ZS5oCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNTdGFja21hcFZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDEw
IEBAIHB1YmxpYzoKICAgICAvLyBjaGlsZHJlbigpLmFwcGVuZCgpLiBUaGF0IHdpbGwgd29yayBm
aW5lLCBidXQgaXQncyBub3QgcmVjb21tZW5kZWQuCiAgICAgdm9pZCBhcHBlbmQoY29uc3QgQ29u
c3RyYWluZWRWYWx1ZSYpOwogCisgICAgLy8gVGhpcyBpcyBhIGhlbHBlciBmb3Igc29tZXRoaW5n
IHlvdSBtaWdodCBkbyBhIGxvdCBvZjogYXBwZW5kIGEgdmFsdWUgdGhhdCBzaG91bGQgYmUgY29u
c3RyYWluZWQKKyAgICAvLyB0byBTb21lUmVnaXN0ZXIuCisgICAgdm9pZCBhcHBlbmRTb21lUmVn
aXN0ZXIoVmFsdWUqKTsKKwogICAgIGNvbnN0IFZlY3RvcjxWYWx1ZVJlcD4mIHJlcHMoKSBjb25z
dCB7IHJldHVybiBtX3JlcHM7IH0KIAogICAgIHZvaWQgY2xvYmJlcihjb25zdCBSZWdpc3RlclNl
dCYgc2V0KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbGlkYXRlLmNwcAkocmV2
aXNpb24gMTkyNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNiArMjc4LDggQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID49IDIsICgiQXQgIiwgKnZhbHVlKSk7
CiAgICAgICAgICAgICAgICAgVkFMSURBVEUoaXNJbnQodmFsdWUtPmNoaWxkKDApLT50eXBlKCkp
LCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKGlzSW50KHZhbHVl
LT5jaGlsZCgxKS0+dHlwZSgpKSwgKCJBdCAiLCAqdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+YXM8U3RhY2ttYXBWYWx1ZT4oKS0+Y29uc3RyYWluZWRDaGlsZCgwKS5y
ZXAoKSA9PSBWYWx1ZVJlcDo6QW55LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAg
IFZBTElEQVRFKHZhbHVlLT5hczxTdGFja21hcFZhbHVlPigpLT5jb25zdHJhaW5lZENoaWxkKDEp
LnJlcCgpID09IFZhbHVlUmVwOjpBbnksICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgdmFsaWRhdGVTdGFja21hcCh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIENoZWNrOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cAkocmV2aXNpb24gMTkyNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNiArMTU0LDExIEBAIFZhbHVlKiBWYWx1ZTo6Y2hl
Y2tNdWxDb25zdGFudChQcm9jZWR1cmUKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorVmFsdWUq
IFZhbHVlOjpjaGVja05lZ0NvbnN0YW50KFByb2NlZHVyZSYpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG51bGxwdHI7Cit9CisKIFZhbHVlKiBWYWx1ZTo6ZGl2Q29uc3RhbnQoUHJvY2VkdXJlJiwgY29u
c3QgVmFsdWUqKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZS5oCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgQmFzaWNCbG9jazsKK2NsYXNzIENo
ZWNrVmFsdWU7CiBjbGFzcyBQcm9jZWR1cmU7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFZh
bHVlIHsKQEAgLTExOCw2ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWYWx1ZSogY2hl
Y2tBZGRDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAg
IHZpcnR1YWwgVmFsdWUqIGNoZWNrU3ViQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBjaGVja011bENvbnN0YW50KFByb2Nl
ZHVyZSYsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSogY2hl
Y2tOZWdDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBkaXZD
b25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0OyAvLyBUaGlzIGNo
b29zZXMgQ2hpbGxEaXYgc2VtYW50aWNzIGZvciBpbnRlZ2Vycy4KICAgICB2aXJ0dWFsIFZhbHVl
KiBiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0Owog
ICAgIHZpcnR1YWwgVmFsdWUqIGJpdE9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdDsKQEAgLTI3Miw2ICsyNzQsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogCiBw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDaGVja1ZhbHVlOyAvLyBDaGVja1ZhbHVlOjpjb252
ZXJ0VG9BZGQoKSBtb2RpZmllcyBtX29wY29kZS4KKyAgICAKICAgICBzdGF0aWMgVHlwZSB0eXBl
Rm9yKE9wY29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQpOwogCiAgICAgLy8gVGhpcyBncm91cCBvZiBm
aWVsZHMgaXMgYXJyYW5nZWQgdG8gZml0IGluIDY0IGJpdHMuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMTkyNTA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSw3ICsyOTUsOCBAQCB2b2lk
IHRlc3RNdWxBcmcoaW50IGEpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CiAgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKLSAgICBWYWx1ZSogdmFsdWUgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAog
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVl
LCB2YWx1ZSkpOwpAQCAtMzAzLDYgKzMwNCw1MSBAQCB2b2lkIHRlc3RNdWxBcmcoaW50IGEpCiAg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhKTsKIH0KIAordm9p
ZCB0ZXN0TXVsQXJnU3RvcmUoaW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFz
aWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKworICAgIGludCBtdWxTbG90OworICAg
IGludCB2YWx1ZVNsb3Q7CisgICAgCisgICAgVmFsdWUqIHZhbHVlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMCkpOworICAgIFZhbHVlKiBtdWwgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2Ms
IE11bCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSk7CisKKyAgICByb290LT5hcHBlbmROZXc8TWVt
b3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBTdG9yZSwgT3JpZ2luKCksIHZhbHVlLAorICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ2YWx1ZVNs
b3QpKTsKKyAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAorICAgICAgICBwcm9jLCBT
dG9yZSwgT3JpZ2luKCksIG11bCwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFs
dWU+KHByb2MsIE9yaWdpbigpLCAmbXVsU2xvdCkpOworCisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICBDSEVDSyghY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpKTsKKyAgICBDSEVDSyhtdWxTbG90ID09IGEgKiBhKTsK
KyAgICBDSEVDSyh2YWx1ZVNsb3QgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdE11bEFkZEFyZyhpbnQg
YSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiB2YWx1ZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFy
Z3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEFkZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIE11bCwgT3JpZ2luKCksIHZhbHVlLCB2YWx1ZSksCisgICAgICAgICAgICB2YWx1ZSkp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEgKiBhICsgYSk7
Cit9CisKIHZvaWQgdGVzdE11bEFyZ3MoaW50IGEsIGludCBiKQogewogICAgIFByb2NlZHVyZSBw
cm9jOwpAQCAtMjYyNCw5ICsyNjcwLDkgQEAgdm9pZCB0ZXN0Q29tcGxleCh1bnNpZ25lZCBudW1W
YXJzLCB1bnNpZwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Db25zdHJ1Y3RzOyAr
K2kpIHsKICAgICAgICAgaWYgKGkgJiAxKSB7CiAgICAgICAgICAgICAvLyBDb250cm9sIGZsb3cg
ZGlhbW9uZC4KLSAgICAgICAgICAgIHVuc2lnbmVkIHByZWRpY2F0ZVZhckluZGV4ID0gKGkgPj4g
MSkgJSBudW1WYXJzOwotICAgICAgICAgICAgdW5zaWduZWQgdGhlbkluY1ZhckluZGV4ID0gKChp
ID4+IDEpICsgMSkgJSBudW1WYXJzOwotICAgICAgICAgICAgdW5zaWduZWQgZWxzZUluY1Zhcklu
ZGV4ID0gKChpID4+IDEpICsgMikgJSBudW1WYXJzOworICAgICAgICAgICAgdW5zaWduZWQgcHJl
ZGljYXRlVmFySW5kZXggPSAoKGkgPj4gMSkgKyAyKSAlIG51bVZhcnM7CisgICAgICAgICAgICB1
bnNpZ25lZCB0aGVuSW5jVmFySW5kZXggPSAoKGkgPj4gMSkgKyAwKSAlIG51bVZhcnM7CisgICAg
ICAgICAgICB1bnNpZ25lZCBlbHNlSW5jVmFySW5kZXggPSAoKGkgPj4gMSkgKyAxKSAlIG51bVZh
cnM7CiAKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIHRoZW5CbG9jayA9IHByb2MuYWRkQmxvY2so
KTsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGVsc2VCbG9jayA9IHByb2MuYWRkQmxvY2soKTsK
QEAgLTI2NzEsNyArMjcxNyw3IEBAIHZvaWQgdGVzdENvbXBsZXgodW5zaWduZWQgbnVtVmFycywg
dW5zaWcKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGxvb3BTa2lwID0gcHJvYy5hZGRCbG9jaygp
OwogICAgICAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gcHJvYy5hZGRCbG9jaygp
OwogICAgICAgICAgICAgCi0gICAgICAgICAgICBWYWx1ZSogc3RhcnRJbmRleCA9IHZhcnNbKGkg
Pj4gMSkgJSBudW1WYXJzXTsKKyAgICAgICAgICAgIFZhbHVlKiBzdGFydEluZGV4ID0gdmFyc1so
KGkgPj4gMSkgKyAxKSAlIG51bVZhcnNdOwogICAgICAgICAgICAgVmFsdWUqIHN0YXJ0U3VtID0g
Y3VycmVudC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApOwogICAg
ICAgICAgICAgY3VycmVudC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCiAgICAgICAgICAgICAg
ICAgcHJvYywgQnJhbmNoLCBPcmlnaW4oKSwgc3RhcnRJbmRleCwKQEAgLTI3MjUsNyArMjc3MSw3
IEBAIHZvaWQgdGVzdENvbXBsZXgodW5zaWduZWQgbnVtVmFycywgdW5zaWcKICAgICAgICAgICAg
IHNraXBTdW0tPnNldFBoaShmaW5hbFN1bSk7CiAKICAgICAgICAgICAgIGN1cnJlbnQgPSBjb250
aW51YXRpb247Ci0gICAgICAgICAgICB2YXJzWygoaSA+PiAxKSArIDEpICUgbnVtVmFyc10gPSBm
aW5hbFN1bTsKKyAgICAgICAgICAgIHZhcnNbKChpID4+IDEpICsgMCkgJSBudW1WYXJzXSA9IGZp
bmFsU3VtOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMDUzLDggKzMwOTksNiBAQCB2b2lkIHRl
c3RTaW1wbGVDaGVjaygpCiAgICAgY2hlY2stPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAxKTsKLSAgICAgICAg
ICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzQ29uc3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVD
SyhwYXJhbXMucmVwc1swXS52YWx1ZSgpID09IDEpOwogCiAgICAgICAgICAgICAvLyBUaGlzIHNo
b3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVuY3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5l
dmVyIGhhdmUgY2FsbGVlCiAgICAgICAgICAgICAvLyBzYXZlcy4KQEAgLTMwODYsOCArMzEzMCw2
IEBAIHZvaWQgdGVzdENoZWNrTGVzc1RoYW4oKQogICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCiAg
ICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBh
cmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0g
MSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1swXS5pc0NvbnN0YW50KCkpOwotICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMF0udmFsdWUoKSA9PSAxKTsKIAogICAgICAgICAg
ICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2lt
cGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQogICAgICAgICAgICAgLy8gc2F2ZXMuCkBAIC0z
MTMzLDggKzMxNzUsNiBAQCB2b2lkIHRlc3RDaGVja01lZ2FDb21ibygpCiAgICAgY2hlY2stPnNl
dEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5y
ZXBzLnNpemUoKSA9PSAxKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzQ29u
c3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1swXS52YWx1ZSgpID09IDEp
OwogCiAgICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgd29yayBiZWNhdXNlIGEgZnVu
Y3Rpb24gdGhpcyBzaW1wbGUgc2hvdWxkIG5ldmVyIGhhdmUgY2FsbGVlCiAgICAgICAgICAgICAv
LyBzYXZlcy4KQEAgLTMxNjksMTQgKzMyMDksMTUgQEAgdm9pZCB0ZXN0Q2hlY2tBZGRJbW0oKQog
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpOwogICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKTsKICAgICBDaGVja1ZhbHVlKiBj
aGVja0FkZCA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja0FkZCwgT3Jp
Z2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJnMSk7CisgICAgY2hl
Y2tBZGQtPmFwcGVuZChhcmcyKTsKICAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAogICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgewotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDIpOwot
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMF0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBD
SEVDSyhwYXJhbXMucmVwc1sxXS5pc0NvbnN0YW50KCkpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zLnJlcHNbMV0udmFsdWUoKSA9PSA0Mik7Ci0gICAgICAgICAgICBqaXQuc3ViMzIoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBwYXJhbXMucmVwc1swXS5ncHIoKSk7Ci0gICAgICAg
ICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMF0uZ3ByKCksIEZQUklu
Zm86OmZwUmVnVDApOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDQp
OworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXMucmVwc1szXS5pc0NvbnN0YW50KCkpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnJlcHNbM10udmFsdWUoKSA9PSA0Mik7CisgICAgICAgICAgICBqaXQuY29udmVydElu
dDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwogICAg
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKENDYWxsSGVscGVyczo6VHJ1c3RlZElt
bTMyKDQyKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgICAgICBqaXQuYWRkRG91YmxlKEZQ
UkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7CkBAIC0zMTk0LDYgKzMyMzUsNzUgQEAgdm9pZCB0ZXN0Q2hlY2tB
ZGRJbW0oKQogICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAyMTQ3NDgzNjQ3KSA9PSAy
MTQ3NDgzNjg5LjApOwogfQogCit2b2lkIHRlc3RDaGVja0FkZEltbUNvbW11dGUoKQoreworICAg
IFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7
CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9j
LCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgVmFsdWUq
IGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIp
OworICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+
KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMiwgYXJnMSk7CisgICAgY2hlY2tBZGQtPmFw
cGVuZChhcmcxKTsKKyAgICBjaGVja0FkZC0+YXBwZW5kKGFyZzIpOworICAgIGNoZWNrQWRkLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMu
cmVwcy5zaXplKCkgPT0gNCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1syXS5pc0dQ
UigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLmlzQ29uc3RhbnQoKSk7Cisg
ICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1szXS52YWx1ZSgpID09IDQyKTsKKyAgICAgICAg
ICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXMucmVwc1syXS5ncHIoKSwgRlBSSW5m
bzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUoQ0NhbGxI
ZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAg
IGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAg
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQo
KTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrQWRkKSk7CisKKyAgICBhdXRvIGNvZGUgPSBj
b21waWxlKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDApID09IDQy
LjApOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxKSA9PSA0My4wKTsKKyAgICBD
SEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIpID09IDg0LjApOworICAgIENIRUNLKGludm9r
ZTxkb3VibGU+KCpjb2RlLCAyMTQ3NDgzNjQ3KSA9PSAyMTQ3NDgzNjg5LjApOworfQorCit2b2lk
IHRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3RlcigpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJnMSA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICBWYWx1ZSogYXJnMiA9IHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCA0Mik7CisgICAgQ2hlY2tWYWx1ZSog
Y2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9y
aWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFy
ZzEpOworICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVnaXN0ZXIoYXJnMik7CisgICAgY2hlY2tB
ZGQtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtcy5yZXBzLnNpemUoKSA9PSA0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJd
LmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNHUFIoKSk7Cisg
ICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMl0uZ3ByKCks
IEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KHBhcmFtcy5yZXBzWzNdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIGpp
dC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAg
ICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGppdC5yZXQoKTsK
KyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrQWRkKSk7CisKKyAgICBhdXRvIGNvZGUgPSBjb21w
aWxlKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDApID09IDQyLjAp
OworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAxKSA9PSA0My4wKTsKKyAgICBDSEVD
SyhpbnZva2U8ZG91YmxlPigqY29kZSwgNDIpID09IDg0LjApOworICAgIENIRUNLKGludm9rZTxk
b3VibGU+KCpjb2RlLCAyMTQ3NDgzNjQ3KSA9PSAyMTQ3NDgzNjg5LjApOworfQorCiB2b2lkIHRl
c3RDaGVja0FkZCgpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0zMjA1LDE0ICszMzE1LDE1
IEBAIHZvaWQgdGVzdENoZWNrQWRkKCkKICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAog
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpOwogICAgIENoZWNrVmFsdWUqIGNoZWNrQWRkID0gcm9v
dC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrQWRkLCBPcmlnaW4oKSwgYXJnMSwg
YXJnMik7CisgICAgY2hlY2tBZGQtPmFwcGVuZFNvbWVSZWdpc3RlcihhcmcxKTsKKyAgICBjaGVj
a0FkZC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIpOwogICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwcy5zaXpl
KCkgPT0gMik7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1swXS5pc0dQUigpKTsKLSAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzFdLmlzR1BSKCkpOwotICAgICAgICAgICAgaml0
LnN1YjMyKHBhcmFtcy5yZXBzWzFdLmdwcigpLCBwYXJhbXMucmVwc1swXS5ncHIoKSk7Ci0gICAg
ICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMF0uZ3ByKCksIEZQ
UkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBh
cmFtcy5yZXBzWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5yZXBzLnNpemUoKSA9PSA0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBz
WzJdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNHUFIoKSk7
CisgICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMl0uZ3By
KCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91
YmxlKHBhcmFtcy5yZXBzWzNdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAg
IGppdC5hZGREb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAg
ICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIGppdC5yZXQo
KTsKQEAgLTMyMzYsMTQgKzMzNDcsMTUgQEAgdm9pZCB0ZXN0Q2hlY2tBZGQ2NCgpCiAgICAgVmFs
dWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMSk7CiAgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5hcHBlbmROZXc8Q2hlY2tW
YWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja0Fk
ZC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzEpOworICAgIGNoZWNrQWRkLT5hcHBlbmRTb21lUmVn
aXN0ZXIoYXJnMik7CiAgICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAyKTsKLSAgICAgICAg
ICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAgQ0hFQ0socGFy
YW1zLnJlcHNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuc3ViNjQocGFyYW1zLnJlcHNb
MV0uZ3ByKCksIHBhcmFtcy5yZXBzWzBdLmdwcigpKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0
SW50NjRUb0RvdWJsZShwYXJhbXMucmVwc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7Ci0g
ICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zLnJlcHNbMV0uZ3ByKCks
IEZQUkluZm86OmZwUmVnVDEpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgp
ID09IDQpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CisgICAg
ICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1szXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5j
b252ZXJ0SW50NjRUb0RvdWJsZShwYXJhbXMucmVwc1syXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdU
MCk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zLnJlcHNbM10u
Z3ByKCksIEZQUkluZm86OmZwUmVnVDEpOwogICAgICAgICAgICAgaml0LmFkZERvdWJsZShGUFJJ
bmZvOjpmcFJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAgIGppdC5lbWl0RnVu
Y3Rpb25FcGlsb2d1ZSgpOwogICAgICAgICAgICAgaml0LnJldCgpOwpAQCAtMzMwNywxNCArMzQx
OSwxNSBAQCB2b2lkIHRlc3RDaGVja1N1YkltbSgpCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7
CiAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgNDIpOwogICAgIENoZWNrVmFsdWUqIGNoZWNrU3ViID0gcm9vdC0+YXBwZW5kTmV3
PENoZWNrVmFsdWU+KHByb2MsIENoZWNrU3ViLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAg
Y2hlY2tTdWItPmFwcGVuZChhcmcxKTsKKyAgICBjaGVja1N1Yi0+YXBwZW5kKGFyZzIpOwogICAg
IGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQs
IGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBD
SEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gMik7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMu
cmVwc1swXS5pc0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzFdLmlzQ29u
c3RhbnQoKSk7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1sxXS52YWx1ZSgpID09IDQy
KTsKLSAgICAgICAgICAgIGppdC5hZGQzMihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0Miks
IHBhcmFtcy5yZXBzWzBdLmdwcigpKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0Rv
dWJsZShwYXJhbXMucmVwc1swXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAg
ICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gNCk7CisgICAgICAgICAgICBDSEVDSyhwYXJh
bXMucmVwc1syXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLmlz
Q29uc3RhbnQoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1szXS52YWx1ZSgpID09
IDQyKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJhbXMucmVwc1sy
XS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuY29udmVydEludDMy
VG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBGUFJJbmZvOjpmcFJlZ1Qx
KTsKICAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6
ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKQEAgLTMz
MzIsNiArMzQ0NSw0MiBAQCB2b2lkIHRlc3RDaGVja1N1YkltbSgpCiAgICAgQ0hFQ0soaW52b2tl
PGRvdWJsZT4oKmNvZGUsIC0yMTQ3NDgzNjQ3KSA9PSAtMjE0NzQ4MzY4OS4wKTsKIH0KIAordm9p
ZCB0ZXN0Q2hlY2tTdWJCYWRJbW0oKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSk7CisgICAgaW50MzJfdCBiYWRJbW0gPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludD46Om1pbigpOworICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5kTmV3PENvbnN0
MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGJhZEltbSk7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tT
dWIgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigp
LCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja1N1Yi0+YXBwZW5kKGFyZzEpOworICAgIGNoZWNrU3Vi
LT5hcHBlbmQoYXJnMik7CisgICAgY2hlY2tTdWItPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSA0KTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnJlcHNbM10uaXNDb25zdGFudCgpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5y
ZXBzWzNdLnZhbHVlKCkgPT0gYmFkSW1tKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJU
b0RvdWJsZShwYXJhbXMucmVwc1syXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAg
ICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
YmFkSW1tKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBqaXQuc3ViRG91YmxlKEZQ
UkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmVtaXRG
dW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQucmV0KCk7CisgICAgICAgIH0pOwor
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4s
IE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIElUb0QsIE9y
aWdpbigpLCBjaGVja1N1YikpOworCisgICAgYXV0byBjb2RlID0gY29tcGlsZShwcm9jKTsKKwor
ICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlLCAwKSA9PSAtc3RhdGljX2Nhc3Q8ZG91Ymxl
PihiYWRJbW0pKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgLTEpID09IC1zdGF0
aWNfY2FzdDxkb3VibGU+KGJhZEltbSkgLSAxKTsKKyAgICBDSEVDSyhpbnZva2U8ZG91YmxlPigq
Y29kZSwgMSkgPT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1tKSArIDEpOworICAgIENIRUNL
KGludm9rZTxkb3VibGU+KCpjb2RlLCA0MikgPT0gLXN0YXRpY19jYXN0PGRvdWJsZT4oYmFkSW1t
KSArIDQyKTsKK30KKwogdm9pZCB0ZXN0Q2hlY2tTdWIoKQogewogICAgIFByb2NlZHVyZSBwcm9j
OwpAQCAtMzM0MywxNCArMzQ5MiwxNSBAQCB2b2lkIHRlc3RDaGVja1N1YigpCiAgICAgICAgIHBy
b2MsIFRydW5jLCBPcmlnaW4oKSwKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKTsKICAgICBDaGVj
a1ZhbHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVj
a1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOworICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMSk7
CisgICAgY2hlY2tTdWItPmFwcGVuZChhcmcyKTsKICAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9y
KAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgp
ID09IDIpOwotICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMF0uaXNHUFIoKSk7Ci0gICAg
ICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1sxXS5pc0dQUigpKTsKLSAgICAgICAgICAgIGppdC5h
ZGQzMihwYXJhbXMucmVwc1sxXS5ncHIoKSwgcGFyYW1zLnJlcHNbMF0uZ3ByKCkpOwotICAgICAg
ICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtcy5yZXBzWzBdLmdwcigpLCBGUFJJ
bmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShwYXJh
bXMucmVwc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBDSEVDSyhw
YXJhbXMucmVwcy5zaXplKCkgPT0gNCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1sy
XS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLmlzR1BSKCkpOwor
ICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtcy5yZXBzWzJdLmdwcigp
LCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJs
ZShwYXJhbXMucmVwc1szXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgICAgICBq
aXQuc3ViRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwogICAgICAg
ICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7
CkBAIC0zMzc5LDE0ICszNTI5LDE1IEBAIHZvaWQgdGVzdENoZWNrU3ViNjQoKQogICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwogICAgIENoZWNrVmFsdWUqIGNoZWNrU3ViID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFs
dWU+KHByb2MsIENoZWNrU3ViLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tTdWIt
PmFwcGVuZChhcmcxKTsKKyAgICBjaGVja1N1Yi0+YXBwZW5kKGFyZzIpOwogICAgIGNoZWNrU3Vi
LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXMucmVwcy5zaXplKCkgPT0gMik7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1swXS5p
c0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzFdLmlzR1BSKCkpOwotICAg
ICAgICAgICAgaml0LmFkZDY0KHBhcmFtcy5yZXBzWzFdLmdwcigpLCBwYXJhbXMucmVwc1swXS5n
cHIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zLnJlcHNb
MF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2
NFRvRG91YmxlKHBhcmFtcy5yZXBzWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSA0KTsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNb
M10uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1z
LnJlcHNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZl
cnRJbnQ2NFRvRG91YmxlKHBhcmFtcy5yZXBzWzNdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsK
ICAgICAgICAgICAgIGppdC5zdWJEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBS
ZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAg
ICAgIGppdC5yZXQoKTsKQEAgLTM0NTAsMTMgKzM2MDEsMTIgQEAgdm9pZCB0ZXN0Q2hlY2tOZWco
KQogICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KSk7CiAgICAgQ2hlY2tWYWx1ZSogY2hlY2tOZWcgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1
ZT4ocHJvYywgQ2hlY2tTdWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja05lZy0+
YXBwZW5kKGFyZzIpOwogICAgIGNoZWNrTmVnLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gMik7Ci0gICAgICAg
ICAgICBDSEVDSyhwYXJhbXMucmVwc1swXSA9PSBWYWx1ZVJlcDo6Y29uc3RhbnQoMCkpOwotICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQu
bmVnMzIocGFyYW1zLnJlcHNbMV0uZ3ByKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQz
MlRvRG91YmxlKHBhcmFtcy5yZXBzWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAzKTsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRv
RG91YmxlKHBhcmFtcy5yZXBzWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAg
ICAgIGppdC5uZWdhdGVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7
CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIGpp
dC5yZXQoKTsKQEAgLTM0ODAsMTMgKzM2MzAsMTIgQEAgdm9pZCB0ZXN0Q2hlY2tOZWc2NCgpCiAg
ICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMCk7CiAgICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgQ2hlY2tW
YWx1ZSogY2hlY2tOZWcgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tT
dWIsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja05lZy0+YXBwZW5kKGFyZzIpOwog
ICAgIGNoZWNrTmVnLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAg
ICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gMik7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXMucmVwc1swXSA9PSBWYWx1ZVJlcDo6Y29uc3RhbnQoMCkpOwotICAgICAgICAgICAgQ0hFQ0so
cGFyYW1zLnJlcHNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQubmVnNjQocGFyYW1zLnJl
cHNbMV0uZ3ByKCkpOwotICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFt
cy5yZXBzWzFdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIENIRUNLKHBh
cmFtcy5yZXBzLnNpemUoKSA9PSAzKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJd
LmlzR1BSKCkpOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtcy5y
ZXBzWzJdLmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5uZWdhdGVE
b3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBq
aXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKQEAgLTM1
MTQsMTMgKzM2NjMsMTUgQEAgdm9pZCB0ZXN0Q2hlY2tNdWwoKQogICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCiAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSk7CiAgICAgQ2hlY2tWYWx1ZSog
Y2hlY2tNdWwgPSByb290LT5hcHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9y
aWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzEpOworICAgIGNo
ZWNrTXVsLT5hcHBlbmQoYXJnMik7CiAgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKICAgICAg
ICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAyKTsK
LSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzR1BSKCkpOwotICAgICAgICAgICAg
Q0hFQ0socGFyYW1zLnJlcHNbMV0uaXNHUFIoKSk7Ci0gICAgICAgICAgICBqaXQuY29udmVydElu
dDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMF0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDApOwotICAg
ICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtcy5yZXBzWzFdLmdwcigpLCBG
UFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9
PSA0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkpOworICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNHUFIoKSk7CisgICAgICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDAp
OworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKHBhcmFtcy5yZXBzWzNdLmdw
cigpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKICAgICAgICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5m
bzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0
aW9uRXBpbG9ndWUoKTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKQEAgLTM1MzcsNiArMzY4OCw5
MiBAQCB2b2lkIHRlc3RDaGVja011bCgpCiAgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUs
IDIxNDc0ODM2NDcsIDQyKSA9PSAyMTQ3NDgzNjQ3LjAgKiA0Mi4wKTsKIH0KIAordm9pZCB0ZXN0
Q2hlY2tNdWxNZW1vcnkoKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisKKyAgICBpbnQgbGVmdDsKKyAgICBpbnQgcmlnaHQ7
CisgICAgCisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAor
ICAgICAgICBwcm9jLCBMb2FkLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdFB0clZhbHVlPihwcm9jLCBPcmlnaW4oKSwgJmxlZnQpKTsKKyAgICBWYWx1ZSog
YXJnMiA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCisgICAgICAgIHByb2MsIExvYWQs
IEludDMyLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCAmcmlnaHQpKTsKKyAgICBDaGVja1ZhbHVlKiBjaGVja011bCA9IHJv
b3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVja011bCwgT3JpZ2luKCksIGFyZzEs
IGFyZzIpOworICAgIGNoZWNrTXVsLT5hcHBlbmQoYXJnMSk7CisgICAgY2hlY2tNdWwtPmFwcGVu
ZChhcmcyKTsKKyAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDQpOworICAgICAgICAgICAg
Q0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMu
cmVwc1szXS5pc0dQUigpKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50MzJUb0RvdWJsZShw
YXJhbXMucmVwc1syXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICBqaXQu
Y29udmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbM10uZ3ByKCksIEZQUkluZm86OmZwUmVn
VDEpOworICAgICAgICAgICAgaml0Lm11bERvdWJsZShGUFJJbmZvOjpmcFJlZ1QxLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOworICAg
ICAgICAgICAgaml0LnJldCgpOworICAgICAgICB9KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29u
dHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBJVG9ELCBPcmlnaW4oKSwgY2hlY2tNdWwpKTsKKwor
ICAgIGF1dG8gY29kZSA9IGNvbXBpbGUocHJvYyk7CisKKyAgICBsZWZ0ID0gMDsKKyAgICByaWdo
dCA9IDQyOworICAgIENIRUNLKGludm9rZTxkb3VibGU+KCpjb2RlKSA9PSAwLjApOworICAgIAor
ICAgIGxlZnQgPSAxOworICAgIHJpZ2h0ID0gNDI7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4o
KmNvZGUpID09IDQyLjApOworCisgICAgbGVmdCA9IDQyOworICAgIHJpZ2h0ID0gNDI7CisgICAg
Q0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUpID09IDQyLjAgKiA0Mi4wKTsKKworICAgIGxlZnQg
PSAyMTQ3NDgzNjQ3OworICAgIHJpZ2h0ID0gNDI7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4o
KmNvZGUpID09IDIxNDc0ODM2NDcuMCAqIDQyLjApOworfQorCit2b2lkIHRlc3RDaGVja011bDIo
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZzEgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7Cisg
ICAgVmFsdWUqIGFyZzIgPSByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmln
aW4oKSwgMik7CisgICAgQ2hlY2tWYWx1ZSogY2hlY2tNdWwgPSByb290LT5hcHBlbmROZXc8Q2hl
Y2tWYWx1ZT4ocHJvYywgQ2hlY2tNdWwsIE9yaWdpbigpLCBhcmcxLCBhcmcyKTsKKyAgICBjaGVj
a011bC0+YXBwZW5kKGFyZzEpOworICAgIGNoZWNrTXVsLT5hcHBlbmQoYXJnMik7CisgICAgY2hl
Y2tNdWwtPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIENIRUNL
KHBhcmFtcy5yZXBzLnNpemUoKSA9PSA0KTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBz
WzJdLmlzR1BSKCkpOworICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNDb25zdGFu
dCgpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLnZhbHVlKCkgPT0gMik7Cisg
ICAgICAgICAgICBqaXQuY29udmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMl0uZ3ByKCks
IEZQUkluZm86OmZwUmVnVDApOworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQzMlRvRG91Ymxl
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDIpLCBGUFJJbmZvOjpmcFJlZ1QxKTsKKyAgICAg
ICAgICAgIGppdC5tdWxEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMSwgRlBSSW5mbzo6ZnBSZWdUMCk7
CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAgICAgICAgIGpp
dC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgSVRvRCwgT3JpZ2luKCksIGNoZWNrTXVsKSk7CisKKyAgICBhdXRvIGNv
ZGUgPSBjb21waWxlKHByb2MpOworCisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDAp
ID09IDAuMCk7CisgICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDEpID09IDIuMCk7Cisg
ICAgQ0hFQ0soaW52b2tlPGRvdWJsZT4oKmNvZGUsIDQyKSA9PSA0Mi4wICogMi4wKTsKKyAgICBD
SEVDSyhpbnZva2U8ZG91YmxlPigqY29kZSwgMjE0NzQ4MzY0NykgPT0gMjE0NzQ4MzY0Ny4wICog
Mi4wKTsKK30KKwogdm9pZCB0ZXN0Q2hlY2tNdWw2NCgpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7
CkBAIC0zNTQ0LDEzICszNzgxLDE1IEBAIHZvaWQgdGVzdENoZWNrTXVsNjQoKQogICAgIFZhbHVl
KiBhcmcxID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigp
LCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgIFZhbHVlKiBhcmcyID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjEpOwogICAgIENoZWNrVmFsdWUqIGNoZWNrTXVsID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFs
dWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwgYXJnMSwgYXJnMik7CisgICAgY2hlY2tNdWwt
PmFwcGVuZChhcmcxKTsKKyAgICBjaGVja011bC0+YXBwZW5kKGFyZzIpOwogICAgIGNoZWNrTXVs
LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0
YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAgICAgICAgICBDSEVDSyhwYXJh
bXMucmVwcy5zaXplKCkgPT0gMik7Ci0gICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1swXS5p
c0dQUigpKTsKLSAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzFdLmlzR1BSKCkpOwotICAg
ICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtcy5yZXBzWzBdLmdwcigpLCBG
UFJJbmZvOjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0RvdWJsZShw
YXJhbXMucmVwc1sxXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CisgICAgICAgICAgICBDSEVD
SyhwYXJhbXMucmVwcy5zaXplKCkgPT0gNCk7CisgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVw
c1syXS5pc0dQUigpKTsKKyAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLmlzR1BSKCkp
OworICAgICAgICAgICAgaml0LmNvbnZlcnRJbnQ2NFRvRG91YmxlKHBhcmFtcy5yZXBzWzJdLmdw
cigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5jb252ZXJ0SW50NjRUb0Rv
dWJsZShwYXJhbXMucmVwc1szXS5ncHIoKSwgRlBSSW5mbzo6ZnBSZWdUMSk7CiAgICAgICAgICAg
ICBqaXQubXVsRG91YmxlKEZQUkluZm86OmZwUmVnVDEsIEZQUkluZm86OmZwUmVnVDApOwogICAg
ICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBqaXQucmV0
KCk7CkBAIC00MjM0LDYgKzQ0NzMsMTAgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQog
ICAgIFJVTih0ZXN0QWRkSW1tc0RvdWJsZShuZWdhdGl2ZVplcm8oKSwgbmVnYXRpdmVaZXJvKCkp
KTsKIAogICAgIFJVTih0ZXN0TXVsQXJnKDUpKTsKKyAgICBSVU4odGVzdE11bEFkZEFyZyg1KSk7
CisgICAgUlVOKHRlc3RNdWxBZGRBcmcoODUpKTsKKyAgICBSVU4odGVzdE11bEFyZ1N0b3JlKDUp
KTsKKyAgICBSVU4odGVzdE11bEFyZ1N0b3JlKDg1KSk7CiAgICAgUlVOKHRlc3RNdWxBcmdzKDEs
IDEpKTsKICAgICBSVU4odGVzdE11bEFyZ3MoMSwgMikpOwogICAgIFJVTih0ZXN0TXVsQXJncygz
LCAzKSk7CkBAIC00Njc3LDExICs0OTIwLDE0IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICBSVU4odGVzdENoZWNrTGVzc1RoYW4oKSk7CiAgICAgUlVOKHRlc3RDaGVja01lZ2FD
b21ibygpKTsKICAgICBSVU4odGVzdENoZWNrQWRkSW1tKCkpOworICAgIFJVTih0ZXN0Q2hlY2tB
ZGRJbW1Db21tdXRlKCkpOworICAgIFJVTih0ZXN0Q2hlY2tBZGRJbW1Tb21lUmVnaXN0ZXIoKSk7
CiAgICAgUlVOKHRlc3RDaGVja0FkZCgpKTsKICAgICBSVU4odGVzdENoZWNrQWRkNjQoKSk7CiAg
ICAgUlVOKHRlc3RDaGVja0FkZEZvbGQoMTAwLCAyMDApKTsKICAgICBSVU4odGVzdENoZWNrQWRk
Rm9sZEZhaWwoMjE0NzQ4MzY0NywgMTAwKSk7CiAgICAgUlVOKHRlc3RDaGVja1N1YkltbSgpKTsK
KyAgICBSVU4odGVzdENoZWNrU3ViQmFkSW1tKCkpOwogICAgIFJVTih0ZXN0Q2hlY2tTdWIoKSk7
CiAgICAgUlVOKHRlc3RDaGVja1N1YjY0KCkpOwogICAgIFJVTih0ZXN0Q2hlY2tTdWJGb2xkKDEw
MCwgMjAwKSk7CkBAIC00Njg5LDYgKzQ5MzUsOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0
ZXIpCiAgICAgUlVOKHRlc3RDaGVja05lZygpKTsKICAgICBSVU4odGVzdENoZWNrTmVnNjQoKSk7
CiAgICAgUlVOKHRlc3RDaGVja011bCgpKTsKKyAgICBSVU4odGVzdENoZWNrTXVsTWVtb3J5KCkp
OworICAgIFJVTih0ZXN0Q2hlY2tNdWwyKCkpOwogICAgIFJVTih0ZXN0Q2hlY2tNdWw2NCgpKTsK
ICAgICBSVU4odGVzdENoZWNrTXVsRm9sZCgxMDAsIDIwMCkpOwogICAgIFJVTih0ZXN0Q2hlY2tN
dWxGb2xkRmFpbCgyMTQ3NDgzNjQ3LCAxMDApKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQWxsb2NhdGVTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcAkocmV2aXNpb24gMTkyNTA3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBbGxvY2F0ZVN0YWNrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ2LDM4ICsxNDYsMjIgQEAgdm9pZCBhbGxvY2F0ZVN0YWNrKENvZGUm
IGNvZGUpCiAgICAgICAgIGF1dG8gaW50ZXJmZXJlID0gWyZdIChJbnN0JiBpbnN0KSB7CiAgICAg
ICAgICAgICBpZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJJbnRlcmZlcmlu
ZzogIiwgcG9pbnRlckxpc3REdW1wKGxvY2FsQ2FsYy5saXZlKCkpLCAiXG4iKTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgLy8gRm9ybSBhIGNsaXF1ZSBvZiBzdGFjayBzbG90cyB0aGF0IGlu
dGVyZmVyZS4gRmlyc3QgZmluZCB0aGUgbGlzdCBvZiBzdGFjayBzbG90cwotICAgICAgICAgICAg
Ly8gdGhhdCBhcmUgbGl2ZSByaWdodCBub3cuCi0gICAgICAgICAgICBzbG90cy5yZXNpemUoMCk7
Ci0gICAgICAgICAgICBmb3IgKFN0YWNrU2xvdCogc2xvdCA6IGxvY2FsQ2FsYy5saXZlKCkpIHsK
LSAgICAgICAgICAgICAgICBpZiAoc2xvdC0+a2luZCgpID09IFN0YWNrU2xvdEtpbmQ6OkFub255
bW91cykKLSAgICAgICAgICAgICAgICAgICAgc2xvdHMuYXBwZW5kKHNsb3QpOwotICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAvLyBXZSBtdXN0bid0IG1hbmRhdGUgdGhhdCB0aGUgaW5wdXQg
Y29kZSBpcyBvcHRpbWFsLiBUaGVyZWZvcmUsIGl0IG1heSBoYXZlIGRlYWQgc3RvcmVzCi0gICAg
ICAgICAgICAvLyB0byB0aGUgc3RhY2suIFdlIG5lZWQgdG8gdHJlYXQgdGhlc2UgYXMgaW50ZXJm
ZXJpbmcuCiAgICAgICAgICAgICBpbnN0LmZvckVhY2hBcmcoCiAgICAgICAgICAgICAgICAgWyZd
IChBcmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoQXJnOjppc0RlZihyb2xlKSAmJiBhcmcuaXNTdGFjaygpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBTdGFja1Nsb3QqIHNsb3QgPSBhcmcuc3RhY2tTbG90KCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoc2xvdC0+a2luZCgpID09IFN0YWNrU2xvdEtpbmQ6OkFub255
bW91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFsb2NhbENhbGMubGl2ZSgpLmNv
bnRhaW5zKHNsb3QpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3RzLmFwcGVuZChz
bG90KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFBcmc6OmlzRGVmKHJvbGUpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICBpZiAoIWFyZy5p
c1N0YWNrKCkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIFN0YWNrU2xvdCogc2xvdCA9IGFyZy5zdGFja1Nsb3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHNsb3QtPmtpbmQoKSAhPSBTdGFja1Nsb3RLaW5kOjpBbm9ueW1vdXMpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgZm9yIChT
dGFja1Nsb3QqIG90aGVyU2xvdCA6IGxvY2FsQ2FsYy5saXZlKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGludGVyZmVyZW5jZVtzbG90XS5hZGQob3RoZXJTbG90KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVyZmVyZW5jZVtvdGhlclNsb3RdLmFkZChzbG90KTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCIgICAgU2xvdHM6ICIs
IHBvaW50ZXJMaXN0RHVtcChzbG90cyksICJcbiIpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNsb3RzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgU3RhY2tT
bG90KiBvdXRlciA9IHNsb3RzW2ldOwotICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9
IGkgKyAxOyBqIDwgc2xvdHMuc2l6ZSgpOyArK2opIHsKLSAgICAgICAgICAgICAgICAgICAgU3Rh
Y2tTbG90KiBpbm5lciA9IHNsb3RzW2pdOwotCi0gICAgICAgICAgICAgICAgICAgIGludGVyZmVy
ZW5jZVtpbm5lcl0uYWRkKG91dGVyKTsKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJmZXJlbmNl
W291dGVyXS5hZGQoaW5uZXIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KICAg
ICAgICAgfTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGluc3RJbmRleCA9IGJsb2NrLT5zaXpl
KCk7IGluc3RJbmRleC0tOykgewpAQCAtMTg1LDcgKzE2OSw3IEBAIHZvaWQgYWxsb2NhdGVTdGFj
ayhDb2RlJiBjb2RlKQogICAgICAgICAgICAgICAgIGRhdGFMb2coIkFuYWx5emluZzogIiwgYmxv
Y2stPmF0KGluc3RJbmRleCksICJcbiIpOwogICAgICAgICAgICAgSW5zdCYgaW5zdCA9IGJsb2Nr
LT5hdChpbnN0SW5kZXgpOwogICAgICAgICAgICAgaW50ZXJmZXJlKGluc3QpOwotICAgICAgICAg
ICAgbG9jYWxDYWxjLmV4ZWN1dGUoaW5zdCk7CisgICAgICAgICAgICBsb2NhbENhbGMuZXhlY3V0
ZShpbnN0SW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIEluc3Qgbm9wOwogICAgICAgICBpbnRl
cmZlcmUobm9wKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAJ
KHJldmlzaW9uIDE5MjUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJn
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSw5IEBAIHZvaWQgcHJpbnRJbnRlcm5h
bChQcmludFN0cmVhbSYgb3V0LCBBcmcKICAgICBjYXNlIEFyZzo6VXNlQWRkcjoKICAgICAgICAg
b3V0LnByaW50KCJVc2VBZGRyIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFyZzo6TGF0
ZVVzZToKKyAgICAgICAgb3V0LnByaW50KCJMYXRlVXNlIik7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Mywx
MCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGFsd2F5cyBlc2NhcGluZywgYW5kIFN0YWNrIGlzIHBy
ZXN1bWVkIHRvIGJlIGFsd2F5cyBlc2NhcGluZyBpZiBpdCdzIExvY2tlZC4KICAgICAgICAgVXNl
LAogCisgICAgICAgIC8vIExhdGVVc2UgbWVhbnMgdGhhdCB0aGUgSW5zdCB3aWxsIHJlYWQgZnJv
bSB0aGlzIHZhbHVlIGFmdGVyIGRvaW5nIGl0cyBEZWYncy4gTm90ZSB0aGF0IExhdGVVc2UKKyAg
ICAgICAgLy8gb24gYW4gQWRkciBvciBJbmRleCBzdGlsbCBtZWFucyBVc2Ugb24gdGhlIGludGVy
bmFsIHRlbXBvcmFyaWVzLgorICAgICAgICBMYXRlVXNlLAorCiAgICAgICAgIC8vIERlZiBtZWFu
cyB0aGF0IHRoZSBJbnN0IHdpbGwgd3JpdGUgdG8gdGhpcyB2YWx1ZSBhZnRlciBkb2luZyBldmVy
eXRoaW5nIGVsc2UuCiAgICAgICAgIC8vCiAgICAgICAgIC8vIEZvciBUbXA6IFRoZSBJbnN0IHdp
bGwgd3JpdGUgdG8gdGhpcyBUbXAuCkBAIC0xMjMsMTIgKzEyNywxMyBAQCBwdWJsaWM6CiAgICAg
fTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgUm9sZSBpbXBsaWVzIHRoYXQgdGhlIElu
c3Qgd2lsbCBVc2UgdGhlIEFyZy4gSXQncyBkZWxpYmVyYXRlbHkgZmFsc2UgZm9yCi0gICAgLy8g
VXNlQWRkciwgc2luY2UgaXNVc2UoKSBmb3IgYW4gQXJnOjphZGRyIG1lYW5zIHRoYXQgd2UgYXJl
IGxvYWRpbmcgZnJvbSB0aGUgYWRkcmVzcy4KLSAgICBzdGF0aWMgYm9vbCBpc1VzZShSb2xlIHJv
bGUpCisgICAgLy8gVXNlQWRkciwgc2luY2UgaXNBbnlVc2UoKSBmb3IgYW4gQXJnOjphZGRyIG1l
YW5zIHRoYXQgd2UgYXJlIGxvYWRpbmcgZnJvbSB0aGUgYWRkcmVzcy4KKyAgICBzdGF0aWMgYm9v
bCBpc0FueVVzZShSb2xlIHJvbGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHJvbGUpIHsKICAg
ICAgICAgY2FzZSBVc2U6CiAgICAgICAgIGNhc2UgVXNlRGVmOgorICAgICAgICBjYXNlIExhdGVV
c2U6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgY2FzZSBEZWY6CiAgICAgICAg
IGNhc2UgVXNlQWRkcjoKQEAgLTEzNiwxMiArMTQxLDMzIEBAIHB1YmxpYzoKICAgICAgICAgfQog
ICAgIH0KIAorICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgUm9sZSBpbXBsaWVzIHRoYXQgdGhl
IEluc3Qgd2lsbCBVc2UgdGhlIEFyZyBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4KKyAgICBz
dGF0aWMgYm9vbCBpc0Vhcmx5VXNlKFJvbGUgcm9sZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
cm9sZSkgeworICAgICAgICBjYXNlIFVzZToKKyAgICAgICAgY2FzZSBVc2VEZWY6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBEZWY6CisgICAgICAgIGNhc2UgVXNlQWRk
cjoKKyAgICAgICAgY2FzZSBMYXRlVXNlOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBSb2xlIGltcGxpZXMg
dGhhdCB0aGUgSW5zdCB3aWxsIFVzZSB0aGUgQXJnIGFmdGVyIGRvaW5nIGV2ZXJ5dGhpbmcgZWxz
ZS4KKyAgICBzdGF0aWMgYm9vbCBpc0xhdGVVc2UoUm9sZSByb2xlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHJvbGUgPT0gTGF0ZVVzZTsKKyAgICB9CisKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIFJvbGUgaW1wbGllcyB0aGF0IHRoZSBJbnN0IHdpbGwgRGVmIHRoZSBBcmcuCiAgICAgc3Rh
dGljIGJvb2wgaXNEZWYoUm9sZSByb2xlKQogICAgIHsKICAgICAgICAgc3dpdGNoIChyb2xlKSB7
CiAgICAgICAgIGNhc2UgVXNlOgogICAgICAgICBjYXNlIFVzZUFkZHI6CisgICAgICAgIGNhc2Ug
TGF0ZVVzZToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBEZWY6CiAg
ICAgICAgIGNhc2UgVXNlRGVmOgpAQCAtNjU0LDcgKzY4MCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAobV9raW5kKSB7CiAgICAgICAgIGNhc2UgVG1wOgotICAgICAgICAgICAg
QVNTRVJUKGlzVXNlKGFyZ1JvbGUpIHx8IGlzRGVmKGFyZ1JvbGUpKTsKKyAgICAgICAgICAgIEFT
U0VSVChpc0FueVVzZShhcmdSb2xlKSB8fCBpc0RlZihhcmdSb2xlKSk7CiAgICAgICAgICAgICBm
dW5jdG9yKG1fYmFzZSwgYXJnUm9sZSwgYXJnVHlwZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBBZGRyOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJH
ZW5lcmF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJHZW5lcmF0ZS5jcHAJKHJldmlzaW9uIDE5MjUwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyR2VuZXJhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSwxMCBA
QCB2b2lkIGdlbmVyYXRlKENvZGUmIGNvZGUsIENDYWxsSGVscGVycyYgCiAgICAgLy8gQWZ0ZXIg
dGhpcyBwaGFzZSwgZXZlcnkgVG1wIGhhcyBhIHJlZy4KICAgICAvLwogICAgIC8vIEZvciBkZWJ1
Z2dpbmcsIHlvdSBjYW4gdXNlIHNwaWxsRXZlcnl0aGluZygpIHRvIHB1dCBldmVyeXRoaW5nIHRv
IHRoZSBzdGFjayBiZXR3ZWVuIGVhY2ggSW5zdC4KLSAgICBpdGVyYXRlZFJlZ2lzdGVyQ29hbGVz
Y2luZyhjb2RlKTsKKyAgICBpZiAoZmFsc2UpCisgICAgICAgIHNwaWxsRXZlcnl0aGluZyhjb2Rl
KTsKKyAgICBlbHNlCisgICAgICAgIGl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nKGNvZGUpOwog
CiAgICAgLy8gUHJpb3IgdG8gdGhpcyBwb2ludCB0aGUgcHJvbG9ndWUgYW5kIGVwaWxvZ3VlIGlz
IGltcGxpY2l0LiBUaGlzIG1ha2VzIGl0IGV4cGxpY2l0LiBJdCBhbHNvCiAgICAgLy8gZG9lcyB0
aGluZ3MgbGlrZSBpZGVudGlmeSB3aGljaCBjYWxsZWUtc2F2ZXMgd2UncmUgdXNpbmcgYW5kIHNh
dmVzIHRoZW0uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckl0ZXJhdGVk
UmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvYWlyL0Fpckl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nLmNwcAkocmV2aXNpb24gMTky
NTA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJJdGVyYXRlZFJlZ2lzdGVy
Q29hbGVzY2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1
ZGUgIkFpckxpdmVuZXNzLmgiCiAjaW5jbHVkZSAiQWlyUGhhc2VTY29wZS5oIgogI2luY2x1ZGUg
IkFpclJlZ2lzdGVyUHJpb3JpdHkuaCIKKyNpbmNsdWRlIDx3dGYvTGlzdER1bXAuaD4KICNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7
IG5hbWVzcGFjZSBBaXIgewogCiBzdGF0aWMgYm9vbCBkZWJ1ZyA9IGZhbHNlOwogc3RhdGljIGJv
b2wgdHJhY2VEZWJ1ZyA9IGZhbHNlOworc3RhdGljIGJvb2wgcmVwb3J0U3RhdHMgPSBmYWxzZTsK
IAogdGVtcGxhdGU8QXJnOjpUeXBlIHR5cGU+CiBzdHJ1Y3QgTW92ZUluc3RIZWxwZXI7CkBAIC0x
NjgsNyArMTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGlmIChBcmc6OmlzRGVmKHJv
bGUpKQogICAgICAgICAgICAgICAgICAgICBkZWZUbXAgPSBhcmdUbXA7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChBcmc6OmlzVXNlKHJvbGUpKTsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKEFyZzo6aXNFYXJseVVzZShyb2xlKSk7CiAgICAg
ICAgICAgICAgICAgICAgIHVzZVRtcCA9IGFyZ1RtcDsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9KTsKQEAgLTIwNCw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1ha2VXb3Jr
TGlzdCgpOwogCiAgICAgICAgIGlmIChkZWJ1ZykgeworICAgICAgICAgICAgZGF0YUxvZygiSW50
ZXJmZXJlbmNlOiAiLCBsaXN0RHVtcChtX2ludGVyZmVyZW5jZUVkZ2VzKSwgIlxuIik7CiAgICAg
ICAgICAgICBkdW1wSW50ZXJmZXJlbmNlR3JhcGhJbkRvdChXVEY6OmRhdGFGaWxlKCkpOwogICAg
ICAgICAgICAgZGF0YUxvZygiSW5pdGlhbCB3b3JrIGxpc3RcbiIpOwogICAgICAgICAgICAgZHVt
cFdvcmtMaXN0cyhXVEY6OmRhdGFGaWxlKCkpOwpAQCAtNzQwLDYgKzc0MywxMSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgcmV0dXJuIFdURjo6SW50SGFzaDx1aW50NjRfdD46Omhhc2gobV92YWx1
ZSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgb3V0LnByaW50KGZpcnN0KCksICI8PT4iLCBzZWNv
bmQoKSk7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIHVpbnQ2NF90IG1fdmFs
dWUgeyAwIH07CiAgICAgfTsKQEAgLTk0OSw3ICs5NTcsNyBAQCBzdGF0aWMgdm9pZCBhZGRTcGls
bEFuZEZpbGxUb1Byb2dyYW0oQ29kCiAgICAgICAgICAgICAgICAgQXJnIGFyZyA9IEFyZzo6c3Rh
Y2soc3RhY2tTbG90RW50cnktPnZhbHVlKTsKICAgICAgICAgICAgICAgICBPcGNvZGUgbW92ZSA9
IHR5cGUgPT0gQXJnOjpHUCA/IE1vdmUgOiBNb3ZlRG91YmxlOwogCi0gICAgICAgICAgICAgICAg
aWYgKEFyZzo6aXNVc2Uocm9sZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoQXJnOjppc0FueVVz
ZShyb2xlKSkgewogICAgICAgICAgICAgICAgICAgICBUbXAgbmV3VG1wID0gY29kZS5uZXdUbXAo
dHlwZSk7CiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnQoaW5zdEluZGV4
LCBtb3ZlLCBpbnN0Lm9yaWdpbiwgYXJnLCBuZXdUbXApOwogICAgICAgICAgICAgICAgICAgICB0
bXAgPSBuZXdUbXA7CkBAIC05NjYsOSArOTc0LDEwIEBAIHN0YXRpYyB2b2lkIGFkZFNwaWxsQW5k
RmlsbFRvUHJvZ3JhbShDb2QKIH0KIAogdGVtcGxhdGU8QXJnOjpUeXBlIHR5cGU+Ci1zdGF0aWMg
dm9pZCBpdGVyYXRlZFJlZ2lzdGVyQ29hbGVzY2luZ09uVHlwZShDb2RlJiBjb2RlLCBIYXNoU2V0
PFRtcD4mIHVuc3BpbGxhYmxlVG1wcykKK3N0YXRpYyB2b2lkIGl0ZXJhdGVkUmVnaXN0ZXJDb2Fs
ZXNjaW5nT25UeXBlKENvZGUmIGNvZGUsIEhhc2hTZXQ8VG1wPiYgdW5zcGlsbGFibGVUbXBzLCB1
bnNpZ25lZCYgbnVtSXRlcmF0aW9ucykKIHsKICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICBu
dW1JdGVyYXRpb25zKys7CiAgICAgICAgIEl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nQWxsb2Nh
dG9yPHR5cGU+IGFsbG9jYXRvcihjb2RlLCB1bnNwaWxsYWJsZVRtcHMpOwogICAgICAgICBMaXZl
bmVzczxUbXA+IGxpdmVuZXNzKGNvZGUpOwogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2Nr
IDogY29kZSkgewpAQCAtOTc2LDcgKzk4NSw3IEBAIHN0YXRpYyB2b2lkIGl0ZXJhdGVkUmVnaXN0
ZXJDb2FsZXNjaW5nT24KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxv
Y2stPnNpemUoKTsgaW5zdEluZGV4LS07KSB7CiAgICAgICAgICAgICAgICAgSW5zdCYgaW5zdCA9
IGJsb2NrLT5hdChpbnN0SW5kZXgpOwogICAgICAgICAgICAgICAgIGFsbG9jYXRvci5idWlsZChp
bnN0LCBsb2NhbENhbGMpOwotICAgICAgICAgICAgICAgIGxvY2FsQ2FsYy5leGVjdXRlKGluc3Qp
OworICAgICAgICAgICAgICAgIGxvY2FsQ2FsYy5leGVjdXRlKGluc3RJbmRleCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApAQCAtOTk1LDEyICsxMDA0LDE0IEBAIHZvaWQgaXRlcmF0ZWRS
ZWdpc3RlckNvYWxlc2NpbmcoQ29kZSYgY28KIAogICAgIGJvb2wgZ3BJc0NvbG9yZWQgPSBmYWxz
ZTsKICAgICBib29sIGZwSXNDb2xvcmVkID0gZmFsc2U7CisgICAgdW5zaWduZWQgbnVtSXRlcmF0
aW9ucyA9IDA7CiAKICAgICBIYXNoU2V0PFRtcD4gdW5zcGlsbGFibGVHUHM7CiAgICAgSGFzaFNl
dDxUbXA+IHVuc3BpbGxhYmxlRlBzOwogCiAgICAgLy8gRmlyc3Qgd2UgcnVuIGJvdGggYWxsb2Nh
dG9yIHRvZ2V0aGVyIGFzIGxvbmcgYXMgdGhleSBib3RoIHNwaWxsLgogICAgIHdoaWxlICghZ3BJ
c0NvbG9yZWQgJiYgIWZwSXNDb2xvcmVkKSB7CisgICAgICAgIG51bUl0ZXJhdGlvbnMrKzsKICAg
ICAgICAgSXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdBbGxvY2F0b3I8QXJnOjpHUD4gZ3BBbGxv
Y2F0b3IoY29kZSwgdW5zcGlsbGFibGVHUHMpOwogICAgICAgICBJdGVyYXRlZFJlZ2lzdGVyQ29h
bGVzY2luZ0FsbG9jYXRvcjxBcmc6OkZQPiBmcEFsbG9jYXRvcihjb2RlLCB1bnNwaWxsYWJsZUZQ
cyk7CiAKQEAgLTEwMTUsNyArMTAyNiw3IEBAIHZvaWQgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2Np
bmcoQ29kZSYgY28KICAgICAgICAgICAgICAgICBncEFsbG9jYXRvci5idWlsZChpbnN0LCBsb2Nh
bENhbGMpOwogICAgICAgICAgICAgICAgIGZwQWxsb2NhdG9yLmJ1aWxkKGluc3QsIGxvY2FsQ2Fs
Yyk7CiAKLSAgICAgICAgICAgICAgICBsb2NhbENhbGMuZXhlY3V0ZShpbnN0KTsKKyAgICAgICAg
ICAgICAgICBsb2NhbENhbGMuZXhlY3V0ZShpbnN0SW5kZXgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKQEAgLTEwMzYsOSArMTA0NywxMiBAQCB2b2lkIGl0ZXJhdGVkUmVnaXN0ZXJDb2Fs
ZXNjaW5nKENvZGUmIGNvCiAgICAgfTsKIAogICAgIGlmICghZ3BJc0NvbG9yZWQpCi0gICAgICAg
IGl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nT25UeXBlPEFyZzo6R1A+KGNvZGUsIHVuc3BpbGxh
YmxlR1BzKTsKKyAgICAgICAgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2NpbmdPblR5cGU8QXJnOjpH
UD4oY29kZSwgdW5zcGlsbGFibGVHUHMsIG51bUl0ZXJhdGlvbnMpOwogICAgIGlmICghZnBJc0Nv
bG9yZWQpCi0gICAgICAgIGl0ZXJhdGVkUmVnaXN0ZXJDb2FsZXNjaW5nT25UeXBlPEFyZzo6RlA+
KGNvZGUsIHVuc3BpbGxhYmxlRlBzKTsKKyAgICAgICAgaXRlcmF0ZWRSZWdpc3RlckNvYWxlc2Np
bmdPblR5cGU8QXJnOjpGUD4oY29kZSwgdW5zcGlsbGFibGVGUHMsIG51bUl0ZXJhdGlvbnMpOwor
CisgICAgaWYgKHJlcG9ydFN0YXRzKQorICAgICAgICBkYXRhTG9nKCJOdW0gaXRlcmF0aW9ucyA9
ICIsIG51bUl0ZXJhdGlvbnMsICJcbiIpOwogfQogCiB9IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpC
Mzo6QWlyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckxpdmVuZXNzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJMaXZlbmVzcy5o
CShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpckxp
dmVuZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9saXZlQXRIZWFkLnJlc2l6ZShjb2RlLnNpemUoKSk7CiAgICAgICAgIG1fbGl2ZUF0VGFp
bC5yZXNpemUoY29kZS5zaXplKCkpOwogCisgICAgICAgIC8vIFRoZSBsaXZlQXRUYWlsIG9mIGVh
Y2ggYmxvY2sgYXV0b21hdGljYWxseSBjb250YWlucyB0aGUgTGF0ZVVzZSdzIG9mIHRoZSB0ZXJt
aW5hbC4KKyAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IGNvZGUpIHsKKyAgICAgICAg
ICAgIEhhc2hTZXQ8VGhpbmc+JiBsaXZlID0gbV9saXZlQXRUYWlsW2Jsb2NrXTsKKyAgICAgICAg
ICAgIGJsb2NrLT5sYXN0KCkuZm9yRWFjaDxUaGluZz4oCisgICAgICAgICAgICAgICAgWyZdIChU
aGluZyYgdGhpbmcsIEFyZzo6Um9sZSByb2xlLCBBcmc6OlR5cGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKEFyZzo6aXNMYXRlVXNlKHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
bGl2ZS5hZGQodGhpbmcpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisKICAgICAg
ICAgSW5kZXhTZXQ8QmFzaWNCbG9jaz4gc2VlbjsKIAogICAgICAgICBib29sIGNoYW5nZWQgPSB0
cnVlOwpAQCAtNjEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIExvY2FsQ2FsYyBsb2NhbENhbGMoKnRoaXMsIGJsb2NrKTsK
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpbnN0SW5kZXggPSBibG9jay0+c2l6ZSgpOyBp
bnN0SW5kZXgtLTspCi0gICAgICAgICAgICAgICAgICAgIGxvY2FsQ2FsYy5leGVjdXRlKGJsb2Nr
LT5hdChpbnN0SW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxDYWxjLmV4ZWN1dGUo
aW5zdEluZGV4KTsKICAgICAgICAgICAgICAgICBib29sIGZpcnN0VGltZSA9IHNlZW4uYWRkKGJs
b2NrKTsKICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0VGltZSAmJiBsb2NhbENhbGMubGl2ZSgp
ID09IG1fbGl2ZUF0SGVhZFtibG9ja10pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtOTAsMTQgKzEwMCwxNyBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBMb2NhbENh
bGMoTGl2ZW5lc3MmIGxpdmVuZXNzLCBCYXNpY0Jsb2NrKiBibG9jaykKICAgICAgICAgICAgIDog
bV9saXZlKGxpdmVuZXNzLmxpdmVBdFRhaWwoYmxvY2spKQorICAgICAgICAgICAgLCBtX2Jsb2Nr
KGJsb2NrKQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBIYXNoU2V0PFRo
aW5nPiYgbGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGl2ZTsgfQogICAgICAgICBIYXNoU2V0PFRo
aW5nPiYmIHRha2VMaXZlKCkgeyByZXR1cm4gV1RGOjptb3ZlKG1fbGl2ZSk7IH0KIAotICAgICAg
ICB2b2lkIGV4ZWN1dGUoSW5zdCYgaW5zdCkKKyAgICAgICAgdm9pZCBleGVjdXRlKHVuc2lnbmVk
IGluc3RJbmRleCkKICAgICAgICAgeworICAgICAgICAgICAgSW5zdCYgaW5zdCA9IG1fYmxvY2st
PmF0KGluc3RJbmRleCk7CisgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIEZpcnN0IGhhbmRs
ZSBkZWYncy4KICAgICAgICAgICAgIGluc3QuZm9yRWFjaDxUaGluZz4oCiAgICAgICAgICAgICAg
ICAgW3RoaXNdIChUaGluZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CkBAIC0x
MDcsMjAgKzEyMCwzNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2xpdmUu
cmVtb3ZlKGFyZyk7CiAgICAgICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIC8vIEZpbmFs
bHkgaGFuZGxlIHVzZSdzLgorICAgICAgICAgICAgLy8gVGhlbiBoYW5kbGUgdXNlJ3MuCiAgICAg
ICAgICAgICBpbnN0LmZvckVhY2g8VGhpbmc+KAogICAgICAgICAgICAgICAgIFt0aGlzXSAoVGhp
bmcmIGFyZywgQXJnOjpSb2xlIHJvbGUsIEFyZzo6VHlwZSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoIWlzQWxpdmUoYXJnKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKEFyZzo6aXNVc2Uocm9sZSkpCisgICAgICAgICAgICAgICAg
ICAgIGlmIChBcmc6OmlzRWFybHlVc2Uocm9sZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBt
X2xpdmUuYWRkKGFyZyk7CiAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIEFu
ZCBmaW5hbGx5LCBoYW5kbGUgdGhlIGxhdGUgdXNlJ3Mgb2YgdGhlIHByZXZpb3VzIGluc3RydWN0
aW9uLgorICAgICAgICAgICAgaWYgKGluc3RJbmRleCkgeworICAgICAgICAgICAgICAgIEluc3Qm
IHByZXZJbnN0ID0gbV9ibG9jay0+YXQoaW5zdEluZGV4IC0gMSk7CisKKyAgICAgICAgICAgICAg
ICBwcmV2SW5zdC5mb3JFYWNoPFRoaW5nPigKKyAgICAgICAgICAgICAgICAgICAgW3RoaXNdIChU
aGluZyYgYXJnLCBBcmc6OlJvbGUgcm9sZSwgQXJnOjpUeXBlKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIUFyZzo6aXNMYXRlVXNlKHJvbGUpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0FsaXZlKGFyZykp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9saXZlLmFkZChhcmcpOworICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgSGFzaFNldDxUaGluZz4gbV9saXZlOworICAgICAgICBCYXNpY0Jsb2NrKiBtX2Js
b2NrOwogICAgIH07Ci0gICAgCisKIHByaXZhdGU6CiAgICAgSW5kZXhNYXA8QmFzaWNCbG9jaywg
SGFzaFNldDxUaGluZz4+IG1fbGl2ZUF0SGVhZDsKICAgICBJbmRleE1hcDxCYXNpY0Jsb2NrLCBI
YXNoU2V0PFRoaW5nPj4gbV9saXZlQXRUYWlsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjAsMTUgKzMyMCw5IEBAIEJyYW5jaE11bDMyIFU6RywgVTpHLCBVRDpHIC9icmFuY2gK
ICAgICBSZXNDb25kLCBUbXAsIFRtcAogICAgIFJlc0NvbmQsIEFkZHIsIFRtcAogCi1CcmFuY2hN
dWwzMiBVOkcsIFU6RywgVTpHLCBEOkcgL2JyYW5jaAotICAgIFJlc0NvbmQsIFRtcCwgVG1wLCBU
bXAKLQogQnJhbmNoTXVsNjQgVTpHLCBVOkcsIFVEOkcgL2JyYW5jaAogICAgIFJlc0NvbmQsIFRt
cCwgVG1wCiAKLUJyYW5jaE11bDY0IFU6RywgVTpHLCBVOkcsIEQ6RyAvYnJhbmNoCi0gICAgUmVz
Q29uZCwgVG1wLCBUbXAsIFRtcAotCiBCcmFuY2hTdWIzMiBVOkcsIFU6RywgVUQ6RyAvYnJhbmNo
CiAgICAgUmVzQ29uZCwgVG1wLCBUbXAKICAgICBSZXNDb25kLCBJbW0sIFRtcApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJSZXBvcnRVc2VkUmVnaXN0ZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdp
c3RlcnMuY3BwCShyZXZpc2lvbiAxOTI1MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHZvaWQgcmVwb3J0VXNlZFJlZ2lzdGVycyhDb2RlJiBjb2RlKQogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBpbnN0LnJlcG9ydFVzZWRSZWdpc3RlcnMocmVnaXN0ZXJT
ZXQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbG9jYWxDYWxjLmV4ZWN1dGUoaW5zdCk7
CisgICAgICAgICAgICBsb2NhbENhbGMuZXhlY3V0ZShpbnN0SW5kZXgpOwogICAgICAgICB9CiAg
ICAgfQogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5
dGhpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWly
U3BpbGxFdmVyeXRoaW5nLmNwcAkocmV2aXNpb24gMTkyNTA3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJTcGlsbEV2ZXJ5dGhpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw3ICs2OSw3IEBAIHZvaWQgc3BpbGxFdmVyeXRoaW5nKENvZGUmIGNvZGUpCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaW5zdEluZGV4ID0gYmxvY2stPnNpemUoKTsgaW5zdEluZGV4LS07KSB7CiAg
ICAgICAgICAgICBJbnN0JiBpbnN0ID0gYmxvY2stPmF0KGluc3RJbmRleCk7CiAgICAgICAgICAg
ICBzZXRVc2VkUmVnaXN0ZXJzKGluc3RJbmRleCArIDEsIGluc3QpOwotICAgICAgICAgICAgbG9j
YWxDYWxjLmV4ZWN1dGUoaW5zdCk7CisgICAgICAgICAgICBsb2NhbENhbGMuZXhlY3V0ZShpbnN0
SW5kZXgpOwogICAgICAgICB9CiAKICAgICAgICAgSW5zdCBub3A7CkBAIC0xNDAsNiArMTQwLDcg
QEAgdm9pZCBzcGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICBjYXNlIEFyZzo6VXNlRGVmOgorICAgICAgICAgICAgICAgICAgICBjYXNlIEFyZzo6TGF0ZVVz
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoUmVnIHJlZyA6IHJlZ3NJblByaW9yaXR5
T3JkZXIodHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNldEJlZm9y
ZS5nZXQocmVnKSAmJiAhc2V0QWZ0ZXIuZ2V0KHJlZykpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2V0QWZ0ZXIuc2V0KHJlZyk7CkBAIC0xNjAsNyArMTYxLDcgQEAgdm9pZCBz
cGlsbEV2ZXJ5dGhpbmcoQ29kZSYgY29kZSkKIAogICAgICAgICAgICAgICAgICAgICBPcGNvZGUg
bW92ZSA9IHR5cGUgPT0gQXJnOjpHUCA/IE1vdmUgOiBNb3ZlRG91YmxlOwogCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChBcmc6OmlzVXNlKHJvbGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChBcmc6OmlzQW55VXNlKHJvbGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRp
b25TZXQuaW5zZXJ0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RJbmRleCwgbW92
ZSwgaW5zdC5vcmlnaW4sIGFyZywgdG1wKTsKICAgICAgICAgICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE5MjUwNykKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTUtMTEtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KKworICAgICAgICBDaGVja0FkZC9NdWwgc2hvdWxkIGhhdmUgY29tbXV0YXRpdml0eSBv
cHRpbWl6YXRpb25zIGluIEIzLT5BaXIgbG93ZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MTIxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERpc2FibGUgbXkgZmFpbGVkIGF0dGVtcHRzIGF0IHBl
cmZlY3QgZm9yd2FyZGluZywgc2luY2UgdGhleSB3ZXJlIGluY29ycmVjdCwgYW5kIGNhdXNlZCBj
b21waWxlCisgICAgICAgIGVycm9ycyBpZiB5b3UgdHJpZWQgdG8gcGFzcyBhbiBhcmd1bWVudCB0
aGF0IGJvdW5kIHRvIGx2YWx1ZS4gVGhpcyBzaG91bGRuJ3QgYWZmZWN0IHBlcmZvcm1hbmNlIG9m
CisgICAgICAgIGFueXRoaW5nIHdlIGNhcmUgYWJvdXQsIGFuZCBwZXJmb3JtYW5jZSB0ZXN0cyBz
ZWVtIHRvIGNvbmZpcm0gdGhhdCBpdCdzIGFsbCBnb29kLgorCisgICAgICAgICogd3RmL1Njb3Bl
ZExhbWJkYS5oOgorCiAyMDE1LTExLTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRW5hYmxlIGNyb3NzLXBsYXRmb3JtIGNvbnRleHQgbWVudXMgYnkg
ZGVmYXVsdApJbmRleDogU291cmNlL1dURi93dGYvU2NvcGVkTGFtYmRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi93dGYvU2NvcGVkTGFtYmRhLmgJKHJldmlzaW9uIDE5MjUwNykKKysrIFNv
dXJjZS9XVEYvd3RmL1Njb3BlZExhbWJkYS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxOSArNDQs
MjAgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25UeXBlPiBjbGFzcyBTYwogdGVtcGxhdGU8
dHlwZW5hbWUgUmVzdWx0VHlwZSwgdHlwZW5hbWUuLi4gQXJndW1lbnRUeXBlcz4KIGNsYXNzIFNj
b3BlZExhbWJkYTxSZXN1bHRUeXBlIChBcmd1bWVudFR5cGVzLi4uKT4gewogcHVibGljOgotICAg
IFNjb3BlZExhbWJkYShSZXN1bHRUeXBlICgqaW1wbCkodm9pZCogYXJnLCBBcmd1bWVudFR5cGVz
JiYuLi4pID0gbnVsbHB0ciwgdm9pZCogYXJnID0gbnVsbHB0cikKKyAgICBTY29wZWRMYW1iZGEo
UmVzdWx0VHlwZSAoKmltcGwpKHZvaWQqIGFyZywgQXJndW1lbnRUeXBlcy4uLikgPSBudWxscHRy
LCB2b2lkKiBhcmcgPSBudWxscHRyKQogICAgICAgICA6IG1faW1wbChpbXBsKQogICAgICAgICAs
IG1fYXJnKGFyZykKICAgICB7CiAgICAgfQotICAgIAotICAgIFJlc3VsdFR5cGUgb3BlcmF0b3Io
KShBcmd1bWVudFR5cGVzJiYuLi4gYXJndW1lbnRzKSBjb25zdAorCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUuLi4gUGFzc2VkQXJndW1lbnRUeXBlcz4KKyAgICBSZXN1bHRUeXBlIG9wZXJhdG9yKCko
UGFzc2VkQXJndW1lbnRUeXBlcyYmLi4uIGFyZ3VtZW50cykgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX2ltcGwobV9hcmcsIHN0ZDo6Zm9yd2FyZDxBcmd1bWVudFR5cGVzPihhcmd1bWVu
dHMpLi4uKTsKKyAgICAgICAgcmV0dXJuIG1faW1wbChtX2FyZywgc3RkOjpmb3J3YXJkPFBhc3Nl
ZEFyZ3VtZW50VHlwZXM+KGFyZ3VtZW50cykuLi4pOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBS
ZXN1bHRUeXBlICgqbV9pbXBsKSh2b2lkKiBhcmcsIEFyZ3VtZW50VHlwZXMmJi4uLik7CisgICAg
UmVzdWx0VHlwZSAoKm1faW1wbCkodm9pZCogYXJnLCBBcmd1bWVudFR5cGVzLi4uKTsKICAgICB2
b2lkICptX2FyZzsKIH07CiAKQEAgLTcyLDEwICs3Myw5IEBAIHB1YmxpYzoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIFJlc3VsdFR5cGUgaW1wbEZ1bmN0aW9uKHZvaWQqIGFyZ3VtZW50
LCBBcmd1bWVudFR5cGVzJiYuLi4gYXJndW1lbnRzKQorICAgIHN0YXRpYyBSZXN1bHRUeXBlIGlt
cGxGdW5jdGlvbih2b2lkKiBhcmd1bWVudCwgQXJndW1lbnRUeXBlcy4uLiBhcmd1bWVudHMpCiAg
ICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NvcGVkTGFtYmRhRnVuY3Rvcio+KGFy
Z3VtZW50KS0+bV9mdW5jdG9yKAotICAgICAgICAgICAgc3RkOjpmb3J3YXJkPEFyZ3VtZW50VHlw
ZXM+KGFyZ3VtZW50cykuLi4pOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NvcGVkTGFt
YmRhRnVuY3Rvcio+KGFyZ3VtZW50KS0+bV9mdW5jdG9yKGFyZ3VtZW50cy4uLik7CiAgICAgfQog
CiAgICAgRnVuY3RvciBtX2Z1bmN0b3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266256</attachid>
            <date>2015-11-30 11:58:00 -0800</date>
            <delta_ts>2015-11-30 12:02:19 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>53924</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkyODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNiBA
QAorMjAxNS0xMS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IE1hY3JvQXNzZW1ibGVyIG5lZWRzIGFuIEFQSSBmb3IgZGlzYWJsaW5nIHNjcmF0Y2ggcmVnaXN0
ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEw
MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGFkZHMgdHdvIHNjb3BlIGNsYXNzZXMsIERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbmQKKyAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLiBUaGUgZGVmYXVs
dCBpcyB0aGF0IHRoZSBzY3JhdGNoIHJlZ2lzdGVycyBhcmUgZW5hYmxlZC4gQWlyCisgICAgICAg
IGRpc2FibGVzIHRoZW0gYmVmb3JlIGdlbmVyYXRpb24uCisKKyAgICAgICAgSGVuY2Vmb3J0aCB0
aGUgcGF0dGVybiBpbnNpZGUgQjMgc3RhY2ttYXAgZ2VuZXJhdG9yIGNhbGxiYWNrcyB3aWxsIGJl
IHRoYXQgeW91IGNhbiBvbmx5IHVzZQorICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgaWYgeW91J3ZlIGVpdGhlciBzdXBwbGllZCB0aGUgc2NyYXRjaCByZWdpc3RlciBhcyBh
IGNsb2JiZXJlZAorICAgICAgICByZWdpc3RlciBhbmQgYXJyYW5nZWQgZm9yIGFsbCBvZiB0aGUg
c3RhY2ttYXAgdmFsdWVzIHRvIGJlIGxhdGUgdXNlcywgb3IgeW91J3JlIHdyaXRpbmcgYSB0ZXN0
CisgICAgICAgIGFuZCB5b3UncmUgT0sgd2l0aCBpdCBiZWluZyBmcmFnaWxlIHdpdGggcmVzcGVj
dCB0byBzY3JhdGNoIHJlZ2lzdGVycy4gVGhlIGxhdHRlciBob2xkcyBpbiBtb3N0CisgICAgICAg
IG9mIHRlc3RiMy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaDoK
KyAgICAgICAgKEpTQzo6b3B0aW1pemVGb3JYODYpOgorICAgICAgICAoSlNDOjpBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyOjpzZXRUZW1wUmVnaXN0ZXJWYWxpZCk6CisgICAgICAgICogYXNzZW1ibGVy
L0FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UpOgorICAgICAgICAoSlNDOjpBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2U6On5B
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UpOgorICAgICAgICAqIGFzc2VtYmxlci9EaXNh
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkRp
c2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZTo6RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlKToKKyAgICAgICAgKEpTQzo6RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlOjp+RGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OnNjcmF0Y2hSZWdpc3Rlcik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyWDg2Q29tbW9uOjpsb2FkRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246OmJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKToKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJYODZfNjQ6OmFkZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmFu
ZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6Om9yMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3ViMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6bG9hZDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YWRkRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNv
bnZlcnRJbnQzMlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6
OnN0b3JlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6c3RvcmU4KToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNhbGxXaXRoU2xvd1BhdGhSZXR1
cm5UeXBlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNhbGwpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0Ojp0YWlsUmVjdXJzaXZlQ2FsbCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyWDg2XzY0OjptYWtlVGFpbFJlY3Vyc2l2ZUNhbGwpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Nl82NDo6YWRkNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YWRkUHRyTm9GbGFncyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0
OjphbmQ2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojpsc2hpZnQ2NCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpvcjY0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN1YjY0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OnN0b3JlNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82
NDo6c3RvcmU2NFdpdGhBZGRyZXNzT2Zmc2V0UGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlclg4Nl82NDo6YnJhbmNoNjQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Nl82NDo6YnJhbmNoUHRyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJy
YW5jaFRlc3Q2NCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0Ojp0ZXN0NjQp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoUHRyV2l0aFBhdGNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDMyV2l0aFBhdGNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnN0b3JlUHRyV2l0aFBhdGNo
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmJyYW5jaDgpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6YnJhbmNoVGVzdDgpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6Y29udmVydEludDY0VG9Eb3VibGUpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmVhZENhbGxUYXJnZXQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6aGF2ZVNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OnNjcmF0Y2hSZWdpc3RlckZvckJs
aW5kaW5nKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJYODZfNjQ6OmNhbkp1bXBSZXBs
YWNlUGF0Y2hhYmxlQnJhbmNoUHRyV2l0aFBhdGNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJYODZfNjQ6OmNhbkp1bXBSZXBsYWNlUGF0Y2hhYmxlQnJhbmNoMzJXaXRoUGF0Y2gpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50
VG9QYXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2gpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlclg4Nl82NDo6cmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9QYXRjaGFibGVCcmFuY2gzMldpdGhQ
YXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpyZXZlcnRKdW1wUmVw
bGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyWDg2XzY0OjpyZXBhdGNoQ2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2
XzY0OjphZGQ2NEFuZFNldEZsYWdzKToKKyAgICAgICAgKiBiMy9haXIvQWlyR2VuZXJhdGUuY3Bw
OgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpnZW5lcmF0ZSk6CisgICAgICAgICogYjMvdGVzdGIz
LmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTaW1wbGVQYXRjaHBvaW50KToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aG91dE91cHV0Q2xvYmJlcnNHUEFyZ3Mp
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdFNpbXBsZVBhdGNocG9pbnRXaXRoT3VwdXRDbG9iYmVy
c0dQQXJncyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhvdXRP
dXB1dENsb2JiZXJzRlBBcmdzKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RTaW1wbGVQYXRjaHBv
aW50V2l0aE91cHV0Q2xvYmJlcnNGUEFyZ3MpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFBhdGNo
cG9pbnRDYWxsQXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RQYXRjaHBvaW50Rml4ZWRSZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0UGF0Y2hwb2ludEFueSk6CisgICAgICAgIChK
U0M6OkIzOjp0ZXN0UGF0Y2hwb2ludEFueUltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0U2lt
cGxlQ2hlY2spOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrTGVzc1RoYW4pOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdENoZWNrTWVnYUNvbWJvKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RD
aGVja0FkZEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tBZGRJbW1Db21tdXRlKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja0FkZEltbVNvbWVSZWdpc3Rlcik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0Q2hlY2tBZGQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRk
NjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrQWRkRm9sZEZhaWwpOgorICAgICAgICAo
SlNDOjpCMzo6dGVzdENoZWNrU3ViSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja1N1
YkJhZEltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tTdWIpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdENoZWNrU3ViNjQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrU3ViRm9s
ZEZhaWwpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENoZWNrTmVnKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RDaGVja05lZzY0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDaGVja011bCk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tNdWxNZW1vcnkpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdENoZWNrTXVsMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tNdWw2NCk6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Q2hlY2tNdWxGb2xkRmFpbCk6CisgICAgICAgIChKU0M6OkIzOjpn
ZW5lcmljVGVzdENvbXBhcmUpOgorICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgIChK
U0M6OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpHUFJJbmZvOjpyZXNlcnZl
ZFJlZ2lzdGVycyk6CisKIDIwMTUtMTEtMjYgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtBUk02NF0gc3RyZXNzL29wX2Rpdi5qcyBpcyBmYWlsaW5nIG9uIHNvbWUg
ZGl2aWRlIGJ5IDAgY2FzZXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTkyODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw2ICszMDYsOCBA
QAogCQkwRjMzOEUxRTFCRjI4NkVBMDAxM0M4OEYgLyogQjNMb3dlck1hY3Jvcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzMzhFMUExQkYyODZFQTAw
MTNDODhGIC8qIEIzTG93ZXJNYWNyb3MuaCAqLzsgfTsKIAkJMEYzNEIxNDkxNkQ0MjAxMDAwMUNE
QTVBIC8qIERGR1VzZUtpbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzNEIxNDcxNkQ0MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuY3BwICov
OyB9OwogCQkwRjM0QjE0QTE2RDQyMDEzMDAxQ0RBNUEgLyogREZHVXNlS2luZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNEIxNDgxNkQ0MjAwRTAw
MUNEQTVBIC8qIERGR1VzZUtpbmQuaCAqLzsgfTsKKwkJMEYzNzMwOEYxQzBDRDY4NTAwMDUyQkZB
IC8qIERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNzMwOEUxQzBDRDY4NTAwMDUyQkZBIC8q
IERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovOyB9OworCQkwRjM3MzA5MTFD
MENENzBDMDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM3MzA5MDFDMENENzBD
MDAwNTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi87IH07CiAJCTBG
MzhCMDExMTdDRjA3ODAwMEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMEYxN0NGMDc3RjAwQjE0
NEQzIC8qIExMSW50RW50cnlwb2ludC5jcHAgKi87IH07CiAJCTBGMzhCMDEyMTdDRjA3ODMwMEIx
NDREMyAvKiBMTEludEVudHJ5cG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMzhCMDEwMTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVudHJ5cG9p
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjM4QjAxNzE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzOEIwMTMxN0NGRTc1NTAw
QjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAqLzsgfTsKQEAgLTIzNjcsNiArMjM2OSw4
IEBACiAJCTBGMzM4RTFBMUJGMjg2RUEwMDEzQzg4RiAvKiBCM0xvd2VyTWFjcm9zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEIzTG93ZXJNYWNyb3MuaDsgcGF0aCA9IGIzL0Iz
TG93ZXJNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzNEIxNDcxNkQ0
MjAwRTAwMUNEQTVBIC8qIERGR1VzZUtpbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gREZHVXNlS2luZC5jcHA7IHBhdGggPSBkZmcvREZHVXNlS2luZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzRCMTQ4MTZENDIwMEUwMDFDREE1QSAvKiBE
RkdVc2VLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1VzZUtpbmQu
aDsgcGF0aCA9IGRmZy9ERkdVc2VLaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMzczMDhFMUMwQ0Q2ODUwMDA1MkJGQSAvKiBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzYWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMzcz
MDkwMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3Rl
clVzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzhCMDBGMTdDRjA3N0Yw
MEIxNDREMyAvKiBMTEludEVudHJ5cG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRF
bnRyeXBvaW50LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMzhCMDEwMTdDRjA3N0YwMEIxNDREMyAvKiBMTEludEVu
dHJ5cG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50Lmg7IHBhdGggPSBsbGlu
dC9MTEludEVudHJ5cG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYzOEIw
MTMxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NvbXBpbGF0aW9uS2V5LmNwcDsgcGF0aCA9IGRm
Zy9ERkdDb21waWxhdGlvbktleS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
MTY1LDYgKzYxNjksNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMEYxRkU1MUIxOTIyQTNCQzAw
Njk4N0M1IC8qIEFib3J0UmVhc29uLmggKi8sCiAJCQkJODYwMTYxREYwRjNBODNDMTAwRjg0NzEw
IC8qIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaCAqLywKKwkJCQkwRjM3MzA5MDFDMENENzBDMDAw
NTJCRkEgLyogQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmggKi8sCiAJCQkJODY0MDky
M0IxNTZFRUQzQjAwNTY2Q0IyIC8qIEFSTTY0QXNzZW1ibGVyLmggKi8sCiAJCQkJODZEM0IyQkYx
MDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgKi8sCiAJCQkJODZEM0IyQzAxMDE1
NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5oICovLApAQCAtNjE3Miw2ICs2MTc3LDcgQEAK
IAkJCQk5Njg4Q0IxMzBFRDEyQjRFMDAxRDY0OUYgLyogQXNzZW1ibGVyQnVmZmVyLmggKi8sCiAJ
CQkJODZEM0IyQzExMDE1NkJERTAwMjg2NUU3IC8qIEFzc2VtYmxlckJ1ZmZlcldpdGhDb25zdGFu
dFBvb2wuaCAqLywKIAkJCQk4NkUxMTZCMDBGRTc1QUM4MDBCNTEyQkMgLyogQ29kZUxvY2F0aW9u
LmggKi8sCisJCQkJMEYzNzMwOEUxQzBDRDY4NTAwMDUyQkZBIC8qIERpc2FsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZS5oICovLAogCQkJCTBGRjQyNzU2MTU5MTRBMjAwMDRDQjlGRiAvKiBM
aW5rQnVmZmVyLmNwcCAqLywKIAkJCQk4NkQzQjNDMTEwMTU5RDdGMDAyODY1RTcgLyogTGlua0J1
ZmZlci5oICovLAogCQkJCTBGRUIzRUNFMTYyMzdGNjcwMEFCNjdBRCAvKiBNYWNyb0Fzc2VtYmxl
ci5jcHAgKi8sCkBAIC02MTg3LDggKzYxOTMsOCBAQAogCQkJCUZFNjhDNjM1MUI5MERERDkwMDQy
QkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuY3BwICovLAogCQkJCUZFNjhDNjM2MUI5MERE
RDkwMDQyQkNCMyAvKiBNYWNyb0Fzc2VtYmxlclByaW50ZXIuaCAqLywKIAkJCQk4NkFFNjRBNjEz
NUU1RTFDMDA5NjMwMTIgLyogTWFjcm9Bc3NlbWJsZXJTSDQuaCAqLywKLQkJCQk4NjAxNjFFMDBG
M0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQk4NjAxNjFFMTBG
M0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODZfNjQuaCAqLywKKwkJCQk4NjAxNjFF
MDBGM0E4M0MxMDBGODQ3MTAgLyogTWFjcm9Bc3NlbWJsZXJYODYuaCAqLywKIAkJCQlBN0E0QUUw
NzE3OTczQjI2MDA1NjEyQjEgLyogTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uY3BwICovLAogCQkJ
CTg2MDE2MUUyMEYzQTgzQzEwMEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oICov
LAogCQkJCTY1ODYwMTc3MTg1QThGNUUwMDAzMEVFRSAvKiBNYXhGcmFtZUV4dGVudEZvclNsb3dQ
YXRoQ2FsbC5oICovLApAQCAtNjk5NCw2ICs3MDAwLDcgQEAKIAkJCQkwRjJCOUNFRDE5RDBCQTdE
MDBCMUQxQjUgLyogREZHUHJvbW90ZWRIZWFwTG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGRkM5MjE2MUI5NEZCM0UwMDcxREQ2NiAvKiBERkdQcm9wZXJ0eVR5cGVLZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjE3NjYzMTk2QjhGOUUwMDkxMDUyQSAvKiBERkdQdXJlVmFsdWUuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMzczMDkxMUMwQ0Q3MEMwMDA1MkJGQSAvKiBBbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGM0ExQkZBMUE5RUNC
N0QwMDBERTAxQSAvKiBERkdQdXRTdGFja1NpbmtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJODZFQzlERDExMzI4REY4MjAwMkIyQUQ3IC8qIERGR1JlZ2lzdGVyQmFuay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYyRkNDRkMxOEE2MDA3MDAwMUEyN0Y4IC8qIERGR1NhZmVwb2ludC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC03NDc3LDYgKzc0ODQsNyBAQAogCQkJCTg2MDE2MUU2MEYzQTgzQzEw
MEY4NDcxMCAvKiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTcwMDg3M0ExN0NCRTg1MzAwQzNFNjQzIC8qIE1hcENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBNzg1MDdENzE3Q0JDNkZEMDAxMUY2RTcgLyogTWFwRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYzNzMwOEYxQzBDRDY4NTAwMDUyQkZBIC8qIERpc2FsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEE2NDQxNTE5NDIwQTZDNjFBRDE4
ODJFIC8qIE1hcERhdGFJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzRERUY5NDE4MkQ5
OTE0MDA1MjJDMjIgLyogTWFwSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3MDA4NzNFMTdDQkU4RDMwMEMzRTY0MyAvKiBNYXBQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDE5MjgwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC04Miw2ICs4Miw4IEBAIGlubGluZSBib29sIG9wdGltaXplRm9yWDg2KCkKICAgICBy
ZXR1cm4gaXNYODYoKSAmJiBPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXph
dGlvbnMoKTsKIH0KIAorY2xhc3MgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOworY2xh
c3MgRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlOwogY2xhc3MgTGlua0J1ZmZlcjsK
IGNsYXNzIFdhdGNocG9pbnQ7CiBuYW1lc3BhY2UgREZHIHsKQEAgLTExMTgsNyArMTEyMCwxMCBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fdGVtcFJlZ2lzdGVyc1ZhbGlkQml0cyB8PSByZWdpc3Rl
ck1hc2s7CiAgICAgfQogCisgICAgZnJpZW5kIGNsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZTsKKyAgICBmcmllbmQgY2xhc3MgRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVz
YWdlOwogICAgIHVuc2lnbmVkIG1fdGVtcFJlZ2lzdGVyc1ZhbGlkQml0czsKKyAgICBib29sIG1f
YWxsb3dTY3JhdGNoUmVnaXN0ZXIgeyB0cnVlIH07CiAKICAgICBWZWN0b3I8UmVmUHRyPFNoYXJl
ZFRhc2s8dm9pZChMaW5rQnVmZmVyJik+Pj4gbV9saW5rVGFza3M7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BbGxvd01hY3Jv
U2NyYXRjaFJlZ2lzdGVyVXNhZ2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZV9oCisj
ZGVmaW5lIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZV9oCisKKyNpZiBFTkFCTEUoQVNT
RU1CTEVSKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSB7CitwdWJsaWM6CisgICAg
QWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlKE1hY3JvQXNzZW1ibGVyJiBtYXNtKQorICAg
ICAgICA6IG1fbWFzbShtYXNtKQorICAgICAgICAsIG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJl
Z2lzdGVyKG1hc20ubV9hbGxvd1NjcmF0Y2hSZWdpc3RlcikKKyAgICB7CisgICAgICAgIG1hc20u
bV9hbGxvd1NjcmF0Y2hSZWdpc3RlciA9IHRydWU7CisgICAgfQorCisgICAgfkFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZSgpCisgICAgeworICAgICAgICBtX21hc20ubV9hbGxvd1NjcmF0
Y2hSZWdpc3RlciA9IG1fb2xkVmFsdWVPZkFsbG93U2NyYXRjaFJlZ2lzdGVyOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBNYWNyb0Fzc2VtYmxlciYgbV9tYXNtOworICAgIGJvb2wgbV9vbGRWYWx1
ZU9mQWxsb3dTY3JhdGNoUmVnaXN0ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShBU1NFTUJMRVIpCisKKyNlbmRpZiAvLyBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Rp
c2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Rpc2Fs
bG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBEaXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VfaAorI2RlZmluZSBEaXNhbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VfaAorCisjaWYgRU5BQkxFKEFTU0VNQkxFUikKKwor
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBE
aXNhbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgeworcHVibGljOgorICAgIERpc2FsbG93
TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZShNYWNyb0Fzc2VtYmxlciYgbWFzbSkKKyAgICAgICAg
OiBtX21hc20obWFzbSkKKyAgICAgICAgLCBtX29sZFZhbHVlT2ZBbGxvd1NjcmF0Y2hSZWdpc3Rl
cihtYXNtLm1fYWxsb3dTY3JhdGNoUmVnaXN0ZXIpCisgICAgeworICAgICAgICBtYXNtLm1fYWxs
b3dTY3JhdGNoUmVnaXN0ZXIgPSBmYWxzZTsKKyAgICB9CisKKyAgICB+RGlzYWxsb3dNYWNyb1Nj
cmF0Y2hSZWdpc3RlclVzYWdlKCkKKyAgICB7CisgICAgICAgIG1fbWFzbS5tX2FsbG93U2NyYXRj
aFJlZ2lzdGVyID0gbV9vbGRWYWx1ZU9mQWxsb3dTY3JhdGNoUmVnaXN0ZXI7CisgICAgfQorCitw
cml2YXRlOgorICAgIE1hY3JvQXNzZW1ibGVyJiBtX21hc207CisgICAgYm9vbCBtX29sZFZhbHVl
T2ZBbGxvd1NjcmF0Y2hSZWdpc3RlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKEFTU0VNQkxFUikKKworI2VuZGlmIC8vIERpc2FsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgJKHJldmlzaW9uIDE5Mjgw
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZD
b21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbiA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPFg4NkFzc2VtYmxlciwgTWFjcm9Bc3NlbWJsZXJYODZDb21tb24+IHsKIHB1YmxpYzoK
ICNpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRpYyBjb25zdCBYODZSZWdpc3RlcnM6OlJlZ2lzdGVy
SUQgc2NyYXRjaFJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpyMTE7CisgICAgLy8gVXNlIHRoaXMg
ZGlyZWN0bHkgb25seSBpZiB5b3UncmUgbm90IGdlbmVyYXRpbmcgY29kZSB3aXRoIGl0LgorICAg
IHN0YXRpYyBjb25zdCBYODZSZWdpc3RlcnM6OlJlZ2lzdGVySUQgc19zY3JhdGNoUmVnaXN0ZXIg
PSBYODZSZWdpc3RlcnM6OnIxMTsKKworICAgIC8vIFVzZSB0aGlzIHdoZW4gZ2VuZXJhdGluZyBj
b2RlIHNvIHRoYXQgd2UgZ2V0IGVuZm9yY2VtZW50IG9mIHRoZSBkaXNhbGxvd2luZyBvZiBzY3Jh
dGNoIHJlZ2lzdGVyCisgICAgLy8gdXNhZ2UuCisgICAgWDg2UmVnaXN0ZXJzOjpSZWdpc3RlcklE
IHNjcmF0Y2hSZWdpc3RlcigpCisgICAgeworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX2FsbG93
U2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIHNfc2NyYXRjaFJlZ2lzdGVyOworICAg
IH0KICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC03NDIsOCArNzUxLDggQEAgcHVibGljOgogICAg
ICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92c2Rf
bXIoYWRkcmVzcy5tX3ZhbHVlLCBkZXN0KTsKICNlbHNlCi0gICAgICAgIG1vdmUoYWRkcmVzcywg
c2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgbG9hZERvdWJsZShzY3JhdGNoUmVnaXN0ZXIsIGRl
c3QpOworICAgICAgICBtb3ZlKGFkZHJlc3MsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAg
bG9hZERvdWJsZShzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7CiAjZW5kaWYKICAgICB9CiAKQEAg
LTk2NCw4ICs5NzMsOCBAQCBwdWJsaWM6CiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgaWYgKG5l
Z1plcm9DaGVjaykgewogICAgICAgICAgICAgSnVtcCB2YWx1ZUlzTm9uWmVybyA9IGJyYW5jaFRl
c3QzMihOb25aZXJvLCBkZXN0KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdm1za3BkX3Jy
KHNyYywgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQo
YnJhbmNoVGVzdDMyKE5vblplcm8sIHNjcmF0Y2hSZWdpc3RlciwgVHJ1c3RlZEltbTMyKDEpKSk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Ztc2twZF9ycihzcmMsIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKKyAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVGVzdDMyKE5vblpl
cm8sIHNjcmF0Y2hSZWdpc3RlcigpLCBUcnVzdGVkSW1tMzIoMSkpKTsKICAgICAgICAgICAgIHZh
bHVlSXNOb25aZXJvLmxpbmsodGhpcyk7CiAgICAgICAgIH0KICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oCShyZXZpc2lvbiAxOTI4MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2XzY0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDM4ICs2MCwzOCBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVn
aXN0ZXIpOwotICAgICAgICBhZGQzMihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSk7Cisg
ICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVy
KCkpOworICAgICAgICBhZGQzMihpbW0sIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsKICAg
ICB9CiAgICAgCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1f
cHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgYW5kMzIoaW1tLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcikpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciks
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgYW5kMzIoaW1tLCBBZGRyZXNzKHNjcmF0Y2hS
ZWdpc3RlcigpKSk7CiAgICAgfQogICAgIAogICAgIHZvaWQgYWRkMzIoQWJzb2x1dGVBZGRyZXNz
IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkMzIoQWRk
cmVzcyhzY3JhdGNoUmVnaXN0ZXIpLCBkZXN0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIGFkZDMyKEFkZHJl
c3Moc2NyYXRjaFJlZ2lzdGVyKCkpLCBkZXN0KTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBvcjMy
KFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQogICAgIHsKLSAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIpOwot
ICAgICAgICBvcjMyKGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKKyAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
ICAgIG9yMzIoaW1tLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSk7CiAgICAgfQogCiAgICAg
dm9pZCBvcjMyKFJlZ2lzdGVySUQgcmVnLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKICAgICB7
Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lz
dGVyKTsKLSAgICAgICAgb3IzMihyZWcsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSk7CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkp
OworICAgICAgICBvcjMyKHJlZywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0K
IAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNj
cmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIHN1YjMyKGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIpKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNo
UmVnaXN0ZXIoKSk7CisgICAgICAgIHN1YjMyKGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIo
KSkpOwogICAgIH0KICAgICAKICAgICB2b2lkIGxvYWQ4KGNvbnN0IHZvaWQqIGFkZHJlc3MsIFJl
Z2lzdGVySUQgZGVzdCkKQEAgLTExMiwyMCArMTEyLDIwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
YWRkRG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJl
Z2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkc2RfbXIoMCwgc2NyYXRjaFJlZ2lzdGVy
LCBkZXN0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3Jh
dGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHNkX21yKDAsIHNjcmF0Y2hS
ZWdpc3RlcigpLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91Ymxl
KFRydXN0ZWRJbW0zMiBpbW0sIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92
ZShpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmN2dHNpMnNkX3Jy
KHNjcmF0Y2hSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0
ZXIoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmN2dHNpMnNkX3JyKHNjcmF0Y2hSZWdpc3Rlcigp
LCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgdm9p
ZCogYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwg
c2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lzdGVyKCkp
OworICAgICAgICBzdG9yZTMyKGltbSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwogICAgIH0KIAogICAg
IHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNvdXJjZSwgdm9pZCogYWRkcmVzcykKQEAgLTEzMywy
MSArMTMzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKHNvdXJjZSA9PSBYODZSZWdpc3RlcnM6
OmVheCkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfRUFYbShhZGRyZXNzKTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0
Y2hSZWdpc3Rlcik7Ci0gICAgICAgICAgICBzdG9yZTMyKHNvdXJjZSwgc2NyYXRjaFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgc2NyYXRjaFJlZ2lz
dGVyKCkpOworICAgICAgICAgICAgc3RvcmUzMihzb3VyY2UsIHNjcmF0Y2hSZWdpc3RlcigpKTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKICAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1t
LCB2b2lkKiBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MpLCBzY3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTgoaW1tLCBBZGRyZXNzKHNjcmF0
Y2hSZWdpc3RlcikpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0
Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgc3RvcmU4KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIoKSkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgcmVnLCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBzY3Jh
dGNoUmVnaXN0ZXIpOwotICAgICAgICBzdG9yZTgocmVnLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3Rl
cikpOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hSZWdpc3Rl
cigpKTsKKyAgICAgICAgc3RvcmU4KHJlZywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwog
ICAgIH0KIAogI2lmIE9TKFdJTkRPV1MpCkBAIC0xNzUsOCArMTc1LDggQEAgcHVibGljOgogICAg
ICAgICBtb3ZlKFg4NlJlZ2lzdGVyczo6ZXNwLCBYODZSZWdpc3RlcnM6OmVjeCk7CiAgICAgICAg
IGFkZDY0KFRydXN0ZWRJbW0zMig0ICogc2l6ZW9mKGludDY0X3QpKSwgWDg2UmVnaXN0ZXJzOjpl
Y3gpOwogCi0gICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3Rl
ZEltbVB0cigwKSwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgQ2FsbCByZXN1bHQgPSBDYWxs
KG1fYXNzZW1ibGVyLmNhbGwoc2NyYXRjaFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGUpOworICAg
ICAgICBEYXRhTGFiZWxQdHIgbGFiZWwgPSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIoMCks
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgQ2FsbCByZXN1bHQgPSBDYWxsKG1fYXNzZW1i
bGVyLmNhbGwoc2NyYXRjaFJlZ2lzdGVyKCkpLCBDYWxsOjpMaW5rYWJsZSk7CiAKICAgICAgICAg
YWRkNjQoVHJ1c3RlZEltbTMyKDggKiBzaXplb2YoaW50NjRfdCkpLCBYODZSZWdpc3RlcnM6OmVz
cCk7CiAKQEAgLTIwMSwyMCArMjAxLDIwIEBAIHB1YmxpYzoKICAgICAgICAgLy8gV2UgZG9uJ3Qg
a25vdyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhdCB0aGlzIHBvaW50LCBzbyB0aGUgYXJndW1l
bnRzICg1LCA2LCAuLi4pIHNob3VsZCBhbHdheXMgYmUgY29waWVkLgogCiAgICAgICAgIC8vIENv
cHkgYXJndW1lbnQgNQotICAgICAgICBsb2FkNjQoQWRkcmVzcyhYODZSZWdpc3RlcnM6OmVzcCwg
NCAqIHNpemVvZihpbnQ2NF90KSksIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlNjQo
c2NyYXRjaFJlZ2lzdGVyLCBBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZXNwLCAtNCAqIHN0YXRpY19j
YXN0PGludDMyX3Q+KHNpemVvZihpbnQ2NF90KSkpKTsKKyAgICAgICAgbG9hZDY0KEFkZHJlc3Mo
WDg2UmVnaXN0ZXJzOjplc3AsIDQgKiBzaXplb2YoaW50NjRfdCkpLCBzY3JhdGNoUmVnaXN0ZXIo
KSk7CisgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyKCksIEFkZHJlc3MoWDg2UmVnaXN0
ZXJzOjplc3AsIC00ICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9mKGludDY0X3QpKSkpOwog
CiAgICAgICAgIC8vIENvcHkgYXJndW1lbnQgNgotICAgICAgICBsb2FkNjQoQWRkcmVzcyhYODZS
ZWdpc3RlcnM6OmVzcCwgNSAqIHNpemVvZihpbnQ2NF90KSksIHNjcmF0Y2hSZWdpc3Rlcik7Ci0g
ICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyLCBBZGRyZXNzKFg4NlJlZ2lzdGVyczo6ZXNw
LCAtMyAqIHN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihpbnQ2NF90KSkpKTsKKyAgICAgICAg
bG9hZDY0KEFkZHJlc3MoWDg2UmVnaXN0ZXJzOjplc3AsIDUgKiBzaXplb2YoaW50NjRfdCkpLCBz
Y3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoc2NyYXRjaFJlZ2lzdGVyKCksIEFk
ZHJlc3MoWDg2UmVnaXN0ZXJzOjplc3AsIC0zICogc3RhdGljX2Nhc3Q8aW50MzJfdD4oc2l6ZW9m
KGludDY0X3QpKSkpOwogCiAgICAgICAgIC8vIFdlIGFsc28gbmVlZCB0byBhbGxvY2F0ZSB0aGUg
c2hhZG93IHNwYWNlIG9uIHRoZSBzdGFjayBmb3IgdGhlIDQgcGFyYW1ldGVyIHJlZ2lzdGVycy4K
ICAgICAgICAgLy8gQWxzbywgd2Ugc2hvdWxkIGFsbG9jYXRlIDE2IGJ5dGVzIGZvciB0aGUgZnJh
bWUgcG9pbnRlciwgYW5kIHJldHVybiBhZGRyZXNzIChub3QgcG9wdWxhdGVkKS4KICAgICAgICAg
Ly8gSW4gYWRkaXRpb24sIHdlIG5lZWQgdG8gYWxsb2NhdGUgMTYgYnl0ZXMgZm9yIHR3byBtb3Jl
IHBhcmFtZXRlcnMsIHNpbmNlIHRoZSBjYWxsIGNhbiBoYXZlIHVwIHRvIDYgcGFyYW1ldGVycy4K
ICAgICAgICAgc3ViNjQoVHJ1c3RlZEltbTMyKDggKiBzaXplb2YoaW50NjRfdCkpLCBYODZSZWdp
c3RlcnM6OmVzcCk7CiAjZW5kaWYKLSAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdp
dGhQYXRjaChUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICBDYWxs
IHJlc3VsdCA9IENhbGwobV9hc3NlbWJsZXIuY2FsbChzY3JhdGNoUmVnaXN0ZXIpLCBDYWxsOjpM
aW5rYWJsZSk7CisgICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1
c3RlZEltbVB0cigwKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBDYWxsIHJlc3VsdCA9
IENhbGwobV9hc3NlbWJsZXIuY2FsbChzY3JhdGNoUmVnaXN0ZXIoKSksIENhbGw6OkxpbmthYmxl
KTsKICNpZiBPUyhXSU5ET1dTKQogICAgICAgICBhZGQ2NChUcnVzdGVkSW1tMzIoOCAqIHNpemVv
ZihpbnQ2NF90KSksIFg4NlJlZ2lzdGVyczo6ZXNwKTsKICNlbmRpZgpAQCAtMjI1LDE0ICsyMjUs
MTQgQEAgcHVibGljOgogICAgIC8vIEFkZHJlc3MgaXMgYSBtZW1vcnkgbG9jYXRpb24gY29udGFp
bmluZyB0aGUgYWRkcmVzcyB0byBqdW1wIHRvCiAgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVz
cyBhZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9w
dHIpLCBzY3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICBqdW1wKEFkZHJlc3Moc2NyYXRjaFJlZ2lz
dGVyKSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRj
aFJlZ2lzdGVyKCkpOworICAgICAgICBqdW1wKEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKCkpKTsK
ICAgICB9CiAKICAgICBDYWxsIHRhaWxSZWN1cnNpdmVDYWxsKCkKICAgICB7Ci0gICAgICAgIERh
dGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZEltbVB0cigwKSwgc2NyYXRj
aFJlZ2lzdGVyKTsKLSAgICAgICAgSnVtcCBuZXdKdW1wID0gSnVtcChtX2Fzc2VtYmxlci5qbXBf
cihzY3JhdGNoUmVnaXN0ZXIpKTsKKyAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdp
dGhQYXRjaChUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIEp1
bXAgbmV3SnVtcCA9IEp1bXAobV9hc3NlbWJsZXIuam1wX3Ioc2NyYXRjaFJlZ2lzdGVyKCkpKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChsYWJlbCwgZGlmZmVyZW5jZUJldHdlZW4obGFiZWwsIG5l
d0p1bXApID09IFJFUEFUQ0hfT0ZGU0VUX0NBTExfUjExKTsKICAgICAgICAgcmV0dXJuIENhbGw6
OmZyb21UYWlsSnVtcChuZXdKdW1wKTsKICAgICB9CkBAIC0yNDAsMTYgKzI0MCwxNiBAQCBwdWJs
aWM6CiAgICAgQ2FsbCBtYWtlVGFpbFJlY3Vyc2l2ZUNhbGwoSnVtcCBvbGRKdW1wKQogICAgIHsK
ICAgICAgICAgb2xkSnVtcC5saW5rKHRoaXMpOwotICAgICAgICBEYXRhTGFiZWxQdHIgbGFiZWwg
PSBtb3ZlV2l0aFBhdGNoKFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAg
ICAgIEp1bXAgbmV3SnVtcCA9IEp1bXAobV9hc3NlbWJsZXIuam1wX3Ioc2NyYXRjaFJlZ2lzdGVy
KSk7CisgICAgICAgIERhdGFMYWJlbFB0ciBsYWJlbCA9IG1vdmVXaXRoUGF0Y2goVHJ1c3RlZElt
bVB0cigwKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICBKdW1wIG5ld0p1bXAgPSBKdW1w
KG1fYXNzZW1ibGVyLmptcF9yKHNjcmF0Y2hSZWdpc3RlcigpKSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQobGFiZWwsIGRpZmZlcmVuY2VCZXR3ZWVuKGxhYmVsLCBuZXdKdW1wKSA9PSBSRVBBVENI
X09GRlNFVF9DQUxMX1IxMSk7CiAgICAgICAgIHJldHVybiBDYWxsOjpmcm9tVGFpbEp1bXAobmV3
SnVtcCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgVHJ1c3RlZEltbTMyIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewotICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoZGVzdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAg
ICAgIGFkZDMyKHNyYywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKKyAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIGFk
ZDMyKHNyYywgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgICAgICByZXR1cm4gSnVt
cChtX2Fzc2VtYmxlci5qQ0MoeDg2Q29uZGl0aW9uKGNvbmQpKSk7CiAgICAgfQogCkBAIC0yNjUs
OCArMjY1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGQ2NChBYnNvbHV0ZUFkZHJlc3Mgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3Jj
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkNjQoQWRkcmVzcyhzY3JhdGNo
UmVnaXN0ZXIpLCBkZXN0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNyYy5tX3B0ciks
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgYWRkNjQoQWRkcmVzcyhzY3JhdGNoUmVnaXN0
ZXIoKSksIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgYWRkNjQoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBzcmNEZXN0KQpAQCAtMzA5LDggKzMwOSw4IEBAIHB1YmxpYzoKICAgICAgICAg
aWYgKCFpbW0ubV92YWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIGFk
ZDY0KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIpKTsKKyAgICAgICAgbW92ZShUcnVzdGVk
SW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIGFkZDY0
KGltbSwgQWRkcmVzcyhzY3JhdGNoUmVnaXN0ZXIoKSkpOwogICAgIH0KIAogICAgIHZvaWQgYWRk
UHRyTm9GbGFncyhUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyY0Rlc3QpCkBAIC0zMzAs
OCArMzMwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhbmQ2NChUcnVzdGVkSW1tUHRyIGltbSwg
UmVnaXN0ZXJJRCBzcmNEZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdp
c3Rlcik7Ci0gICAgICAgIGFuZDY0KHNjcmF0Y2hSZWdpc3Rlciwgc3JjRGVzdCk7CisgICAgICAg
IG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIGFuZDY0KHNjcmF0Y2hSZWdp
c3RlcigpLCBzcmNEZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGxzaGlmdDY0KFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTQzMiw4ICs0MzIsOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIG9yNjQoVHJ1c3RlZEltbTY0IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAg
ICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIG9yNjQoc2NyYXRjaFJl
Z2lzdGVyLCBkZXN0KTsKKyAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAg
ICAgICAgb3I2NChzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBv
cjY0KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTQ4Miw4ICs0ODIsOCBA
QCBwdWJsaWM6CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAxKQogICAgICAgICAgICAgbV9h
c3NlbWJsZXIuZGVjcV9yKGRlc3QpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1vdmUo
aW1tLCBzY3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICAgICAgc3ViNjQoc2NyYXRjaFJlZ2lzdGVy
LCBkZXN0KTsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAg
ICAgICAgICBzdWI2NChzY3JhdGNoUmVnaXN0ZXIoKSwgZGVzdCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTU2MSw4ICs1NjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChzcmMgPT0gWDg2UmVn
aXN0ZXJzOjplYXgpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX0VBWG0oYWRkcmVzcyk7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3Mp
LCBzY3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICAgICAgc3RvcmU2NChzcmMsIHNjcmF0Y2hSZWdp
c3Rlcik7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcyksIHNjcmF0Y2hS
ZWdpc3RlcigpKTsKKyAgICAgICAgICAgIHN0b3JlNjQoc3JjLCBzY3JhdGNoUmVnaXN0ZXIoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU3OCwxNCArNTc4LDE0IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVn
aXN0ZXIpOwotICAgICAgICBzdG9yZTY0KHNjcmF0Y2hSZWdpc3RlciwgYWRkcmVzcyk7CisgICAg
ICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHN0b3JlNjQoc2NyYXRj
aFJlZ2lzdGVyKCksIGFkZHJlc3MpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmU2NChUcnVzdGVk
SW1tNjQgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBz
Y3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5tb3ZxX3JtKHNjcmF0Y2hSZWdp
c3RlciwgYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZSk7CisgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLm1vdnFfcm0oc2NyYXRjaFJlZ2lzdGVyKCksIGFkZHJlc3Mub2Zmc2V0LCBh
ZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgIH0KICAgICAK
ICAgICBEYXRhTGFiZWwzMiBzdG9yZTY0V2l0aEFkZHJlc3NPZmZzZXRQYXRjaChSZWdpc3RlcklE
IHNyYywgQWRkcmVzcyBhZGRyZXNzKQpAQCAtNjY4LDggKzY2OCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnRlc3RxX3JyKGxlZnQsIGxlZnQpOwogICAgICAgICAgICAgcmV0
dXJuIEp1bXAobV9hc3NlbWJsZXIuakNDKHg4NkNvbmRpdGlvbihjb25kKSkpOwogICAgICAgICB9
Ci0gICAgICAgIG1vdmUocmlnaHQsIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBi
cmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBtb3ZlKHJpZ2h0
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g2NChSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgQWRkcmVzcyByaWdodCkKQEAgLTY4
MCw4ICs2ODAsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAg
ewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIobGVmdC5tX3B0ciksIHNjcmF0Y2hSZWdpc3Rl
cik7Ci0gICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3Rl
ciksIHJpZ2h0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIpLCBzY3Jh
dGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBBZGRyZXNzKHNj
cmF0Y2hSZWdpc3RlcigpKSwgcmlnaHQpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoNjQoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCkBA
IC02OTIsOCArNjkyLDggQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2g2NChSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTY0IHJpZ2h0KQogICAgIHsK
LSAgICAgICAgbW92ZShyaWdodCwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJy
YW5jaDY0KGNvbmQsIGxlZnQsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIG1vdmUocmlnaHQs
IHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KGNvbmQsIGxlZnQs
IHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDY0KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgcmlnaHQpCkBA
IC03MDksOCArNzA5LDggQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hQdHIoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbVB0ciByaWdodCkKICAg
ICB7Ci0gICAgICAgIG1vdmUocmlnaHQsIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVy
biBicmFuY2hQdHIoY29uZCwgbGVmdCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZShy
aWdodCwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICByZXR1cm4gYnJhbmNoUHRyKGNvbmQs
IGxlZnQsIHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q2
NChSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykK
QEAgLTczMyw4ICs3MzMsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q2NChSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW02NCBtYXNrKQogICAg
IHsKLSAgICAgICAgbW92ZShtYXNrLCBzY3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDY0KGNvbmQsIHJlZywgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZSht
YXNrLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoY29u
ZCwgcmVnLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgdm9pZCB0ZXN0NjQoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVn
aXN0ZXJJRCBkZXN0KQpAQCAtNzU2LDggKzc1Niw4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJh
bmNoVGVzdDY0KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywg
VHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgbG9h
ZDY0KGFkZHJlc3MubV9wdHIsIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFu
Y2hUZXN0NjQoY29uZCwgc2NyYXRjaFJlZ2lzdGVyLCBtYXNrKTsKKyAgICAgICAgbG9hZDY0KGFk
ZHJlc3MubV9wdHIsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3Q2NChjb25kLCBzY3JhdGNoUmVnaXN0ZXIoKSwgbWFzayk7CiAgICAgfQogCiAgICAgSnVtcCBi
cmFuY2hUZXN0NjQoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3Rl
ZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQpAQCAtODk2LDI4ICs4OTYsMjggQEAgcHVi
bGljOgogCiAgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0Y2goUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIERhdGFMYWJlbFB0ciYgZGF0YUxhYmVsLCBUcnVzdGVkSW1t
UHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0cigwKSkKICAgICB7Ci0gICAgICAg
IGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIHNjcmF0Y2hSZWdp
c3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0
ZXIpOworICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVl
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBicmFuY2g2NChjb25kLCBsZWZ0
LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hQdHJXaXRoUGF0
Y2goUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIERhdGFMYWJlbFB0ciYg
ZGF0YUxhYmVsLCBUcnVzdGVkSW1tUHRyIGluaXRpYWxSaWdodFZhbHVlID0gVHJ1c3RlZEltbVB0
cigwKSkKICAgICB7Ci0gICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlhbFJp
Z2h0VmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2g2NChjb25k
LCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIpOworICAgICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBh
dGNoKGluaXRpYWxSaWdodFZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVy
biBicmFuY2g2NChjb25kLCBsZWZ0LCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAg
SnVtcCBicmFuY2gzMldpdGhQYXRjaChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
bGVmdCwgRGF0YUxhYmVsMzImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbTMyIGluaXRpYWxSaWdodFZh
bHVlID0gVHJ1c3RlZEltbTMyKDApKQogICAgIHsKICAgICAgICAgcGFkQmVmb3JlUGF0Y2goKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubW92bF9pMzJyKGluaXRpYWxSaWdodFZhbHVlLm1fdmFsdWUs
IHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxfaTMycihpbml0aWFs
UmlnaHRWYWx1ZS5tX3ZhbHVlLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CiAgICAgICAgIGRhdGFMYWJl
bCA9IERhdGFMYWJlbDMyKHRoaXMpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVm
dCwgc2NyYXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQs
IHNjcmF0Y2hSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJX
aXRoUGF0Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRy
ZXNzKQogICAgIHsKLSAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQYXRjaChp
bml0aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlNjQoc2NyYXRjaFJl
Z2lzdGVyLCBhZGRyZXNzKTsKKyAgICAgICAgRGF0YUxhYmVsUHRyIGxhYmVsID0gbW92ZVdpdGhQ
YXRjaChpbml0aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3RlcigpKTsKKyAgICAgICAgc3RvcmU2NChz
Y3JhdGNoUmVnaXN0ZXIoKSwgYWRkcmVzcyk7CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9
CiAKQEAgLTkzNCwyMiArOTM0LDIyIEBAIHB1YmxpYzoKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbjo6YnJhbmNoODsKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsK
LSAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0
Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uOjpicmFuY2g4KGNvbmQsIEFkZHJlc3Moc2NyYXRjaFJlZ2lzdGVyKSwgcmlnaHQp
OworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVzdGVkSW1tUHRyKGxl
ZnQubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2Vt
Ymxlclg4NkNvbW1vbjo6YnJhbmNoOChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdpc3RlcigpKSwg
cmlnaHQpOwogICAgIH0KICAgICAKICAgICB1c2luZyBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6
YnJhbmNoVGVzdDg7CiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwg
RXh0ZW5kZWRBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW1QdHIgYWRkcihyZWludGVycHJldF9jYXN0
PHZvaWQqPihhZGRyZXNzLm9mZnNldCkpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1v
bjo6bW92ZShhZGRyLCBzY3JhdGNoUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEJhc2VJbmRleChzY3JhdGNoUmVnaXN0
ZXIsIGFkZHJlc3MuYmFzZSwgVGltZXNPbmUpLCBtYXNrKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJYODZDb21tb246Om1vdmUoYWRkciwgc2NyYXRjaFJlZ2lzdGVyKCkpOworICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXJYODZDb21tb246OmJyYW5jaFRlc3Q4KGNvbmQsIEJhc2VJbmRleChz
Y3JhdGNoUmVnaXN0ZXIoKSwgYWRkcmVzcy5iYXNlLCBUaW1lc09uZSksIG1hc2spOwogICAgIH0K
ICAgICAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0
ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQog
ICAgIHsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJYODZDb21tb246Om1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVyWDg2Q29tbW9uOjpicmFuY2hUZXN0OChjb25kLCBBZGRyZXNzKHNjcmF0Y2hSZWdp
c3RlciksIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6bW92ZShUcnVz
dGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBzY3JhdGNoUmVnaXN0ZXIoKSk7CisgICAgICAgIHJl
dHVybiBNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6YnJhbmNoVGVzdDgoY29uZCwgQWRkcmVzcyhz
Y3JhdGNoUmVnaXN0ZXIoKSksIG1hc2spOwogICAgIH0KIAogICAgIHZvaWQgY29udmVydEludDY0
VG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtOTY3LDggKzk2
Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uUHRyKFg4NkFzc2VtYmxlcjo6
cmVhZFBvaW50ZXIoY2FsbC5kYXRhTGFiZWxQdHJBdE9mZnNldCgtUkVQQVRDSF9PRkZTRVRfQ0FM
TF9SMTEpLmRhdGFMb2NhdGlvbigpKSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaGF2ZVNj
cmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHN0YXRpYyBS
ZWdpc3RlcklEIHNjcmF0Y2hSZWdpc3RlckZvckJsaW5kaW5nKCkgeyByZXR1cm4gc2NyYXRjaFJl
Z2lzdGVyOyB9CisgICAgYm9vbCBoYXZlU2NyYXRjaFJlZ2lzdGVyRm9yQmxpbmRpbmcoKSB7IHJl
dHVybiBtX2FsbG93U2NyYXRjaFJlZ2lzdGVyOyB9CisgICAgUmVnaXN0ZXJJRCBzY3JhdGNoUmVn
aXN0ZXJGb3JCbGluZGluZygpIHsgcmV0dXJuIHNjcmF0Y2hSZWdpc3RlcigpOyB9CiAKICAgICBz
dGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJyYW5jaFB0cldpdGhQYXRjaCgpIHsg
cmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgYm9vbCBjYW5KdW1wUmVwbGFjZVBhdGNoYWJsZUJy
YW5jaDMyV2l0aFBhdGNoKCkgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTAwNSwxNyArMTAwNSwxNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9Q
YXRjaGFibGVCcmFuY2hQdHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgQWRkcmVzcywgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKLSAgICAgICAgWDg2QXNz
ZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9pNjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJs
ZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc2Ny
YXRjaFJlZ2lzdGVyKTsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXZlcnRKdW1wVG9fbW92cV9p
NjRyKGluc3RydWN0aW9uU3RhcnQuZXhlY3V0YWJsZUFkZHJlc3MoKSwgcmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4oaW5pdGlhbFZhbHVlKSwgc19zY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBSZXBsYWNlbWVudFRvUGF0Y2hhYmxlQnJhbmNoMzJX
aXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQWRkcmVzcywgaW50
MzJfdCBpbml0aWFsVmFsdWUpCiAgICAgewotICAgICAgICBYODZBc3NlbWJsZXI6OnJldmVydEp1
bXBUb19tb3ZsX2kzMnIoaW5zdHJ1Y3Rpb25TdGFydC5leGVjdXRhYmxlQWRkcmVzcygpLCBpbml0
aWFsVmFsdWUsIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0
SnVtcFRvX21vdmxfaTMycihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIGlu
aXRpYWxWYWx1ZSwgc19zY3JhdGNoUmVnaXN0ZXIpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lk
IHJldmVydEp1bXBSZXBsYWNlbWVudFRvQnJhbmNoUHRyV2l0aFBhdGNoKENvZGVMb2NhdGlvbkxh
YmVsIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQsIHZvaWQqIGluaXRpYWxWYWx1ZSkKICAg
ICB7Ci0gICAgICAgIFg4NkFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVj
dGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNzKCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KGluaXRpYWxWYWx1ZSksIHNjcmF0Y2hSZWdpc3Rlcik7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6
cmV2ZXJ0SnVtcFRvX21vdnFfaTY0cihpbnN0cnVjdGlvblN0YXJ0LmV4ZWN1dGFibGVBZGRyZXNz
KCksIHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluaXRpYWxWYWx1ZSksIHNfc2NyYXRjaFJl
Z2lzdGVyKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlTG9jYXRp
b25DYWxsIGNhbGwsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQpAQCAtMTA0Miw4ICsx
MDQyLDggQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IDEpCiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5pbmNxX3IoZGVzdCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3Rlcik7Ci0gICAgICAgICAgICBhZGQ2NChzY3JhdGNo
UmVnaXN0ZXIsIGRlc3QpOworICAgICAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWdpc3Rlcigp
KTsKKyAgICAgICAgICAgIGFkZDY0KHNjcmF0Y2hSZWdpc3RlcigpLCBkZXN0KTsKICAgICAgICAg
fQogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9u
IDE5MjgwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAorI2luY2x1
ZGUgIkFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2luY2x1ZGUgIkIzQXJndW1l
bnRSZWdWYWx1ZS5oIgogI2luY2x1ZGUgIkIzQmFzaWNCbG9ja0lubGluZXMuaCIKICNpbmNsdWRl
ICJCM0NDYWxsVmFsdWUuaCIKQEAgLTMxODIsNiArMzE4Myw3IEBAIHZvaWQgdGVzdFNpbXBsZVBh
dGNocG9pbnQoKQogICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIs
IFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpKTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3Io
CiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVy
VXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwcy5z
aXplKCkgPT0gMyk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1swXS5pc0dQUigpKTsK
ICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzFdLmlzR1BSKCkpOwpAQCAtMzIwOSw2ICsz
MjExLDcgQEAgdm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhvdXRPdXB1dENsbwogICAgIHBh
dGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVSZXA6OlNvbWVS
ZWdpc3RlcikpOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAyKTsKICAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzR1BSKCkpOwogICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnJlcHNbMV0uaXNHUFIoKSk7CkBAIC0zMjUzLDYgKzMyNTYsNyBAQCB2b2lkIHRl
c3RTaW1wbGVQYXRjaHBvaW50V2l0aE91cHV0Q2xvYmJlCiAKICAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBDSEVDSyhwYXJh
bXMucmVwcy5zaXplKCkgPT0gMyk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1swXS5p
c0dQUigpKTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzFdLmlzR1BSKCkpOwpAQCAt
MzI4Nyw2ICszMjkxLDcgQEAgdm9pZCB0ZXN0U2ltcGxlUGF0Y2hwb2ludFdpdGhvdXRPdXB1dENs
bwogICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGNvbnN0MiwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3RlcikpOwogICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAg
ICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9
PSAyKTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzRlBSKCkpOwogICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMV0uaXNGUFIoKSk7CkBAIC0zMzI0LDYgKzMzMjksNyBA
QCB2b2lkIHRlc3RTaW1wbGVQYXRjaHBvaW50V2l0aE91cHV0Q2xvYmJlCiAKICAgICBwYXRjaHBv
aW50LT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0
IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBD
SEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gMyk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMu
cmVwc1swXS5pc0ZQUigpKTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzFdLmlzRlBS
KCkpOwpAQCAtMzM1Myw2ICszMzU5LDcgQEAgdm9pZCB0ZXN0UGF0Y2hwb2ludENhbGxBcmcoKQog
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpz
dGFja0FyZ3VtZW50KDgpKSk7CiAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAg
ICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMm
IHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFs
bG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09
IDMpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMF0uaXNHUFIoKSk7CiAgICAgICAg
ICAgICBDSEVDSyhwYXJhbXMucmVwc1sxXS5pc1N0YWNrKCkpOwpAQCAtMzM4MCw2ICszMzg3LDcg
QEAgdm9pZCB0ZXN0UGF0Y2hwb2ludEZpeGVkUmVnaXN0ZXIoKQogICAgIHBhdGNocG9pbnQtPmFw
cGVuZChDb25zdHJhaW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwKEdQUkluZm86OnJlZ1QxKSkpOwog
ICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAg
ICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAzKTsKICAgICAgICAgICAgIENI
RUNLKHBhcmFtcy5yZXBzWzBdLmlzR1BSKCkpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJl
cHNbMV0gPT0gVmFsdWVSZXAoR1BSSW5mbzo6cmVnVDApKTsKQEAgLTM0MTAsNiArMzQxOCw3IEBA
IHZvaWQgdGVzdFBhdGNocG9pbnRBbnkoKQogICAgIHBhdGNocG9pbnQtPmFwcGVuZChDb25zdHJh
aW5lZFZhbHVlKGFyZzIsIFZhbHVlUmVwOjpBbnkpKTsKICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAvLyBXZSBzaG91bGRu
J3QgaGF2ZSBzcGlsbGVkIHRoZSBpbnB1dHMsIHNvIHdlIGFzc2VydCB0aGF0IHRoZXkncmUgaW4g
cmVnaXN0ZXJzLgogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDMpOwog
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMF0uaXNHUFIoKSk7CkBAIC0zNDM2LDYgKzM0
NDUsNyBAQCB2b2lkIHRlc3RQYXRjaHBvaW50QW55SW1tKCkKICAgICBwYXRjaHBvaW50LT5hcHBl
bmQoQ29uc3RyYWluZWRWYWx1ZShhcmcyLCBWYWx1ZVJlcDo6QW55KSk7CiAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDMpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJl
cHNbMF0uaXNHUFIoKSk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1sxXS5pc0dQUigp
KTsKQEAgLTM0ODYsNiArMzQ5Niw3IEBAIHZvaWQgdGVzdFNpbXBsZUNoZWNrKCkKICAgICBDaGVj
a1ZhbHVlKiBjaGVjayA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBDaGVjaywg
T3JpZ2luKCksIGFyZyk7CiAgICAgY2hlY2stPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSAxKTsKIAog
ICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmsgYmVjYXVzZSBhIGZ1bmN0aW9u
IHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxlZQpAQCAtMzUxNyw2ICszNTI4LDcg
QEAgdm9pZCB0ZXN0Q2hlY2tMZXNzVGhhbigpCiAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgNDIpKSk7CiAgICAgY2hlY2stPnNldEdlbmVy
YXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5l
cmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5y
ZXBzLnNpemUoKSA9PSAxKTsKIAogICAgICAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdv
cmsgYmVjYXVzZSBhIGZ1bmN0aW9uIHRoaXMgc2ltcGxlIHNob3VsZCBuZXZlciBoYXZlIGNhbGxl
ZQpAQCAtMzU2Miw2ICszNTc0LDcgQEAgdm9pZCB0ZXN0Q2hlY2tNZWdhQ29tYm8oKQogICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDQyKSkp
OwogICAgIGNoZWNrLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAg
ICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAg
ICAgICAgICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gMSk7CiAKICAgICAgICAgICAgIC8v
IFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrIGJlY2F1c2UgYSBmdW5jdGlvbiB0aGlzIHNpbXBsZSBz
aG91bGQgbmV2ZXIgaGF2ZSBjYWxsZWUKQEAgLTM2MDEsNiArMzYxNCw3IEBAIHZvaWQgdGVzdENo
ZWNrQWRkSW1tKCkKICAgICBjaGVja0FkZC0+YXBwZW5kKGFyZzIpOwogICAgIGNoZWNrQWRkLT5z
ZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2Ny
YXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBDSEVDSyhw
YXJhbXMucmVwcy5zaXplKCkgPT0gNCk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1sy
XS5pc0dQUigpKTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLmlzQ29uc3RhbnQo
KSk7CkBAIC0zNjM2LDYgKzM2NTAsNyBAQCB2b2lkIHRlc3RDaGVja0FkZEltbUNvbW11dGUoKQog
ICAgIGNoZWNrQWRkLT5hcHBlbmQoYXJnMik7CiAgICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigK
ICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9u
UGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJV
c2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNp
emUoKSA9PSA0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkpOwog
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNDb25zdGFudCgpKTsKQEAgLTM2NzEs
NiArMzY4Niw3IEBAIHZvaWQgdGVzdENoZWNrQWRkSW1tU29tZVJlZ2lzdGVyKCkKICAgICBjaGVj
a0FkZC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIpOwogICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lz
dGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVw
cy5zaXplKCkgPT0gNCk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1syXS5pc0dQUigp
KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLmlzR1BSKCkpOwpAQCAtMzcwNyw2
ICszNzIzLDcgQEAgdm9pZCB0ZXN0Q2hlY2tBZGQoKQogICAgIGNoZWNrQWRkLT5hcHBlbmRTb21l
UmVnaXN0ZXIoYXJnMik7CiAgICAgY2hlY2tBZGQtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZd
IChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUoKSA9PSA0KTsK
ICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkpOwogICAgICAgICAgICAg
Q0hFQ0socGFyYW1zLnJlcHNbM10uaXNHUFIoKSk7CkBAIC0zNzM5LDYgKzM3NTYsNyBAQCB2b2lk
IHRlc3RDaGVja0FkZDY0KCkKICAgICBjaGVja0FkZC0+YXBwZW5kU29tZVJlZ2lzdGVyKGFyZzIp
OwogICAgIGNoZWNrQWRkLT5zZXRHZW5lcmF0b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAg
ICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkgPT0gNCk7CiAgICAgICAgICAgICBD
SEVDSyhwYXJhbXMucmVwc1syXS5pc0dQUigpKTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5y
ZXBzWzNdLmlzR1BSKCkpOwpAQCAtMzc4Nyw2ICszODA1LDcgQEAgdm9pZCB0ZXN0Q2hlY2tBZGRG
b2xkRmFpbChpbnQgYSwgaW50IGIpCiAgICAgQ2hlY2tWYWx1ZSogY2hlY2tBZGQgPSByb290LT5h
cHBlbmROZXc8Q2hlY2tWYWx1ZT4ocHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcxLCBhcmcy
KTsKICAgICBjaGVja0FkZC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBB
bGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAg
ICAgICBqaXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig0MiksIEdQUkluZm86OnJl
dHVyblZhbHVlR1BSKTsKICAgICAgICAgICAgIGppdC5lbWl0RnVuY3Rpb25FcGlsb2d1ZSgpOwog
ICAgICAgICAgICAgaml0LnJldCgpOwpAQCAtMzgxMSw2ICszODMwLDcgQEAgdm9pZCB0ZXN0Q2hl
Y2tTdWJJbW0oKQogICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMik7CiAgICAgY2hlY2tTdWItPnNl
dEdlbmVyYXRvcigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBh
cmFtcy5yZXBzLnNpemUoKSA9PSA0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJd
LmlzR1BSKCkpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNDb25zdGFudCgp
KTsKQEAgLTM4NDcsNiArMzg2Nyw3IEBAIHZvaWQgdGVzdENoZWNrU3ViQmFkSW1tKCkKICAgICBj
aGVja1N1Yi0+YXBwZW5kKGFyZzIpOwogICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0b3IoCiAgICAg
ICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFt
cyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwcy5zaXplKCkg
PT0gNCk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1syXS5pc0dQUigpKTsKICAgICAg
ICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzNdLmlzQ29uc3RhbnQoKSk7CkBAIC0zODg0LDYgKzM5
MDUsNyBAQCB2b2lkIHRlc3RDaGVja1N1YigpCiAgICAgY2hlY2tTdWItPmFwcGVuZChhcmcyKTsK
ICAgICBjaGVja1N1Yi0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAg
ICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDQpOwogICAgICAgICAgICAgQ0hF
Q0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVw
c1szXS5pc0dQUigpKTsKQEAgLTM5MjEsNiArMzk0Myw3IEBAIHZvaWQgdGVzdENoZWNrU3ViNjQo
KQogICAgIGNoZWNrU3ViLT5hcHBlbmQoYXJnMik7CiAgICAgY2hlY2tTdWItPnNldEdlbmVyYXRv
cigKICAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0
aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0
ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBz
LnNpemUoKSA9PSA0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkp
OwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNHUFIoKSk7CkBAIC0zOTY5LDYg
KzM5OTIsNyBAQCB2b2lkIHRlc3RDaGVja1N1YkZvbGRGYWlsKGludCBhLCBpbnQgYikKICAgICBD
aGVja1ZhbHVlKiBjaGVja1N1YiA9IHJvb3QtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPihwcm9jLCBD
aGVja1N1YiwgT3JpZ2luKCksIGFyZzEsIGFyZzIpOwogICAgIGNoZWNrU3ViLT5zZXRHZW5lcmF0
b3IoCiAgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJh
dGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKDQyKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwogICAgICAgICAgICAg
aml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgICAgICBqaXQucmV0KCk7CkBAIC0z
OTkyLDYgKzQwMTYsNyBAQCB2b2lkIHRlc3RDaGVja05lZygpCiAgICAgY2hlY2tOZWctPmFwcGVu
ZChhcmcyKTsKICAgICBjaGVja05lZy0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxs
SGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDMpOwogICAgICAg
ICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CiAgICAgICAgICAgICBqaXQuY29u
dmVydEludDMyVG9Eb3VibGUocGFyYW1zLnJlcHNbMl0uZ3ByKCksIEZQUkluZm86OmZwUmVnVDEp
OwpAQCAtNDAyMSw2ICs0MDQ2LDcgQEAgdm9pZCB0ZXN0Q2hlY2tOZWc2NCgpCiAgICAgY2hlY2tO
ZWctPmFwcGVuZChhcmcyKTsKICAgICBjaGVja05lZy0+c2V0R2VuZXJhdG9yKAogICAgICAgICBb
Jl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93
U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDMp
OwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CiAgICAgICAgICAg
ICBqaXQuY29udmVydEludDY0VG9Eb3VibGUocGFyYW1zLnJlcHNbMl0uZ3ByKCksIEZQUkluZm86
OmZwUmVnVDEpOwpAQCAtNDA1NSw2ICs0MDgxLDcgQEAgdm9pZCB0ZXN0Q2hlY2tNdWwoKQogICAg
IGNoZWNrTXVsLT5hcHBlbmQoYXJnMik7CiAgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKICAg
ICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFy
YW1zJiBwYXJhbXMpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2Fn
ZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzLnNpemUo
KSA9PSA0KTsKICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzJdLmlzR1BSKCkpOwogICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbM10uaXNHUFIoKSk7CkBAIC00MDk1LDYgKzQxMjIs
NyBAQCB2b2lkIHRlc3RDaGVja011bE1lbW9yeSgpCiAgICAgY2hlY2tNdWwtPmFwcGVuZChhcmcy
KTsKICAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwog
ICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDQpOwogICAgICAgICAgICAg
Q0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMu
cmVwc1szXS5pc0dQUigpKTsKQEAgLTQxNDAsNiArNDE2OCw3IEBAIHZvaWQgdGVzdENoZWNrTXVs
MigpCiAgICAgY2hlY2tNdWwtPmFwcGVuZChhcmcyKTsKICAgICBjaGVja011bC0+c2V0R2VuZXJh
dG9yKAogICAgICAgICBbJl0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdp
c3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJl
cHMuc2l6ZSgpID09IDQpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIo
KSk7CiAgICAgICAgICAgICBDSEVDSyhwYXJhbXMucmVwc1szXS5pc0NvbnN0YW50KCkpOwpAQCAt
NDE3Myw2ICs0MjAyLDcgQEAgdm9pZCB0ZXN0Q2hlY2tNdWw2NCgpCiAgICAgY2hlY2tNdWwtPmFw
cGVuZChhcmcyKTsKICAgICBjaGVja011bC0+c2V0R2VuZXJhdG9yKAogICAgICAgICBbJl0gKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
eworICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRj
aChqaXQpOwogICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6ZSgpID09IDQpOwogICAg
ICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHNbMl0uaXNHUFIoKSk7CiAgICAgICAgICAgICBDSEVD
SyhwYXJhbXMucmVwc1szXS5pc0dQUigpKTsKQEAgLTQyMjEsNiArNDI1MSw3IEBAIHZvaWQgdGVz
dENoZWNrTXVsRm9sZEZhaWwoaW50IGEsIGludCBiKQogICAgIENoZWNrVmFsdWUqIGNoZWNrTXVs
ID0gcm9vdC0+YXBwZW5kTmV3PENoZWNrVmFsdWU+KHByb2MsIENoZWNrTXVsLCBPcmlnaW4oKSwg
YXJnMSwgYXJnMik7CiAgICAgY2hlY2tNdWwtPnNldEdlbmVyYXRvcigKICAgICAgICAgWyZdIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAg
ICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQp
OwogICAgICAgICAgICAgaml0Lm1vdmUoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNDIpLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKICAgICAgICAgICAgIGppdC5yZXQoKTsKQEAgLTQyNzQsNiArNDMwNSw3IEBAIHZv
aWQgZ2VuZXJpY1Rlc3RDb21wYXJlKAogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSB0aGVuQ2FzZS0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJvYywgSW50MzIsIE9y
aWdpbigpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKAogICAgICAgICAgICAg
WyZdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBw
YXJhbXMpIHsKKyAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2Ug
YWxsb3dTY3JhdGNoKGppdCk7CiAgICAgICAgICAgICAgICAgQ0hFQ0socGFyYW1zLnJlcHMuc2l6
ZSgpID09IDEpOwogICAgICAgICAgICAgICAgIENIRUNLKHBhcmFtcy5yZXBzWzBdLmlzR1BSKCkp
OwogICAgICAgICAgICAgICAgIGppdC5tb3ZlKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEp
LCBwYXJhbXMucmVwc1swXS5ncHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
YWlyL0FpckdlbmVyYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvYWlyL0FpckdlbmVyYXRlLmNwcAkocmV2aXNpb24gMTkyODA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL2Fpci9BaXJHZW5lcmF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDcgQEAKICNpbmNsdWRlICJCM0luZGV4TWFwLmgiCiAjaW5jbHVkZSAiQjNUaW1pbmdTY29w
ZS5oIgogI2luY2x1ZGUgIkNDYWxsSGVscGVycy5oIgorI2luY2x1ZGUgIkRpc2FsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsg
bmFtZXNwYWNlIEFpciB7CiAKQEAgLTExMiw2ICsxMTMsOCBAQCB2b2lkIGdlbmVyYXRlKENvZGUm
IGNvZGUsIENDYWxsSGVscGVycyYgCiB7CiAgICAgVGltaW5nU2NvcGUgdGltaW5nU2NvcGUoIkFp
cjo6Z2VuZXJhdGUiKTsKIAorICAgIERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBk
aXNhbGxvd1NjcmF0Y2goaml0KTsKKwogICAgIC8vIEFuZCBub3csIHdlIGdlbmVyYXRlIGNvZGUu
CiAgICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7CiAgICAgaml0LmFkZFB0cihDQ2FsbEhl
bHBlcnM6OlRydXN0ZWRJbW0zMigtY29kZS5mcmFtZVNpemUoKSksIE1hY3JvQXNzZW1ibGVyOjpz
dGFja1BvaW50ZXJSZWdpc3Rlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQ
UkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8u
aAkocmV2aXNpb24gMTkyODA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5OSw3ICszOTksNiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwogICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgdGFnVHlwZU51bWJlclJlZ2lzdGVyID0gWDg2UmVnaXN0ZXJz
OjpyMTQ7CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyB0YWdNYXNrUmVnaXN0ZXIgPSBYODZSZWdp
c3RlcnM6OnIxNTsKLSAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHNjcmF0Y2hSZWdpc3RlciA9IE1h
Y3JvQXNzZW1ibGVyOjpzY3JhdGNoUmVnaXN0ZXI7CiAKICAgICAvLyBUZW1wb3JhcnkgcmVnaXN0
ZXJzLgogICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBYODZSZWdpc3RlcnM6OmVheDsK
QEAgLTQ1NCw3ICs0NTMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1
cm5WYWx1ZUdQUjIgPSBYODZSZWdpc3RlcnM6OmVkeDsgLy8gcmVnVDEgb3IgcmVnVDIKICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IFg4NlJlZ2lzdGVy
czo6cjEwOyAvLyByZWdUNSAocmVnVDQgb24gV2luZG93cykKICAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSID0gWDg2UmVnaXN0ZXJzOjpyMTA7IC8vIHJl
Z1Q1IChyZWdUNCBvbiBXaW5kb3dzKQotICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcGF0Y2hwb2lu
dFNjcmF0Y2hSZWdpc3RlciA9IE1hY3JvQXNzZW1ibGVyOjpzY3JhdGNoUmVnaXN0ZXI7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBwYXRjaHBvaW50U2NyYXRjaFJlZ2lzdGVyID0gTWFjcm9Bc3Nl
bWJsZXI6OnNfc2NyYXRjaFJlZ2lzdGVyOwogCiAgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVy
KHVuc2lnbmVkIGluZGV4KQogICAgIHsKQEAgLTUwNiw3ICs1MDUsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8R1BSUmVnLCAzPiYgcmVzZXJ2ZWRSZWdpc3RlcnMoKQog
ICAgIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8R1BSUmVnLCAzPiByZXNlcnZl
ZFJlZ2lzdGVycyB7IHsKLSAgICAgICAgICAgIHNjcmF0Y2hSZWdpc3RlciwKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpzX3NjcmF0Y2hSZWdpc3RlciwKICAgICAgICAgICAgIHRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwKICAgICAgICAgICAgIHRhZ01hc2tSZWdpc3RlciwKICAgICAgICAgfSB9
Owo=
</data>
<flag name="review"
          id="291270"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>